深度語義匹配模型-DSSM 及其變種
轉自: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 \\這裏的
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.
深度語義匹配模型-DSSM 及其變種