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 来源:贤集网 赵媛 微型计算机大家应该耳熟能详,它又比称为“微型机”,由于其具备人脑的某些功能,所以也称其为“微电脑”。现在流行的微…

数据结构--队列Queue--循环顺序队列

针对顺序队列中的入队操作:if 队列没满,但是队尾到达数组末尾了,队列"满"了,其实没有满,数据需要整体移至数组头部,才可以继续入队。 为解决该问题,避免数据的挪移,有了循…

基于因果逻辑库的定性事件结果及结果方向性预测

EventPredictBasedOnEG future event predict demo based on causal event graph that covers the full industries that can predict the benefits or bad effects in accordance with the event given by the user, 基于因果逻辑库的定性事件及方向性预测 项目介绍 基于海…

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

本文转载自公众号:阿里技术(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;问能不能按照给定的顺序排成那样的车…

基于线上问答社区的逻辑性知识自动问答接口ZhidaoChatbot

ZhidaoChatbot ZhidaoChatbot, a chatbot that can be an expert on the common questions like why,how,when,who,what based on the online question-answer website&#xff0c;基于线上公开问答数据的知道类问答机器人demo&#xff0c;与检索方式不同&#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;…

事件抽取与事理图谱的N个问题

1、事件是分为两个层次的&#xff0c;底层是抽象层&#xff0c;上层是实例层。底层是对一类事件的抽象归类和形式化表征&#xff0c;这种抽象和形式化表征将时间和空间两个维度的信息进行剔除&#xff1b;实例层是对抽象事件的一种信息的补充和肉体化&#xff0c;其中的信息包括…