知行编程网知行编程网  2022-01-17 18:46 知行编程网 隐藏边栏 |   抢沙发  1 
文章评分 0 次,平均分 0.0
ACL2020 | 线上搜索结果大幅提升!亚马逊提出对抗式query-doc相关性模型
一只小狐狸带你解锁 炼丹术&NLP 秘籍

背景

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

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

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

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

  • 前者是重表示学习,也就是我们常说的“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 ,表示两者的匹配情况,表示两者不匹配而表示两者匹配,而在建模过程中,会产生一个,当时会有。

模型架构

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

ACL2020 | 线上搜索结果大幅提升!亚马逊提出对抗式query-doc相关性模型
模型主要分为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分别进行了不同的词向量训练,最终合并然后计算。

ACL2020 | 线上搜索结果大幅提升!亚马逊提出对抗式query-doc相关性模型
底层的输入本就有两块,一块是titie,另一块是query,两者分别通过自己训练的word2vector进行编码,然后如图所示地进入各自的LSTM,其中还能看到的是query的LSTM其实还用了title LSTM的末端信息信息,随后,进入了一个additive attention,其实是一种比较常规的attention方法(Bahdanau et al., 2014)[6],此后,就进入三层全连接,最终完成了匹配度的计算。

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

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

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

要理解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]的操作,具体的格式就变得很简单:

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

生成器和query的联动

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

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

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

 

 

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

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

损失函数设计与训练

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

 

 

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

ACL2020 | 线上搜索结果大幅提升!亚马逊提出对抗式query-doc相关性模型
在训练过程中,首先要做的是对分类器进行第一轮训练,然后用分类器划分出相似和不相似的query,然后用这块数据训练出第一版本的VED,在此基础上,再用公式(4)作为损失去做调整,最终得到需要的模型,尤其是这个分类模型。

实验与效果

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

模型效果

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

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

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

生成器效果

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

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

可以看到,如作者预期,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的模型,然后用本文的模型来做蒸馏,估计还会有提升。

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享