深度语义匹配模型-DSSM 及其变种

转自:http://ju.outofmemory.cn/entry/316660

感谢分享~web

 

DSSM这篇paper发表在cikm2013,短小可是精炼,值得记录一下 
ps:后来跟了几篇dssm的paper,一并记录在这里网络

DSSM

DSSM的结构

DSSM 最大的卖点在检索场景下 使用点击数据来训练语义层次的匹配,简单的来讲,传统检索场景下的匹配主要有:架构

  1. 字面匹配: TFIDF 、 BM25 
  2. 使用 LSA 类模型进行语义匹配,可是效果很差

而DSSM训练出来以后,检索场景下用户输入query以后,能够根据该query计算各个doc的语义类似度。app

这里上图最直接:dom

上面是 DSSM 训练的架构图:ide

  1. 输入的是一个 query 和这个query相关的 doc ,这里的输入特征能够是最简单的 one-hot ,而须要 train 的是这个query下各个doc的相关性( DSSM里面使用点击率来代替相关性)
  2. 因为这种 one-hot 的输入可能会有两个问题:函数

    1. 致使 vocabulary 太大
    2. 会出现 oov 的问题优化

      所以输入特征以后的第一层是作一个叫作 Word Hashinging 的操做spa

  3. 接下来就是传统的神经网络了 
    $$l_i=f(W_il_{i-1}+b_i),i = 2,…,N-1 \\ 
    y=f(W_Nl_{N-1}+b_N) $$

    这里的 是激活函数,文中使用$tanh$来计算:$f(x)=\frac{1-e^{-2x}}{1+e^{-2x}}$code

  4. 获得的$y$就是语义特征了,query和doc之间的相关性就能够直接使用特想之间的类似性来度量,这里使用cosine来计算 
    $$R(Q,D)=cosine(y_Q,y_D) = \frac{y_Q^Ty_D}{||y_Q||||y_D||}$$
  5. 最终获得的类似度就能够去训练query和doc的相关性了

所以整个结构就能够看作作了一层 Word Hashing 以后去训练 DNN 网络

Word Hashing

Word Hashing 是paper很是重要的一个 trick ,以英文单词来讲,好比 good ,他能够写成 #good# ,而后按tri-grams来进行分解为 #go goo ood od# ,再将这个tri-grams灌入到 bag-of-word 中,这种方式能够很是有效的解决 vocabulary 太大的问题(由于在真实的web search中vocabulary就是异常的大),另外也不会出现 oov 问题,所以英文单词才26个,3个字母的组合都是有限的,很容易枚举光。 
那么问题就来了,这样两个不一样的单词会不会产出相同的tri-grams,paper里面作了统计,说了这个冲突的几率很是的低,500K个word能够降到30k维,冲突的几率为0.0044%

可是在中文场景下,这个 Word Hashing 估计没有这么有效了 
由于直接使用了word hashing,由于没法记录上下文信息

训练DSSM

上面是前向计算过程,在进行训练的时候须要计算给定 Query 下与 Doc 的相关性: 
$$P(D|Q) = \frac{exp(\gamma R(Q,D))}{\sum_{d_i \in D} exp(\gamma R(Q,D))}$$

最终他须要优化的损失函数为: 
$$L(\Lambda) = - \text{log} \prod_{(Q,D^+)} P(D^+|Q)$$

$D^+$表示被点击的文档,这里就是最大化点击文档的相关性的最大似然

CDSSM

CDSSM (又称 CLSM :Convolutional latent semantic model)在必定程度上他能够弥补 DSSM 会丢失上下文的问题,他的结构也很简单,主要是将 DNN 替换成了 CNN


他的前向步骤主要计算以下: 
1. 使用指定滑窗大小对输入序列取窗口数据(称为 word-n-gram ) 
2. 对于这些 word-n-gram 按 letter-trigram 进行转换构成representation vector(其实就是 Word Hashing 
3. 对窗口数据进行一次卷积层的处理(窗口里面含有部分上下文) 
4. 使用 max-pooling 层来取那些比较重要的 word-n-gram 
5. 再过一次FC层计算语义向量 
6. 他最终输出的仍是128维 

> 由于使用 CDSSM 来作语义匹配的工做也是比较合适的 

## DSSM-LSTM 
既然是为了记录输入句子的上下文,这个无疑是 Lstm 这个模型更为擅长,所以又有了一种 Lstm 来构造的 DSSM 模型 

这篇相对于 CDSMM 来讲改的更为简单,其实就是将原始 DSSM 的模型替换为了 LSTM 模型…

MV-DSSM

MV-DSSM 里面的 MV 为 Multi-View ,通常能够理解为多视角的 DSSM ,在原始的DSSM中须要训练的有 Query 和 Doc 这两类的embedding,同时里面DNN 的全部权重都是共享的,而 MV-DSSM 他能够训练不止两类的训练数据,同时里面的深度模型的参数是相互独立:

 


基于 Multi-View 的 DSSM 是的参数变多了,因为多视角的训练,输入的语料也能够变得不一样,自由度也更大了,可是随之带来的问题就是训练会变得愈来愈困难^_^

 

总结

DSSM 类的模型其实在计算类似度的时候最后一步除了使用Cosine,可能再接入一个MLP会更加好,由于Cosine是彻底无参的。

DSSM 的优点:

  1. DSSM 看起来在真实检索场景下可行性很高,一方面是直接使用了用户自然的点击数据,出来的结果可行度很高,另外一方面文中的doc可使用title来表示,同时这个部分都是能够离线进行语义向量计算的,而后最终query和doc的语义类似性也是至关诱人
  2. DSSM 出的结果不只能够直接排序,还能够拿中间见过作文章: semantic feature 能够自然的做为 word embedding 

DSSM 的劣势:

  1. 用户信息较难加入(不过能够基于 MVDSSM 改造)
  2. 貌似训练时间很长啊

参考

    1. Huang P S, He X, Gao J, et al. Learning deep structured semantic models for web search using clickthrough data[C]// ACM International Conference on Conference on Information & Knowledge Management. ACM, 2013:2333-2338.
    2. Shen, Yelong, et al. “A latent semantic model with convolutional-pooling structure for information retrieval.” Proceedings of the 23rd ACM International Conference on Conference on Information and Knowledge Management. ACM, 2014.
    3. Palangi, Hamid, et al. “Semantic modelling with long-short-term memory for information retrieval.” arXiv preprint arXiv:1412.6629 (2014).
    4. Elkahky, Ali Mamdouh, Yang Song, and Xiaodong He. “A multi-view deep learning approach for cross domain user modeling in recommendation systems.” Proceedings of the 24th International Conference on World Wide Web. International World Wide Web Conferences Steering Committee, 2015.
相关文章
相关标签/搜索