感谢分享~web
DSSM这篇paper发表在cikm2013,短小可是精炼,值得记录一下
ps:后来跟了几篇dssm的paper,一并记录在这里网络
DSSM
最大的卖点在检索场景下 使用点击数据来训练语义层次的匹配,简单的来讲,传统检索场景下的匹配主要有:架构
TFIDF
、 BM25
等LSA
类模型进行语义匹配,可是效果很差而DSSM训练出来以后,检索场景下用户输入query以后,能够根据该query计算各个doc的语义类似度。app
这里上图最直接:dom
上面是 DSSM
训练的架构图:ide
query
和这个query相关的 doc
,这里的输入特征能够是最简单的 one-hot
,而须要 train
的是这个query下各个doc的相关性( DSSM
里面使用点击率来代替相关性)因为这种 one-hot
的输入可能会有两个问题:函数
vocabulary
太大会出现 oov
的问题优化
所以输入特征以后的第一层是作一个叫作 Word Hashinging
的操做spa
这里的
f
是激活函数,文中使用$tanh$来计算:$f(x)=\frac{1-e^{-2x}}{1+e^{-2x}}$code
所以整个结构就能够看作作了一层 Word Hashing
以后去训练 DNN
网络
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,由于没法记录上下文信息
上面是前向计算过程,在进行训练的时候须要计算给定 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
(又称 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
为 Multi-View
,通常能够理解为多视角的 DSSM
,在原始的DSSM中须要训练的有 Query
和 Doc
这两类的embedding,同时里面DNN
的全部权重都是共享的,而 MV-DSSM
他能够训练不止两类的训练数据,同时里面的深度模型的参数是相互独立:
基于 Multi-View
的 DSSM
是的参数变多了,因为多视角的训练,输入的语料也能够变得不一样,自由度也更大了,可是随之带来的问题就是训练会变得愈来愈困难^_^
DSSM
类的模型其实在计算类似度的时候最后一步除了使用Cosine,可能再接入一个MLP会更加好,由于Cosine是彻底无参的。
DSSM
的优点:
DSSM
看起来在真实检索场景下可行性很高,一方面是直接使用了用户自然的点击数据,出来的结果可行度很高,另外一方面文中的doc可使用title来表示,同时这个部分都是能够离线进行语义向量计算的,而后最终query和doc的语义类似性也是至关诱人DSSM
出的结果不只能够直接排序,还能够拿中间见过作文章: semantic feature
能够自然的做为 word embedding
嘛DSSM
的劣势:
MVDSSM
改造)