ACL2020 | 线上搜索结果大幅提升!亚马逊提出对抗式query-doc相关性模型

一只小狐狸带你解锁 炼丹术&NLP 秘籍

作者:机智的叉烧(OPPO算法工程师,擅长Query理解方向)

背景

搜索和推荐经常会被放在一起对比,其中最突出的区别就是搜索中存在query,需要充分考虑召回内容和query之间的相关性,而如果内容是搜索广告,则对内容有更高的要求,相关性过低的内容被展示会让用户有很差的体验。

相关性在一定程度上可以被抽象成doc和query之间的语义相似度问题,其实当前语义相似度的研究已经非常成熟,在sigir2018中有人曾经对搜索和推荐中的深度学习匹配进行了非常全面的综述:Deep Learning for Matching in Search and Recommendation[1]。在语义匹配上,大家的关注点经常在于如何去定义“匹配”上,尤其是分析如何将两者的编码内容更好地匹配起来。

常见的其实就是两个思路:

  • 前者是重表示学习,也就是我们常说的“endocer”,然后通过简单的方法计算他们的相似度(如余弦相似度)。最具有代表性的应该是DSSM[2]等双塔模型了。

  • 后者则重相似度计算,encode之后,通过句子之间的交互关系计算相似度,达成目标。常用的交互计算就是两个句子token间相互attention的过程,当然也有一些两者一起进入encoder共同计算的方法,比如BERT中的Text_a+Text_b的训练方式,就是同时进行句内和句间的表示计算。

虽然语义相似度问题已经有很多解决办法了,然而事实上,在应用过程中,相关性和相似度还是有着很大的差距,因为搜索内容的细微变化会带来较大的语义意图变化。比如用户想买“手机充电器”,但结果出了“手机壳”。虽然两者有一定的相似度,但明显是不相关的。

回过头来谈搜索广告,搜索广告是搜索中商(zhuan)业(qian)化的一环,希望的是能给到用户尽可能接触的东西尽可能相关,本来广告点的人就少,还无关就更凉凉了。

不慌,今天就介绍一个最新方法,来自亚马逊ACL20的《Learning Robust Models for e-Commerce Product Search[3],文章主要用在商品搜索的场景下,目的是判断query和item/doc之间的相关性。文中提出了一个与“对抗生成网络”类似结构的模型[4],其中的判别器能够衡量query和doc之间的相关性,判断两者是否相关,生成器则能够生成与query相似却不相关的doc,借助类似对抗生成网络模式的训练,能够在较多噪音数据下,仍尽可能保证模型的鲁棒性。

模型

问题定义

为了更好的对模型进行描述,对问题进行定义,对一个匹配对,其中文档内容和对应的query 表示两者的匹配情况,表示两者不匹配而表示两者匹配,而在建模过程中,会产生一个,当时会有

模型架构

想要学东西,看论文肯定不能错过模型部分了。

模型主要分为3大部分:
  • LSTM-attention为基础的分类模型(蓝色虚线框)

  • 变分编码-解码生成器(a variational encoder-decoder query generator,VED)(红色虚线框)

  • 状态融合器(橙色实心矩形)

分类器

上面提到,分类器是一个LSTM-attention模式的模型。它的模式是基于(Rocktaschel et al., 2015)[5]产生的,作者认为搜索场景的语句格式和常规的自然语言会存在差异。首先query和对应的物品title,在语法结构上会存在不同,query一般较短,而title的描述则更多的是关键词的堆砌。广告场景下的query和title,更可能是一个多对一的情况,比如“红色跑鞋 耐克”和“红色 耐克运动鞋”都对应着同一个商品;另外,query中存在的对属性的描述,如品牌颜色等(电商场景),这些属性会在长句中出现,因此需要具有一定记忆性的模型。综上,作者对query和物品的标题title分别进行了不同的词向量训练,最终合并然后计算。

