【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 矩陣就是將一個單詞轉化為對應的letter-trigram向量。
然后一個word-n-gram里面會有多個詞,比如word-tri-gram按窗口為3將句子進行切分的話,一個word-tri-gram里面就有三個單詞。那么這個word-tri-gram的表示就用每個單詞的letter-trigram拼接起來來表示。
比如句子的第t個word-n-gram就直接表示為:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
其中是第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輸出的,輸出為:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
就是卷積矩陣,激活函數選擇的tanh()函數。
7.max-pooling 池化層也是經常和卷積一起配合使用的操作了,這里之所以選擇max-pooling是因為,語義匹配的目的是為了找到query和doc之間的相似度,那么就需要去找到兩者相似的點,max-pooling則可以找到整個特征圖中最重要的點,而avg-pooling則容易把重要的信息平均掉。
但是為了讓最后不定長句子的輸入也有定長的向量輸出,這里的max-pooling是基于每個word-n-gram輸出向量,在每個向量的不同維度上的max-pooling。就是這么個意思:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
i是向量的第i個維度,這樣就能保證最后輸出的維度一致了。
其實到這里輸出的向量已經可以作為潛在的語義向量使用了,
?不過作者還在這后面加了一個全連接網絡,即
8.semantic matrix ? ?就是全連接矩陣
9.semantic layers 就是經過全連接后的最后一層輸出。
? ? ? ? ? ? ? ? ? ? ? ? ?
之所以再加一層全連接無非是想對提取的向量再做一次非線性映射,讓輸出的向量能更好的在歐式空間內進行度量。
最后的損失函數,相似度度量等,都和原始的dssm一毛一樣了。可以去看看我前面寫的那篇DSSM。
完
總結
以上是生活随笔為你收集整理的【Semantic Embedding】: CDSSM(CLSM)模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【C/C++】程序员面试,掌握这些,丹尼
- 下一篇: CA服务器的搭建和申请证书