深度语义模型以及在淘宝搜索中的应用

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
OpenSearch LLM智能问答版免费试用套餐,存储1GB首月+计算资源100CU
简介: 传统的搜索文本相关性模型,如BM25通常计算Query与Doc文本term匹配程度。由于Query与Doc之间的语义gap, 可能存在很多语义相关,但文本并不匹配的情况。为了解决语义匹配问题,出现很多LSA,LDA等语义模型。

传统的搜索文本相关性模型,如BM25通常计算Query与Doc文本term匹配程度。由于Query与Doc之间的语义gap, 可能存在很多语义相关,但文本并不匹配的情况。为了解决语义匹配问题,出现很多LSA,LDA等语义模型。随着深度学习在NLP的应用,在IR和QA(问答系统)中出现了很多深度模型将query和doc通过神经网络embedding,映射到一个稠密空间的向量表示,然后再计算其是否相关,并取得很好的效果。本文调研了微软,IBM Waston实验室、Google等在这方面的一些工作,并介绍我们在淘宝搜索上做的些工作。  

1.DSSM、CDSSM,LSTM-DSSM及相关系列工作

 微软的DSSM及相关系列模型是深度语义模型中比较有影响力的。集团内PS上有DSSM分布式实现,而且也有多业务应用.

DSSM首先将query和doc表示成一个高维且稀疏的BOW向量,向量的维度即词典的大小,每一维表示该term在query或doc中出现的频次;如果向量每一位直接用单词,会出现维度非常高,而且对一些未登录词无法处理。作者做了一个非常有用的trick word-hash: 将每个单词表示成一个letter-tri-gram的序列, 例如:boy切分成#-b-o, b-o-y, o-y-#, 然后再表示成letter-tri-gram向量。把每个单词向量累加起来即表示整段文本的向量。
1

   然后,通过几层全连的网络连接将这个高维稀疏向量压缩成一个稠密低维向量,在这个向量空间内,通过计算query与doc向量的cosin相似度来衡量相关程度。训练的目标是对同一query下取1个点击doc作为正样本, 随机4个未点击doc作为负样本,让正负样本的区分尽可能大:
AI 代码解读

2

由于DSSM对文本embedding时没有考虑term的顺序信息,又陆续提出了采用Convolution和LSTM对文本embedding,可以保留词序信息。其中,Convolution是实现方式通过对query或doc用固定大小滑动窗口取片段,对每个片段内文本用word-hash+dnn压缩, 然后取max-pooling表示整个query或doc向量。
3
      此外, 无论是Convolution还是LSTM对文本embedding, 都涉及到通过词或局部片段的向量生成整个句子的向量,比较简单粗暴的方法是直接取sum、avg或者max等。微软的学者们进一步做了改进,提出利用Attention机制来学习各个词组合成句子向量的权重。以LSTM-DSSM为例,LSTM在每个时间步(term)上输出的隐向量h, 输入给一个attention网络s(h), 输出权重后softmax归一,然后对每个词的隐向量加权平均生成句子向量。s(h)的参数和相关性目标一起来训练。这种Attention机制也比较弱,因为不同的query对同一个doc的“关注”点可能是不一样的, 这种方式只能对doc生成唯一的向量。

   
最近,微软的学者们又提出了一个观点:query与doc的相关程度是由query里的term与doc文本精准的匹配,以及query语义与doc语义匹配程度共同决定。而且,term匹配与term在doc中的位置和紧密度有较大关系。因此,他们用一个local model来表达term匹配程度,distribute model表达语义匹配程度,把这两个子模型放在同一个模型来训练。distribute model类似与DSSM来学习语义匹配关系。Local model的输入是一个nqnd的矩阵mnq是query中term个数,nd是doc中term个数,位置m(i,j)=0or1表示query里的第i个词是否与doc里的第j个词匹配,对这个输入矩阵通过convolution抽取特征并向量化。据其实验结果,这种结合term匹配信息的模型效果要优于DSSM等语义模型。
4

  1. Google相关工作
     Google的学者在用convolution对文本向量化是相比CDSSM做了些改进。Convolution的方法参考了Nal Kalchbrenner等对文本用卷积来做分类的方法。

      首先,对句子中的每个词做embedding, 然后将词的embedding concat起来组合成一个矩阵,有点类似图像的表达。然后,在这个矩阵上通过不同feature map抽取特征,然后pooling生成一个维度的向量来表达句子。 对Query和Doc的语义向量, 再通过一个bilinear的模型计算其语义相似度:sim(xq,xd)=xqMxd。 最终,语义相似度与其它相关排序特征,以及query和doc向量一起作为决定排序的因素,通过pointwise的DNN模型来训练。
