【推荐算法】DSSM双塔模型:Deep Structured Semantic Models for Web Search using Clickthrough Data
1、DSSM背景
DSSM,全稱Deep Structured Semantic Model,就是我們通常所說的雙塔模型,是微軟公司提出的一種基于深度神經網絡的語義模型,其核心思想是將query和doc映射到到共同維度的語義空間中,通過最大化query和doc語義向量之間的余弦相似度,從而訓練得到隱含語義模型,達到檢索的目的。
潛在語義模型的意圖是在語義級映射一個query到它的相關documents中,然而這種基于關鍵詞的匹配經常失敗。為此,一系列的新的基于深度結構的潛在語義模型被提出,這類模型能夠映射query和documents到共同的低維空間中,而且給定query對應的document的相關性可以通過距離的方式計算出來。提出的DSSM模型可以通過”使用點擊數據最大化給定query點擊過的documents的條件概率“進行訓練。為了使模型適用于更大規模的網絡檢索,DSSM使用了一種詞哈希的方法,該方法能夠有效地縮減語義模型的規模。DSSM模型通過一個真實數據集的網絡文檔排序實驗進行了評估,結果表明DSSM模型明顯優于當前階段的其他潛在語義模型。
雖然DSSM的提出是為了解決搜索問題,但是在推薦系統領域,DSSM也表現出了強大的競爭力,其效果不錯并且對工業界十分友好,所以被各大廠廣泛應用于推薦系統中。通過構建user和item兩個獨立的子網絡,將訓練好的兩個“塔”中的user embedding 和item embedding各自緩存到內存數據庫中。線上預測的時候只需要在內存中計算相似度運算即可。DSSM雙塔模型是推薦領域中非常值得掌握的一個重要模型。
論文的introduction部分首先介紹其他模型的一些不足:PLSA模型和LDA模型通過一個松散耦合的目標函數以一種無監督的方式進行訓練,很難達到符合預期的表現。其次,給出了潛在語義模型的兩條研究線:基于點擊數據、基于深度自編碼。基于點擊數據的BLTM模型和DPM模型,前者在文檔排序上并不能達到最佳表現,后者在訓練過程中涉及一個大規模矩陣乘法問題,因此訓練時間會很大。基于深度學習的模型采樣的是無監督訓練的方法,其表現不能過明顯優于基于關鍵詞匹配的baseline召回方法,同時這些模型也面臨著同樣的矩陣乘法問題。
綜合上述兩條研究線,解決文檔排序的DSSM模型問世了。
首先,通過一個非線性投影將query和documents映射到一個共同的語義空間。其次,對于給定query和每個documents的相關性,通過語義空間下向量間的一個余弦相似度計算出。神經網絡模型使用點擊數據進行訓練,因此給定query的點擊documents的條件概率能夠最大化。不同于之前的一些無監督方式學習的潛在語義模型,DSSM直接針對網絡文檔排序進行優化,因此得到了不錯的表現。而且在處理大規模詞匯表時,DSSM采用了一種詞哈希的方法,在沒有任何損失的情況下,將高維的queries和documents向量映射到低維letter-n-gram向量。在語義模型中增加了這一層,詞哈希方法能夠支持大規模詞匯表,這在網絡檢索中尤為重要。
2、DSSM Related Work
論文的這部分主要介紹了“Latent Semantic Models and the Use of Clickthrough Data”和"Deep Learning"這兩類模型,沒啥干貨,pass了。
3、DSSM算法細節
3.1?DNN for Computing Semantic Features
首先給出DSSM結構圖:
DSSM網絡結構解釋:
- Term Vector:表示文本的embedding向量。
- Word Hashing:為解決term vector太大問題,對bag-of-word向量降維。
- Multi-layer nonlinear projection:表示深度學習網絡的隱層。
- Semantic feature:表示query和document最終的embedding向量。
- Relevance measured by cosine similarity:表示query與document之間的余弦相似度。
- Posterior probability computed by softmax:表示通過softmax函數把query與正樣本document的語義相似性轉化為一個后驗概率。
DSSM使用一個DNN模型將語義空間中的高維稀疏文本特征映射到低維稠密特征。第一個隱藏層包含30k個神經元,用于詞哈希操作。詞哈希特征然后經過多層非線性映射,最后一層的神經元生成了DNN模型的語義空間特征。
DNN模型的輸入(raw text features)是一個高維term vector,即一個query或者是一個未經標準化的document,DNN模型的輸出是一個低維語義特征空間中的概念向量。
這樣的DNN模型可以用于網絡文檔排序:
- 匹配term vector到對應的語義概念向量
- 計算query和document之間的相關性打分(通過對應的語義概念向量的cosine相似度)
假設:
- x是輸入的term向量;
- y是輸出向量;
- 表示中間的隱藏層,i=1,2,... ,N-1;
- 表示第i個權重矩陣;
- 是第i個偏置項。
于是,結合神經網絡的結構,可以得到:
在輸出層和隱藏層使用tanh作為激活函數,這樣一個query和一個document的語義相關性打分可以通過下面的公式計算得到:
這里,和分別表示query和document的概念向量。這樣的話,在網頁檢索任務中,給定一個query,documents可以被計算出來的語義相關性打分排序。
激活函數tanh的公式和曲線:
Term vector的大小,通常被當作信息檢索領域的原始詞袋特征,其規模通常非常大。因此,當使用term vector作為輸入時,輸入層神經網絡的規模對于計算和模型訓練來說都變得難以處理。為了解決這個問題,DSSM針對DNN的第一層提出了一個“word hashing”的方法,這一層只由線性隱層單元(不需要學習大規模的權重矩陣)組成。
3.2?Word Hashing
word hashing方法意在減少詞袋term vector的維度,word hashing是在字母n-gram的基礎上為DSSM提出的一種新的方法:word hashing。word hashing方法優點是可以降低term vector的維度,缺點是存在一定的沖突問題。
word hashing方法:給定一個詞,以單詞good為例,首先在該單詞上添加開始和結束標記:#good#。然后將其轉換成字母n-gram的形式:letter trigrams: #go, goo, ood, od#。最后,這個詞將通過一個字母n-gram向量表示。
這樣的方法可能存在兩個不同的詞語有著相同的字母n-gram向量表示的問題,也就是沖突問題。與原始的one-hot向量表示相比,word hashing方法可以使用一個更低維度的向量來表示一個query或者一個document。
如果詞匯表的規模是40k,那么使用letter trigrams方法每個詞可以被一個10306維度的向量表示,四倍的維度減少。通常,詞匯表的規模越大,維度減少的意義越大。舉個列子,如果詞匯表的規模是500k,那么其中的每個詞可以被一個30621維度的向量表示,這是一個16倍的維度減少。然而,發生沖突的概率僅僅是0.0044%。
word hashing方法可以映射相同單詞的變種到letter n-gram空間中的近似的點上。當一個單詞在訓練數據集中從未出現時,基于word的表示word hashing總會帶來一些問題,其原因不在于使用了基于letter n-gram的向量表示。唯一的風險在于沖突問題。基于word hashing的letter n-gram方法對于詞匯表之外的單詞也能表現出一定的魯棒性,這允許我們可以降低DNN的規模,
基于word hashing的letter n-gram方法可以被當作是一種固定的線性變換,通過這個線性變換,輸入層的一個term vector可以被映射成一個網絡中下一層的letter n-gram向量。由于letter n-gram向量的維度通常很低,這就可以使得DNN模型能夠有效地學習。
補充說明:DSSM模型的輸入層主要的作用就是把文本映射到低維向量空間轉化成向量提供給深度學習網絡。然而在NLP領域里中英文的差異比較大,在輸入層處理方式也不同。
英文的輸入層可以通過word hashing方法處理,該方法基于字母的n-gram,主要作用是減少輸入向量的維度。
中文輸入層和英文有很大差別,首先要面臨的是分詞問題。如果要分詞推薦jieba或者北大 pkuseg,不過現在很多模型已經不進行分詞了,比如BERT中文的預訓練模型就直接使用單字作為最小粒度了。
3.3?Learning the DSSM
點擊日志通常由一系列queries和點擊的documents組成。
假設一個query對應的點擊過的documents是相關的。為了最大化給定query對應的點擊的documents的條件概率,DSSM提出了一個有監督訓練的方法去學習模型參數,模型參數即神經網絡中的權重矩陣和偏置向量。
首先,我們根據query和document的語義相關性打分通過一個softmax函數來計算給定query的document的后驗概率:
這里,
- 是softmax函數的平滑因子,通常在held-out數據集上經驗設置;
- D表示待排序的候選documents,理想狀態下,D應該包含所有可能的documents;
- Q表示一個query,表示被點擊過的document;
- (Q,)表示query、clicked-document對。
DSSM估計D通過被點擊過的document和4個隨機選擇的未被點擊過的documents()。實驗表明,選擇未被點擊過documents的采樣策略并不會影響訓練結果。
模型參數的訓練都是在訓練集上最大化給定查詢queries的被點擊documents的概率來獲得,也即我們需要最小化下面的損失函數:
這里,表示神經網絡的參數,其學習過程采用了一種基于梯度的數學優化算法。
3.4?Implementation Details
為了確定訓練參數并防止過擬合,實驗將點擊數據分成不重疊的兩部分:訓練集和驗證集。實驗過程中,模型在訓練集上訓練,訓練參數在驗證集上進行優化。
DNN模型使用了3個隱藏層的結構。
第一個隱層是word hashing層,包含30k個結點,即letter-trigrams的大小是30k。
接下來的兩個隱藏層分別有300個隱藏結點。
輸出層有128個結點,即輸出層的維度是128維。
word hashing是基于一個固定的投影矩陣,輸出層的維度是128維,128維向量用來計算相似性。在訓練階段,模型的訓練采用的是基于SGD的mini-batch方法,每個mini-batch包含1024個訓練樣本。實驗表明,DNN模型通常在整個數據集上迭代20輪之內達到收斂。
4、?DSSM模型在推薦召回環節的應用
DSSM模型的最大特點就是Query和Document是兩個獨立的子網絡,后來這一特色被移植到推薦算法的召回環節,即對用戶端(User)和物品端(Item)分別構建獨立的子網絡塔式結構。
DSSM雙塔模型結構圖:
雙塔模型兩側分別對(用戶,上下文)和(物品)進行建模,并在最后一層計算二者的內積。
其中:?
- 為(用戶,上下文)的特征,為(物品)的特征。
- 表示(用戶,上下文)最終的embedding向量表示,??表示(物品)最終的 embedding向量表示。
- <,>表示(用戶,上下文)和(物品)的余弦相似度。
當模型訓練完成時,item的embedding是可以保存成詞表的,線上應用的時候只需要查找對應的 embedding 可。因此線上只需要計算 (用戶,上下文) 一側的embedding,基于Annoy或Faiss 技術索引得到用戶偏好的候選集。
DSSM雙塔召回流程:
DSSM模型首先將原始的文本特征映射到低維的語義空間。query和document
假設:query?= 蘋果手機 價格,?document?= Iphone Xs 最低 售價 11399 元 Iphone X 價格 6999 元。
- 首先將query和document表示為詞頻向量,該向量由每個單詞出現的詞頻組成。
構建詞匯表:
蘋果手機 Iphone x Xs 價格 最低 售價 6999 11399 元得到query向量和document向量:
- 然后將和分別映射到低維語義空間,分別得到query的語義向量和document的語義向量。
- 計算和的相似度:
-
給定query,計算所有document與它的相似度,并截取topK個document即可得到召回結果。
5、DSSM小結
DSSM在推薦、搜索和廣告領域都取得了廣泛的應用,模型首先的一個用處即為Embedding化user和item,方便實時推薦計算,即通過兩個DNN,將user和item的特征各自輸入,訓練出兩個k維的向量u(x)和v(y),存入到redis這樣的緩存數據庫中,線上系統開始推薦時,獲取用戶的embedding,直接與各個item的embedding進行計算,得到對應的推薦序列。為了取得更好的推薦效果,很多公司都對模型結構進行了一些改進(這里只給出網絡結構圖不做詳細介紹):
百度的雙塔模型:
谷歌的雙塔模型:
6、參考資料
- DSSM論文
- OPPO互聯網技術:推薦系統中不得不說的DSSM雙塔模型
- 公眾號:推薦系統中不得不說的DSSM雙塔模型
總結
以上是生活随笔為你收集整理的【推荐算法】DSSM双塔模型:Deep Structured Semantic Models for Web Search using Clickthrough Data的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2018全国大学计算机学科评估,2018
- 下一篇: layuiadmin监听提交,增加修改和