深度語義匹配模型-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.
相關文章
相關標籤/搜索