5

  1. IBM Waston实验室相关工作
         

      问答系统有很多种类型,其中给定一个Question和候选Answer,从候选Answer中挑选最合适的答案,这个过程与信息检索中的相关性模型非常相似。Waston实验室在InsuranceQA数据集实验了上述类似的模型,并综合CNN和LSTM的优势,提出了几种有意思的混合模型:
    
    AI 代码解读

      (1) Convolutional-pooling LSTM
用一个Bi-LSTM作为word embedding的方法,然后word embedding concat成矩阵表达句子,用卷积来抽取组合特征作为question和anwser的向量表达,再计算cosin loss.
6

(2)Convolution-based LSTM
先对原始文本用卷积捕捉局部的N-gram信息, 然后在这个基础上用Bi-LSTM来学习更大范围的上下文依赖关系。
7

   (3) Attentive-LSTM
相比LSTM-DSSM, 在Attention机制上做了些改进,与NMT的Attention机制接近,即:通过Answer中的词向量加权平均生成整个Answer的向量时,每个词的权重是由Question向量和词向量来决定的。Question的表达仍由其所有词向量的avg或sum,max来表示。
8

  1. 其它相关工作
          上述工作主要集中在如何更好生成Query和Doc向量表达,如何设计两个向量comparision function以计算相似度也有很多种方法。Shuohang Wang总结了6种方法:NN, NTN, EUCCOS, SUB, MULT ,SUBMULT+NN。分别对query和doc向量计算乘、减、欧式距离、cosin、bilinear、concat,以及这几种计算的组合。

9

 另外在机器阅读理解也有很多类似工作,本文就不展开描述了。下面介绍下我们的相关工作。
AI 代码解读
  1. 我们的工作
    我们对淘宝搜索做了大量的语义改写后,matching不仅局限于term的匹配了,下面分别从数据和模型介绍下我们的工作。

      5.1 深度模型通常大量的训练数据,而对商品搜索相关性这个问题,获取大量高质量训练数据并不容易。网页搜索通常直接采用点击数据作为是否相关的label,在商品搜索上不是很有效:用户点击行为与价格、图片、个性化偏好等很多因素相关,仅依赖点击数据对相关性样本有太多噪声; 而采用人工标注数据,准确率相对较高,但受时效性、成本等因素限制较大。最近学术界也逐渐意识到这个问题,提出BM25等无监督模型生成大量样本。我们获取训练数据的方式有:

         (1) 对行为数据采样,并用一些类似图像Data Augmentation的手段获取大量(亿级别)准确率相对较低的训练数据,先用这些数据training一个较好的模型;这些方法包括:

        a. query下取CTR正常的商品作为正样本, CTR低于平均值较多的商品作为负样本
        b. query能召回的类目下随机采样商品作为负样本
        c. 对query中的term做一些变换,用变换后的query下点击商品作为原始query的负样本, 例如“红色长袖连衣裙”变换成“蓝色短袖连衣裙”, 而“蓝色短袖连衣裙”下点击商品可以作为“红色长袖连衣裙”下的负样本;

    (2) 通过改写模型来为相关性模型生成大量样本,后续可以专门文章介绍这部分;
