【Semantic Embedding】: CDSSM(CLSM)模型

文章下載地址:https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/cikm2014_cdssm_final.pdf

DSSM模型的輸入是query和doc的詞袋模型生成的向量,所以模型丟失來文本的上下文結構信息。而CDSSM模型則通過詞的n-gram和卷積池化操作來捕獲上下文關係,按文章說明的,該算法相比原始DSSM將近會有10%的效果提升。

直入主題

                              

按圖從上到下進行講解

1. Query/document 是輸入模型的query和doc句子,這裏分別對輸入的句子首尾用<s>進行了填充,保證在n-gram和卷積的時候每個詞的前後都有詞。

這個不用多說了,就是輸入的句子。

2. Sliding window 是定義滑動窗口對輸入的句子做n-gram,來獲取word-n-gram,文章用的tri-gram。

3.word-n-gram layer 是經過滑窗處理後的word-n-gram 數據。

4.Letter-trigram layer 是對word-n-gram 按原始dssm說的那個把單詞用n-gram進行切割的方式進行處理,不過在進行詞袋模型統計的時候統計的是word-n-gram了,不再是整個句子。

下面針對2,3,4進行講解

letter-trigram based word-n-gram representation

一個單詞通常被表示爲一個one-hot向量,但是因爲詞彙量過大,數據會很稀疏,所以這裏的輸入也用到了word hashing 技術。比如把一個單詞 (boy)前後填充上詞邊界標識,變爲#boy#,然後做letter-n-grams,比如做letter-tri-grams,就能獲得#bo,boy,oy#。然後我們就可以把單詞表示成letter-tri-grams多熱向量,如下所圖所示:

                          

這樣就能大大減少單詞的向量的維度。

框架圖中的letter-trigram 矩陣W_f就是將一個單詞轉化爲對應的letter-trigram向量。

然後一個word-n-gram裏面會有多個詞,比如word-tri-gram按窗口爲3將句子進行切分的話,一個word-tri-gram裏面就有三個單詞。那麼這個word-tri-gram的表示就用每個單詞的letter-trigram拼接起來來表示。

比如句子的第t個word-n-gram就直接表示爲:

                                             

其中f_t是第t個詞的letter-trigram表示,n=2d+1是滑動窗口的大小。如果letter-trigram的詞彙量大小爲30k的話,那麼word-n-grams的向量表示就是n*30k。模型框架圖中的90k就是因爲窗口大小n=3。

5.卷積矩陣 

可以理解爲卷積模版

6.卷積層

其實5,6就是在做一個事情,把原始dssm的全連接網絡轉化成卷積網絡,因爲是一維向量所以用的一維卷積,

其輸出就是上一層一個word-n-gram輸出的l_t,輸出爲:

                                                

W_c就是卷積矩陣,激活函數選擇的tanh()函數。

7.max-pooling 池化層也是經常和卷積一起配合使用的操作了,這裏之所以選擇max-pooling是因爲,語義匹配的目的是爲了找到query和doc之間的相似度,那麼就需要去找到兩者相似的點,max-pooling則可以找到整個特徵圖中最重要的點,而avg-pooling則容易把重要的信息平均掉。

但是爲了讓最後不定長句子的輸入也有定長的向量輸出,這裏的max-pooling是基於每個word-n-gram輸出向量,在每個向量的不同維度上的max-pooling。就是這麼個意思:

                                                

i是h_t向量的第i個維度,這樣就能保證最後輸出的維度一致了。

其實到這裏輸出的向量已經可以作爲潛在的語義向量使用了,

 不過作者還在這後面加了一個全連接網絡,即

8.semantic matrix W_s   就是全連接矩陣

9.semantic layers 就是經過全連接後的最後一層輸出。

                         

之所以再加一層全連接無非是想對提取的向量再做一次非線性映射,讓輸出的向量能更好的在歐式空間內進行度量。

最後的損失函數,相似度度量等,都和原始的dssm一毛一樣了。可以去看看我前面寫的那篇DSSM。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章