底层的输入本就有两块,一块是titie,另一块是query,两者分别通过自己训练的word2vector进行编码,然后如图所示地进入各自的LSTM,其中还能看到的是query的LSTM其实还用了title LSTM的末端信息信息,随后,进入了一个additive attention,其实是一种比较常规的attention方法(Bahdanau et al., 2014)[6],此后,就进入三层全连接,最终完成了匹配度的计算。

值得注意的是里面attention的使用,作者虽然使用的是additive attention,但是还提出了一个改进,这个改进把attention本来不包含上下文信息的模式升级为考虑了上一期信息的模式,来看看他具体是怎么做的:

为LSTM的输出维数,是title和query分别经过各自LSTM的输出矩阵。

要理解attention,首先要弄明白的是attention的对象和依据,显然,构造的时候,我们针对的是query中LSTM输出后每一个节点进行计算的,因此公式表示的意思是,对于query中的每个词,分别对title的表示进行attention并得到分数,另外计算时引入了,目的是加入t-1步之前模型主要focus的信息。

当然了,attention只是一种对信息的调整,最终还要考虑原来的信息,汇总出去,于是有:

其中是query经过LSTM后的最终输出。得到的就是query这一次送入全连接层之前的形态。

细心的我们可以发现,除了我们计算得到的,还多考虑了,作者给出的解释是提升分类的效果,具体的体现就在于前面所提到的query和item之间的“多对一”的关系,attention中考虑了query中每个位置和title整体的关系后计算得到,而这个通过参数的训练,其实能够表示一整批与title相关的query,具有统一的表达能力,此时则能够体现这个所谓“统一的表达”与特定query之间的差距。

最后,当然就是损失函数了:

其中是一个调整正样本权重的超参数,在本文中会更看重正样本(不匹配的),因此有

文本生成器

搜索引擎下正样本(不匹配)很简单,但是要找到与对应title不匹配,但是和对应query比较相似的文本,也就是我们所说的“对抗样本”,真的不容易,我们希望的是找到对抗样本协助训练,从而提升模型的鲁棒性。

文章里作者使用的是VED——变分编码解码器,我们希望的是,输入,能够生成一个,这个与不匹配,但是与非常接近(其实某种程度上可以理解为我们要去挖掘相似度分类的“决策边界”)。作者本身对VED没有很多的改进,而是直接沿用(Bahuleyan et al., 2017)[7]的操作,具体的格式就变得很简单:


生成器和query的联动

由于内部其实涉及了两个任务:分类和生成,要使这两者总体端到端化,有必要涉及一个统一的损失函数,权衡两者使两者尽可能同时达到最优。

回过头来重新看看整个模型架构,尤其是橙色部分:

这里的分别是query和生成的query分别通过query LSTM后产生的结果,是一个满足概率为的伯努利分布。

展开来看看这个公式其中的原理,首先,如果query本身就和title不相似,也就是,则整个公式下其实就只使用了原始query,相反,如果,则完全使用生成的query。而为了产生一定的噪音,引入了一个随机数

损失函数设计与训练

双重任务——分类和生成,那就要谨慎考虑两者的联合学习了,为此作者设计出了这么一个公式:

仔细看看这个公式是不是和上面公式(3)有些类似?说白了,只有当query和titile非常相似的时候(负例),才会更多的考虑生成器生成的query与title之间的相关性。但是其实我们可以发现,上面这个损失函数,无论是看query还是生成的query,都只是在分析他们与doc的不相似性,换言之都是再考虑“正样本”,而没有负样本,实际上他们是怎么做的呢?来看看他们的训练流程。

在训练过程中,首先要做的是对分类器进行第一轮训练,然后用分类器划分出相似和不相似的query,然后用这块数据训练出第一版本的VED,在此基础上,再用公式(4)作为损失去做调整,最终得到需要的模型,尤其是这个分类模型。

实验与效果

有了基本的模型以及一定的理论基础,当然就要开始实操这块的内容了。作者是针对电商搜索来进行的设计,当然就要用电商的数据进行实验,实验数据量将达到了320万对,其中只有少量是不匹配的,这里面的“匹配”是指query查询后频繁购买的那些商品的title。