AI 代码解读

        (3) 采用数量相对少(100w)、准确率高的人工标注数据fine-tuning用上述两种方法pre_training好的模型。

  5.2 模型设计主要考虑的几个因素:

         (1) 淘宝上Query和商品标题存在大量长尾词,尤其大量数字和英文组合的货号、型号、容量等,分词无法穷尽。仅通过词来对query和标题embedding会损失很多信息,需要考虑字符维度。

         (2) 商品除了标题外了,还有图片、类目、属性等信息可以利用。

         (3) 工程实现线上计算要轻量,两个向量的compare function要控制计算复杂度。

   我们现在采用的模型如下:
10

         (1)  对Query和标题向量我们采用DNN + Char-LSTM组合的方式:DNN能高效地学到TOP词的embedding, Char-LSTM能捕获到较长尾的字符组合。引入Char-LSTM后模型比较难训练,我们使用query和标题文本语料pretraining LSTM-AutoEncoder, 获得比较好的初始参数;同时TOP词的embedding采用word2vec初始化,模型能更快收敛。

         (2) 在商品标题的embedding上增加了一个类目预测的辅助task, 使得不同类目的商品在向量空间内有更好的区分度,对模型效果和收敛速度都有比较好的提升。

         (3) online ranking对latency要求比较高,除了工程优化外,模型上也有优化空间。在我们数据上实验发现compare function中全连层的深度和宽度对模型影响比较大。全连层宽一些效果会比较好,但计算量增加会很大;借鉴ResNet全连层设置窄一些,并加深模型,可以保证效果同时较大减少计算量。

我们抽样部分query抓取线上排序结果, 与该模型排序后TOP30人工评测GOOD比例提升1.31%。

5.3 后续计划
      商品除了标题和类目,图片也是很重要的信息来源,后续加入图片信息,同时也在尝试用query和商品向量做召回,实现multi-modal检索。

      另外,Attention机制也是一个被证明重要的提升点。受限于线上ranking latency的要求,不可能对每个商品标题根据query来计算其"关注"的部分,但可以引入一些self-attention的方法来生成更好的标题向量。

参考文献:

[1] Shen, Y., He, X., Gao, J., Deng, L., & Mesnil, G. (2014). A Latent Semantic Model with Convolutional-Pooling Structure for Information Retrieval (pp. 101–110). Presented at the the 23rd ACM International Conference, New York, New York, USA: ACM Press. http://doi.org/10.1145/2661829.2661935

[2] Services, E. U. C. (2014). Learning Deep Structured Semantic Models for Web Search using Clickthrough Data, 1–8.

[3] Deep Sentence Embedding Using Long Short-Term Memory Networks: Analysis and Application to Information Retrieval. (2016). Deep Sentence Embedding Using Long Short-Term Memory Networks: Analysis and Application to Information Retrieval, 1–25.

[4] Zhai, S., Chang, K.-H., Zhang, R., & Zhang, Z. M. (2016). DeepIntent: Learning Attentions for Online Advertising with Recurrent Neural Networks

(pp. 1295–1304). Presented at the the 22nd ACM SIGKDD International Conference, New York, New York, USA: ACM Press. http://doi.org/10.1145/2939672.2939759

[5] Mitra, B., Diaz, F., & Craswell, N. (2016). Learning to Match Using Local and Distributed Representations of Text for Web Search, 1–9.

[6] Improved Representation Learning for Question Answer Matching. (2016). Improved Representation Learning for Question Answer Matching, 1–10.

[7] Feng, M., Xiang, B., Glass, M. R., Wang, L., & Zhou, B. (2015). APPLYING DEEP LEARNING TO ANSWER SELECTION: A STUDY AND AN OPEN TASK , 1–8.

[8] Severyn, A., & Moschitti, A. (2015). Learning to Rank Short Text Pairs with Convolutional Deep Neural Networks (pp. 373–382). Presented at the the 38th International ACM SIGIR Conference, New York, New York, USA: ACM Press.

