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

本文涉及的产品
智能开放搜索 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作为负样本,让正负样本的区分尽可能大:

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的输入是一个$n_q*n_d$的矩阵$m$,$n_q$是query中term个数,$n_d$是doc中term个数,位置$m(i,j)=0 or 1$表示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(x_q,x_d) = x_q * M * x_d$。 最终,语义相似度与其它相关排序特征,以及query和doc向量一起作为决定排序的因素,通过pointwise的DNN模型来训练。
5

  1. IBM Waston实验室相关工作
         

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

      (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

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

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

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

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

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

        (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.

目录
相关文章
|
机器学习/深度学习 自然语言处理 并行计算
淘宝搜索中的深度语义模型:从理论到实践
淘宝搜索系统通过引入深度语义模型,极大地提升了搜索质量和用户体验。这些模型不仅能够准确理解用户的需求,还能够智能地匹配和推荐商品,为用户提供了一个更加便捷、个性化的购物环境。随着技术的不断发展和完善,淘宝搜索将会变得更加智能和高效。
|
Web App开发 Java 视频直播
FFmpeg开发笔记(四十九)助您在毕业设计中脱颖而出的几个流行APP
对于软件、计算机等专业的毕业生,毕业设计需实现实用软件或APP。新颖的设计应结合最新技术,如5G时代的音视频技术。示例包括: 1. **短视频分享APP**: 集成FFmpeg实现视频剪辑功能,如添加字幕、转场特效等。 2. **电商购物APP**: 具备直播带货功能,使用RTMP/SRT协议支持流畅直播体验。 3. **同城生活APP**: 引入WebRTC技术实现可信的视频通话功能。这些应用不仅实用,还能展示开发者紧跟技术潮流的能力。
182 4
FFmpeg开发笔记(四十九)助您在毕业设计中脱颖而出的几个流行APP
|
存储 芯片
Rockchip 自定义vendorstorages数据再u-boot通过cmdline给kernel传递数据
Rockchip 自定义vendorstorages数据再u-boot通过cmdline给kernel传递数据
951 1
|
SQL Java 应用服务中间件
【Spring】AOP实现公共字段填充
【Spring】AOP实现公共字段填充
258 0
|
SQL 关系型数据库 MySQL
使用 RDS for MySQL 配置到自建数据库的主从复制
场景 出于数据容灾、ETL、异地数据访问等目的,可能需要基于 RDS for MySQL 实例,搭建到自己线下MySQL实例的主从复制。这篇文章将给出简单的操作步骤,供大家参考。由于要使用GTID特性,因此要求MySQL版本>=5.6. 前提条件 操作步骤 配置主实例 登录 RDS 控制台
24017 0
|
算法 搜索推荐
信息流短视频时长多目标优化
背景       信息流短视频排序目前使用的是基于CTR预估Wide&Deep排序模型。在此基础上继续一系列优化,通过引入相关性信号、体感信号、多场景的样本融合、高层排序模型取得了不错收益。       信息流短视频模型优化可分为两部分优化: 感知相关性优化——点击模型以优化(CTR/CLICK为
8124 0
|
机器学习/深度学习 存储 开发框架
推荐系统[八]算法实践总结V1:淘宝逛逛and阿里飞猪个性化推荐:召回算法实践总结【冷启动召回、复购召回、用户行为召回等算法实战】
推荐系统[八]算法实践总结V1:淘宝逛逛and阿里飞猪个性化推荐:召回算法实践总结【冷启动召回、复购召回、用户行为召回等算法实战】
推荐系统[八]算法实践总结V1:淘宝逛逛and阿里飞猪个性化推荐:召回算法实践总结【冷启动召回、复购召回、用户行为召回等算法实战】
|
数据采集 安全 数据处理
CPCI(CompactPCI)简介
CPCI(CompactPCI)简介
3727 0
CPCI(CompactPCI)简介
|
并行计算 PyTorch Linux
pytorch安装GPU版本 (Cuda12.1)教程: Windows、Mac和Linux系统快速安装指南
pytorch安装GPU版本 (Cuda12.1)教程: Windows、Mac和Linux系统快速安装指南
5168 0
|
机器学习/深度学习 搜索推荐 算法
推荐系统[八]算法实践总结V0:腾讯音乐全民K歌推荐系统架构及粗排设计
推荐系统[八]算法实践总结V0:腾讯音乐全民K歌推荐系统架构及粗排设计
推荐系统[八]算法实践总结V0:腾讯音乐全民K歌推荐系统架构及粗排设计