模型效果

以gbdt为基线(说实话这里其实并不太同意用gbdt来做基线,我的视角看语义相似度他并非主流,dssm才是比较出名的基线),可以看到还是有比较明显的提升,从这里看,作者的模型效果甚至要高于著名的bert,哪怕是只有分类器,在加上生成器进行协助训练后,效果得到了进一步的提升。

不仅离线评估效果喜人,QUARTS在线上也获得了很好的表现,经过在两个国家的A/B测试后,相比当前的基线分别提升了12.2%和5.75%

生成器效果

生成器的效果,根据作者分析现实准确率能达到82%,算是一个不错的水平吧,来看一些case:

可以看到,如作者预期,query和生成的query具有较高的相似性的同时,也能够满足与对应title之间的关系。

结论与展望

读完这篇文章后,我们需要做的,当然就是吸收这篇文章提到和提出的一些建模的trick:

  • 在进行语义相似度时,query和title的embedding可以通过设置两个来表达不同的语义句式。

  • attention中引入上一期的信息。

  • 在进行语义相似度时,attention对query进行处理,可以加入title的所有信息辅助生成。

  • (核心)变分编码产生正样本对原模型进行微调。

这里面让我感到比较惊喜的是,bert被干趴下了,而且输得挺多的,不过这主要是因为BERT是在DSSM基础上进行的改进,其实可以尝试把本文模型下训练的title embedding和query embedding都换成bert,估计会有新的提升(但模型估计会蹭蹭蹭的变大)。那么我下面给一些可以尽可能提升的思路吧(快记着,下一篇顶会就是你的了)

另外,我还想提的一个点是,在bert被干趴下的同时,这个模型除了LSTM之外本身没有复杂度很高的操作,耗时预计就在10ms左右。

  • 中文是否有这个效果?

  • 搜索的query大都是短句,现在看来效果还是不错的,但是从上面生成器的效果来看,还是出现一些语义类似但是文本匹配低的情况,是否可以加入文本匹配的信息协助保证文本层面的匹配度(如BM25)。

  • 相似度的衡量目前比较粗暴,直接用的全连接,是否有必要升级为余弦、矩阵相似度?

  • 尝试训练一个title embedding和query embedding都换成bert的模型,然后用本文的模型来做蒸馏,估计还会有提升。

本文收录于原创专辑:《卖萌屋@自然语言处理》

