[搜索引擎] DSSM模型及其变种

1. 简介

  • DSSM(Deep Structured Semantic Models)模型由微软于2013年提出,是深度语义匹配模型的鼻祖。DSSM模型将Query和Doc分别映射到一个低维语义空间,通过cosine相似度衡量Query,Doc的相关性。DSSM模型提出用于检索排序任务。DSSM模型在搜索、推荐、广告中有着广泛的应用,是一种广泛使用的双塔模型结构。

2. 模型结构

  • DSSM模型结构如下,Query和Doc首先通过词袋模型表示成一个Term Vector之后通过Word Hashing方法变成一个低维向量。然后通过3层DNN层输出层使用softmax激活函数。


    DSSM模型结构.png

2.1 Word Hashing方法

  • 当词汇表非常大的时候,使用word level词袋模型表示一个文档的向量维度非常高,导致模型参数数量很多不容易学习。为了降低文档embeding表示引入了word hashing方法,此方法将每个词用字符ngram表示,举例如下:
  • 例如:单词good
  • letter trigrams表示为:#go, goo, ood, od#
  • word hashing方法主要的问题是,冲突问题:即两个不同的词可能有相同的letter trigrams表示;但是整体来看冲突数量并不多,使用word hashing方法能够大幅度降低文档向量的长度。
冲突数量统计.png

2.2 DSSM学习及损失函数

  • 在得到Query, Doc低维空间表示向量后,后验概率的计算公式如下:其中为softmax函数的平滑因子。
  • 对于每一个正样本对,都会召回个负样本,最终对于单个样本DSSM的损失函数如下:其中表示整个文档集合,但是负样本一般进行采样,所以一般只包括正样本和所有的负样本。
    \begin{align} L(\theta) &= -logP(D^+|Q) \\ &= -log \frac{exp(\gamma R(Q,D^+))}{\sum_{D' \in \mathbb{D}} exp(\gamma R(Q, D')) } \\ &= log \frac{\sum_{D' \in \mathbb{D}} exp(\gamma R(Q, D')) }{exp(\gamma R(Q,D^+))} \\ &= log \left( 1 + \sum_{j} exp \left( -\gamma (R(Q,D^+) - R(Q,D^-) \right) \right) \end{align}

3. DSSM模型变种

3.1 CLSM模型

  • CLSM在DSSM结构基础上进行改进,将全连接层换成了CNN;CLSM使用的损失函数和DSSM一致,并且其指出:DSSM模型的损失函数其实是learning to rank(LTR)中pairwise loss的特征,当负样本只有一个的时候其就是pairwise损失函数。想比pairse loss其使用起来更加灵活,使得我们可以尝试使用不同的负样本采样策略。
CLSM模型结构.png

DSSM损失函数说明.png

3.2 LSTM-DSSM模型

  • Query, Doc表示层使用LSTM网络,如下图所示使用一个单向的LSTM网络最后一个循环单元输出的隐向量表示一个Doc文档。
LSTM-DSSM模型.png

3.3 MV-DNN模型

  • 将DSSM模型进扩展用于推荐中,将不同场景(Multi-View)的推荐问题放在一起解决。相当于是一个多任务学习的框架,比如对于微软新闻推荐场景:输入数据是User Features,News Features(Item Features),其他场景的Item Features全部置为0向量。不同场景的推荐,使用相同的用户向量,能够解决推荐系统中用户冷启动问题。
MV-DNN模型.png

参考论文

  • [DSSM论文] Learning Deep Structured Semantic Models
    for Web Search using Clickthrough Data https://posenhuang.github.io/papers/cikm2013_DSSM_fullversion.pdf
  • [CLSM论文] A Latent Semantic Model with Convolutional-Pooling
    Structure for Information Retrieval http://www.iro.umontreal.ca/~lisa/pointeurs/ir0895-he-2.pdf
  • [LSTM-DSSM论文] SEMANTIC MODELLING WITH LONG-SHORT-TERM
    MEMORY FOR INFORMATION RETRIEVAL https://arxiv.org/pdf/1412.6629.pdf
  • [MV-DNN论文] A Multi-View Deep Learning Approach for Cross Domain
    User Modeling in Recommendation Systems https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/frp1159-songA.pdf
  • [谷歌双塔召回模型] Sampling-Bias-Corrected Neural Modeling for Large Corpus Item Recommendations https://storage.googleapis.com/pub-tools-public-publication-data/pdf/6c8a86c981a62b0126a11896b7f6ae0dae4c3566.pdf
  • On the Sentence Embeddings from Pre-trained Language Models https://arxiv.org/abs/2011.05864
  • Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks https://arxiv.org/abs/1908.10084

参考资料

  • DSSM论文阅读与总结 https://zhuanlan.zhihu.com/p/53326791
  • 从 DSSM 语义匹配到 Google 的双塔深度模型召回和广告场景中的双塔模型思考 https://toutiao.io/posts/5l4lu0b/preview
  • tensorflow代码参考:
    https://github.com/cdj0311/dssm 【基于estimator实现】
    https://github.com/InsaneLife/dssm 【dssm, lstm-dssm, mv-dnn模型】
    https://github.com/InsaneLife/dssm/blob/master/multi_view_dssm_v3.py 【mv-dnn模型】

你可能感兴趣的:([搜索引擎] DSSM模型及其变种)