轉自:http://ju.outofmemory.cn/entry/316660
感謝分享~
DSSM這篇paper發表在cikm2013,短小但是精煉,值得記錄一下
ps:后來跟了幾篇dssm的paper,一並記錄在這里
DSSM
DSSM的結構
DSSM
最大的賣點在檢索場景下 使用點擊數據來訓練語義層次的匹配,簡單的來說,傳統檢索場景下的匹配主要有:
- 字面匹配:
TFIDF
、BM25
等 - 使用
LSA
類模型進行語義匹配,但是效果不好
而DSSM訓練出來之后,檢索場景下用戶輸入query之后,可以根據該query計算各個doc的語義相似度。
這里上圖最直接:

上面是 DSSM
訓練的架構圖:
- 輸入的是一個
query
和這個query相關的doc
,這里的輸入特征可以是最簡單的one-hot
,而需要train
的是這個query下各個doc的相關性(DSSM
里面使用點擊率來代替相關性) -
由於這種
one-hot
的輸入可能會有兩個問題:- 導致
vocabulary
太大 -
會出現
oov
的問題因此輸入特征之后的第一層是做一個叫做
Word Hashinging
的操作
- 導致
- 接下來就是傳統的神經網絡了
$$l_i=f(W_il_{i-1}+b_i),i = 2,…,N-1 \\
y=f(W_Nl_{N-1}+b_N) $$這里的
f
是激活函數,文中使用$tanh$來計算:$f(x)=\frac{1-e^{-2x}}{1+e^{-2x}}$ - 得到的$y$就是語義特征了,query和doc之間的相關性就可以直接使用特想之間的相似性來度量,這里使用cosine來計算
$$R(Q,D)=cosine(y_Q,y_D) = \frac{y_Q^Ty_D}{||y_Q||||y_D||}$$ - 最終得到的相似度就可以去訓練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
的優勢:
DSSM
看起來在真實檢索場景下可行性很高,一方面是直接使用了用戶天然的點擊數據,出來的結果可行度很高,另一方面文中的doc可以使用title來表示,同時這個部分都是可以離線進行語義向量計算的,然后最終query和doc的語義相似性也是相當誘人DSSM
出的結果不僅可以直接排序,還可以拿中間見過做文章:semantic feature
可以天然的作為word embedding
嘛
DSSM
的劣勢:
- 用戶信息較難加入(不過可以基於
MVDSSM
改造) - 貌似訓練時間很長啊
參考
- 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.
- 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.
- Palangi, Hamid, et al. “Semantic modelling with long-short-term memory for information retrieval.” arXiv preprint arXiv:1412.6629 (2014).
- 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.