重磅惊喜:卖萌屋小可爱们苦心经营的 自然语言处理讨论群 成立三群啦!扫描下方二维码,后台回复「」即可加入。众多顶会审稿人、大厂研究员、知乎大V以及美丽小姐姐等你来撩噢~(手慢无

夕小瑶的卖萌屋

_

关注&星标小夕,带你解锁AI秘籍

订阅号主页下方「撩一下」有惊喜哦

参考文献

[1] SIGIR2018的报告,有关这个领域的语义匹配模型都有谈到: http://staff.ustc.edu.cn/~hexn/papers/sigir18-tutorial-deep-matching.pdf
[2]Learning deep structured semantic models for web search using clickthrough data: https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/cikm2013_DSSM_fullversion.pdf

[3] Learning Robust Models for e-Commerce Product Search: https://arxiv.org/abs/2005.03624
[4] Adventure: Adversarial training for textual entailment with knowledge-guided examples: https://arxiv.org/abs/1805.04680
[5] Reasoning about entailment with neural attention: https://arxiv.org/pdf/1509.06664.pdf
[6] Neural machine translation by jointly learning to align and translate.: https://arxiv.org/abs/1409.0473
[7] Variational attention for sequence-to-sequence models.: https://cs.uwaterloo.ca/~ppoupart/publications/conversational-agents/variational-attention-sequence.pdf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/480460.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微型计算机性能指标以及分类

衡量微型计算机的主要技术指标是?特点是? 2018-11-29 20:38:08 来源:贤集网 赵媛 微型计算机大家应该耳熟能详,它又比称为“微型机”,由于其具备人脑的某些功能,所以也称其为“微电脑”。现在流行的微…

领域应用 | 为电商而生的知识图谱,如何感应用户需求?

本文转载自公众号:阿里技术(ali_tech)。 阿里妹导读:本文从需求分析和体系化构建的角度出发,阐述在电商这一特殊领域的知识图谱构建过程中,形成的一整套概念体系,还有在此过程中,通过算法、工程、产品、…

史上最全阿里Java面试题目大汇总!强烈建议收藏~

阿里面试题目目录 技术一面(基础面试题目) 技术二面(技术深度、技术原理) 项目实战(项目模拟面试) JAVA开发技术常问的问题 阿里必会知识 阿里面试范畴 阿里面试总结 一:阿里技术一面&…

数据结构与算---重点复习知识

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/sakurakider/article/details/82924371 </div><link rel"stylesheet" href"https://csdnimg.cn/release/phoeni…

GPT-3诞生,Finetune也不再必要了,NLP领域又一核弹

本文转载自公众号“夕小瑶的卖萌屋”&#xff0c;专业带逛互联网算法圈的神操作 -----》我是传送门 关注后&#xff0c;回复以下口令&#xff1a; 回复【789】 &#xff1a;领取深度学习全栈手册&#xff08;含NLP、CV海量综述、必刷论文解读&#xff09; 回复【入群】&…

POJ 1363 火车厢排队问题(栈)

题目链接&#xff1a;http://poj.org/problem?id1363 题目大意&#xff1a; A站有编号为1到N&#xff0c;N最大1000&#xff0c;的车厢&#xff0c;车厢进入中转station了就不能回到A&#xff0c;只能停在station内或者进入B站&#xff0c;问能不能按照给定的顺序排成那样的车…

徐阿衡 | 知识抽取-实体及关系抽取(一)

本文转载自公众号&#xff1a;徐阿衡。 这一篇是关于知识抽取&#xff0c;整理并补充了上学时的两篇笔记 NLP笔记 - Information Extraction 和 NLP笔记 - Relation Extraction&#xff0c;梳理了知识抽取的基本方法&#xff0c;包括传统机器学习及经典的深度学习方法。知识抽取…

非常全面的阿里的Java面试题目,涵盖Java基础+高级+架构

阿里技术一面 自我介绍 Java中多态是怎么实现的 Java中的几种锁 数据库隔离级别 脏读 幻读 ACID mysql的隔离级别 mysql索引实现&#xff0c;如何解决慢查询 数据库锁是怎么实现的 死锁的条件&#xff0c;进程和线程区别 tcp/ip模型&#xff0c;tcp和udp区别 Linux查看…

常见数据结构与算法整理总结(上)

原文链接&#xff1a;https://www.jianshu.com/p/230e6fde9c75 常见数据结构与算法整理总结&#xff08;上&#xff09; 最后编辑于 2017.12.04 03:29">2016.09.22 10:51*</span>数据结构是以某种形式将数据组织在一起的集合&#xff0c;它不仅存储数据&#xff…

卖萌屋原创专辑首发,算法镇魂三部曲!

一只小狐狸带你解锁炼丹术&NLP秘籍震惊&#xff01;乐坛新人夕小瑶的卖萌屋今日重磅发布三张原创专辑&#xff01;&#xff01;????点击试听????点击试听????点击试听虽然卖萌屋常常被大家戏称为“仙女屋”、“神仙屋”、“宝藏屋”等&#xff0c;但卖萌屋更希…

POJ 1028 浏览器前进后退(双栈)

题目链接&#xff1a;http://poj.org/problem?id1028 我的相同博文参考&#xff1a;https://blog.csdn.net/qq_21201267/article/details/88938360 LeetCode 5430. 设计浏览器历史记录&#xff08;双栈&#xff09; 解题思路参考上面博文。直接贴出代码&#xff1a; #inclu…

自然语言处理中的中文词性、标记规范及其应用

分词和词性标注是自然语言处理领域的重要组成部分&#xff0c;尤其对于中文而言&#xff0c;作为整条自然语言处理pipeline的源头&#xff0c;分词和词性标注更是起到了关键的作用。我整理这篇文章&#xff0c;主要来源于这几个问题&#xff1a; 一、理解中文词性是否有意义&am…

白雪 | NLP加持知识图谱在金融事件挖掘中的应用

本文转载自公众号&#xff1a;阡寻科技。9月15日讯&#xff0c;涵盖金融科技、人工智能及区块链领域的2018恒生技术开放日于今日开幕&#xff0c;阡寻科技联席CEO、复旦大学人工智能方向博士白雪受邀出席本次大会&#xff0c;分享了金融领域事件特点分析、常用的事件抽取方法以…

2020年,中国AI创业公司将走向何方

前言如果说2012年深度学习的崛起是点燃AI浪潮的星星之火&#xff0c;那么2016年的AlphaGo的成功则是一阵东风&#xff0c;AI之火已成燎原之势。那么&#xff0c;走向21世纪的新的十年&#xff08;2020年&#xff09;&#xff0c;中国AI创业公司将走向何方呢&#xff1f;作者是一…

常见数据结构与算法整理总结(下)

原文链接&#xff1a;https://www.jianshu.com/p/42f81846c0fb 这篇文章是常见数据结构与算法整理总结的下篇&#xff0c;上一篇主要是对常见的数据结构进行集中总结&#xff0c;这篇主要是总结一些常见的算法相关内容&#xff0c;文章中如有错误&#xff0c;欢迎指出。 一、概…

2019蚂蚁金服 Java面试题目!涵盖现场3面真题

蚂蚁Java一面 二叉搜索树和平衡二叉树有什么关系&#xff0c;强平衡二叉树&#xff08;AVL树&#xff09;和弱平衡二叉树&#xff08;红黑树&#xff09;有什么区别 B树和B树的区别&#xff0c;为什么MySQL要使用B树 HashMap如何解决Hash冲突 epoll和poll的区别&#xff0c;…

数据结构--队列Queue--打印杨辉三角

杨辉三角大家很熟悉&#xff0c;不做介绍了&#xff0c;第n行的首末两元素均为1&#xff0c;中间n-2个元素由n-1行相邻两元素相加得到。 将第1行数据入队&#xff08;1&#xff09; -------队列表示&#xff08;队头&#xff0c;… 队尾&#xff09;------- 第2行数据1入队&am…

论文浅尝 | 基于常识知识图谱感知和图注意力机制的对话生成

OpenKG 祝各位读者中秋快乐!链接&#xff1a;http://coai.cs.tsinghua.edu.cn/hml/media/files/2018_commonsense_ZhouHao_3_TYVQ7Iq.pdf动机在以前的工作中&#xff0c;对话生成的信息源是文本与对话记录。但是这样一来&#xff0c;如果遇到 OOV 的词&#xff0c;模型往往难以…

7款优秀Vim插件帮你打造完美IDE

本文转载自公众号“夕小瑶的卖萌屋”&#xff0c;专业带逛互联网算法圈的神操作 -----》我是传送门 关注后&#xff0c;回复以下口令&#xff1a; 回复【789】 &#xff1a;领取深度学习全栈手册&#xff08;含NLP、CV海量综述、必刷论文解读&#xff09; 回复【入群】&#xf…

POJ 2259 team queue团队排队问题

题目链接&#xff1a; http://poj.org/problem?id2259 题目大意&#xff1a; 告诉你一堆人&#xff08;m个人是一组的&#xff0c;n个人是一组的。。。。&#xff09;&#xff1b;然后一个人来排队了&#xff0c;先看下有自己组的熟人吗&#xff1f;有的话直接排在自己组的人…