[9] Kalchbrenner, N., Grefenstette, E., & Blunsom, P. (2014). A Convolutional Neural Network for Modelling Sentences

[10] Wang, S., & Jiang, J. (2017). A COMPARE-AGGREGATE MODEL FOR MATCHING TEXT SEQUENCES, 1–11.

[11] Lin, Z., Feng, M., Santos, dos, C. N., Yu, M., Xiang, B., Zhou, B., & Bengio, Y. (2017). A STRUCTURED SELF-ATTENTIVE SENTENCE EMBEDDING, 1–15.

runxiao
+关注
目录
打赏
0
0
0
2
170
分享
相关文章
如何保证分布式文件系统的数据一致性
分布式文件系统需要向上层应用提供透明的客户端缓存,从而缓解网络延时现象,更好地支持客户端性能水平扩展,同时也降低对文件服务器的访问压力。当考虑客户端缓存的时候,由于在客户端上引入了多个本地数据副本(Replica),就相应地需要提供客户端对数据访问的全局数据一致性。
31853 78
如何保证分布式文件系统的数据一致性
HTML5+CSS3前端入门教程---从0开始通过一个商城实例手把手教你学习PC端和移动端页面开发第8章FlexBox布局(上)
HTML5+CSS3前端入门教程---从0开始通过一个商城实例手把手教你学习PC端和移动端页面开发第8章FlexBox布局
17655 18
灵骏可预期网络:Built for AI Infrastructure
通用人工智能离我们越来越近,全世界的关注和投入正在带来日新“周”异的变化。回顾人工智能的诞生和发展历程,人类计算能力的进步几乎牵动了每一次的重大技术突破,当前的大模型热潮更是如此,只是动辄千万亿参数级的模型体量,所需计算资源远超单颗芯片的上限,超大规模的计算集群成为支撑技术发展和应用创新的关键基础设施。面向智能:云基础设施网络技术面临新挑战如何突破单个芯片、单个服务器节点的算力上限,在超大规模情况
31193 10
灵骏可预期网络:Built for AI Infrastructure
设计模式(C++版)
看懂UML类图和时序图30分钟学会UML类图设计原则单一职责原则定义:单一职责原则,所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责。而单一职责原则就是指一个类或者模块应该有且只有一个改变的原因。bad case:IPhone类承担了协议管理(Dial、HangUp)、数据传送(Chat)。good case:里式替换原则定义:里氏代换原则(Liskov 
36193 19
设计模式(C++版)
带你简单了解Chatgpt背后的秘密:大语言模型所需要条件(数据算法算力)以及其当前阶段的缺点局限性
带你简单了解Chatgpt背后的秘密:大语言模型所需要条件(数据算法算力)以及其当前阶段的缺点局限性
24468 14
重生之---我测阿里云U1实例(通用算力型)
阿里云产品全线降价的一力作,2023年4月阿里云推出新款通用算力型ECS云服务器Universal实例,该款服务器的真实表现如何?让我先测为敬!
36515 15
重生之---我测阿里云U1实例(通用算力型)
为笔记本更换固态硬盘的方法
本文介绍为笔记本电脑拆机、更换固态硬盘的具体方法~
18011 41
为笔记本更换固态硬盘的方法
Redis性能高30%,阿里云倚天ECS性能摸底和迁移实践
Redis在倚天ECS环境下与同规格的基于 x86 的 ECS 实例相比,Redis 部署在基于 Yitian 710 的 ECS 上可获得高达 30% 的吞吐量优势。成本方面基于倚天710的G8y实例售价比G7实例低23%,总性价比提高50%;按照相同算法,相对G8a,性价比为1.4倍左右。
【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的限流器RateLimiter功能服务
随着互联网的快速发展,越来越多的应用程序需要处理大量的请求。如果没有限制,这些请求可能会导致应用程序崩溃或变得不可用。因此,限流器是一种非常重要的技术,可以帮助应用程序控制请求的数量和速率,以保持稳定和可靠的运行。
29747 52
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问