論文地址:https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/cikm2013_DSSM_fullversion.pdf
DSSM的全稱是Deep Semantic Similarity Model
要點:
- 目的是進(jìn)行語義相似度建模
- 輸入的是一對語料 (X, Y)(在問答場景是query-query懒浮,在搜索場景是query-doc等)
- 基本思路是通過深度網(wǎng)絡(luò)分別提取輸入語義表征向量转砖,通過計算向量距離來計算相似度(如cos)
- 訓(xùn)練的數(shù)據(jù)需要有正負(fù)例,需要知道哪些 (X, Y) 是語義相似的脚仔,哪些是不相似的屈暗。負(fù)例也可以通過一些方法構(gòu)造
- 訓(xùn)練的目標(biāo)是最大化讓正例之間的距離減負(fù)例之間距離
- 模型訓(xùn)練完成后爆捞,可以預(yù)先計算好文本的語義表征向量曼验,比如問答場景里考阱,所有候選集的query語義向量都可以預(yù)先算好翠忠,線上只需要計算用戶輸入query的向量,然后計算向量距離就可以了
-
詞序列的第一步表征使用了字符trigram乞榨,但這個方法不能用到中文中
1秽之、特征表征部分
Word hashing layer
這一步是為了將不等長的輸入詞組轉(zhuǎn)成等長的向量表示当娱,常用的方法有很多種,比如最簡單的按照詞ngram做one-hot考榨,或者按照詞embedding做求和或平均跨细。
DSSM用了字符的ngram,比如cat這個詞的trigram就變成(詞的開頭和結(jié)尾用#表示)
cat → #cat# → #-c-a, c-a-t, a-t-#
這么做有以下幾個好處
- 在英語中河质,只有50K 字符的trigrams冀惭,可以大大降低輸入向量的維度
- 捕獲sub-word的特征,比如英語中的前綴掀鹅、后綴散休、詞根等都有相似的語義
- 選擇trigram而不是bigram,或者更大的ngram是為了在候選集和沖突率之間折中
對于50萬的單詞表乐尊,bigram的候選集是1607戚丸,但是沖突率是0.2%;trigram的候選集是3萬扔嵌,沖突率只有0.004%
2限府、深度部分
中間是多層的深度網(wǎng)絡(luò),下面是論文里面的結(jié)構(gòu)
3对人、目標(biāo)函數(shù)部分
4谣殊、樣本選取和指標(biāo)評估
論文中數(shù)據(jù)集使用了搜索點擊日志,query和點擊的doc作為一組正樣本牺弄,曝光不點擊的doc作為負(fù)樣本姻几。
使用NDCG@k(1、3势告、10)評估的模型的效果蛇捌。
附:
NDCG的計算方法
NDCG Normalized Discounted cumulative gain是一種常用的評價搜索或者推薦結(jié)果的指標(biāo),直覺的想法是相關(guān)度越高的項出現(xiàn)在越靠前的位置咱台,指標(biāo)的得分應(yīng)該越高络拌。
每一個候選項都有相關(guān)度和順序兩個變量,我們來一步一步拆解
(1)CG就是候選項相關(guān)度的求和回溺,這就不考慮順序的影響
(2)DCG對不同位置上的相關(guān)度進(jìn)行加權(quán)春贸,位置i的權(quán)重是1/log2(i+1)
還有另一種算法,可以強化相關(guān)度的作用
(3)由于不同搜索詞對應(yīng)p可能不同遗遵,需要增加歸一化
歸一化使用理想情況下最大的DCG萍恕,也就是完全按照相關(guān)度從大到小排序后計算一次DCG。
參考: