論文地址:https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/cikm2013_DSSM_fullversion.pdf
DSSM的全稱是Deep Semantic Similarity Model
要點(diǎn):
- 目的是進(jìn)行語義相似度建模
- 輸入的是一對語料 (X, Y)(在問答場景是query-query,在搜索場景是query-doc等)
- 基本思路是通過深度網(wǎng)絡(luò)分別提取輸入語義表征向量,通過計(jì)算向量距離來計(jì)算相似度(如cos)
- 訓(xùn)練的數(shù)據(jù)需要有正負(fù)例,需要知道哪些 (X, Y) 是語義相似的,哪些是不相似的。負(fù)例也可以通過一些方法構(gòu)造
- 訓(xùn)練的目標(biāo)是最大化讓正例之間的距離減負(fù)例之間距離
- 模型訓(xùn)練完成后,可以預(yù)先計(jì)算好文本的語義表征向量,比如問答場景里,所有候選集的query語義向量都可以預(yù)先算好,線上只需要計(jì)算用戶輸入query的向量,然后計(jì)算向量距離就可以了
-
詞序列的第一步表征使用了字符trigram,但這個(gè)方法不能用到中文中
image.png
1、特征表征部分
Word hashing layer
這一步是為了將不等長的輸入詞組轉(zhuǎn)成等長的向量表示,常用的方法有很多種,比如最簡單的按照詞ngram做one-hot,或者按照詞embedding做求和或平均。
DSSM用了字符的ngram,比如cat這個(gè)詞的trigram就變成(詞的開頭和結(jié)尾用#表示)
cat → #cat# → #-c-a, c-a-t, a-t-#
這么做有以下幾個(gè)好處
- 在英語中,只有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ù)集使用了搜索點(diǎn)擊日志,query和點(diǎn)擊的doc作為一組正樣本,曝光不點(diǎn)擊的doc作為負(fù)樣本。
使用NDCG@k(1、3、10)評估的模型的效果。
附:
NDCG的計(jì)算方法
NDCG Normalized Discounted cumulative gain是一種常用的評價(jià)搜索或者推薦結(jié)果的指標(biāo),直覺的想法是相關(guān)度越高的項(xiàng)出現(xiàn)在越靠前的位置,指標(biāo)的得分應(yīng)該越高。
每一個(gè)候選項(xiàng)都有相關(guān)度和順序兩個(gè)變量,我們來一步一步拆解
(1)CG就是候選項(xiàng)相關(guān)度的求和,這就不考慮順序的影響

(2)DCG對不同位置上的相關(guān)度進(jìn)行加權(quán),位置i的權(quán)重是1/log2(i+1)

還有另一種算法,可以強(qiáng)化相關(guān)度的作用

(3)由于不同搜索詞對應(yīng)p可能不同,需要增加歸一化
歸一化使用理想情況下最大的DCG,也就是完全按照相關(guān)度從大到小排序后計(jì)算一次DCG。
參考:
