2020-06-18-深度學習推薦系統 第4章 Embedding技術在推薦系統中的應用

Embedding(一下簡化寫為emb)是深度學習推薦領域中非常基礎和關鍵的應用, 它直譯為"向量化"或者"向量映射". 它的主要作用是:

將高維稀疏向量轉換成低維稠密向量,便于上層深度神經網絡處理.

書中將emb的內容分為3大部分:

  1. emb基礎
  2. 介紹emb的發展演化過程
  3. 線上部署方式和快速服務的方法

emb是什么

剛才已經介紹過, embedding就是用一個低維稠密的向量"表示"一個對象(商品,電影,用戶等等)

emb是深度學習的"核心操作",主要原因主要有以下三個:

  1. 推薦場景中,大量使用one-hot對類別\id型特征進行編碼,導致樣本特征向量季度稀疏,而深度學習的結構特點是其不利于稀疏特征向量的處理,因此通常會加入emb層,將這些高維稀疏特征胡在哪換成低維稠密向量.
  2. emb的表達能力強, 可以引入大量信息進行emb編碼,有利于模型學習.
  3. emb對物品\用戶相似度的計算是常用的推薦系統召回層技術.更適用于對海量備選物品進行快速"初篩".

word2vec - 經典emb方法

word to vector, 的假設是任務一句話中的相鄰詞之間關系緊密.即每個詞都是有相鄰詞決定的(skip-gram),或者每個詞都決定了相鄰的詞(cbow).

訓練方法

數據: 選取長度為2c+1的滑動窗口, 從語料庫中抽取一個句子,將滑動窗口有左至右滑動,每一棟一次,窗口中的詞組就行成了一個訓練樣本,以skip-gram為例,w(t) 即為窗口中中間且需要被學習emb的詞,w(t+-c)周圍的詞.

目標: 極大似然估計, 我們希望所有樣本的條件概率p(w_{t+j}|w_t)之積最大.
\frac{1}{T} \sum_{t=1}^{T} \sum_{-c \leqslant j \leqslant c, j \neq 0} \log p\left(w_{t+j} | w_{t}\right)

其中,p(w_{t+j}|w_t)的定義是: 我們可以把word2vec定義為一個多分類問題,那么就可以使用softmax函數.

p\left(\mathcal{W}_{\mathrm{O}} | \mathcal{W}_{\mathrm{I}}\right)=\frac{\exp \left(V_{w_{\mathrm{O}}^{\prime}}^{\mathrm{T}} V_{w_{\mathrm{I}}}\right)}{\sum_{w=1}^{W} \exp \left(V_{w}^{\mathrm{T}} V_{w_{\mathrm{I}}}\right)}

其中, V_{w_{\mathrm{O}}^{\prime}} 是指被預測的中間詞
(skip-gram)

word2vec的負采樣訓練方法

上一節給出了word2vec的模型目標和訓練方法,實際上,這種方式挺不可行,如果語料庫中的詞的數量很多如10000個詞,那么就意味著softmax層要計算10000個內積,然后根據這10000個計算誤差,成本太高.

為了減輕訓練的負擔,通常使用負采樣的方法進行訓練. 將優化目標從一個多分類問題簡化成為一個近似的二分類問題:
E=-\log \sigma\left(v_{w_{o}}^{\prime \mathrm{T}} \boldsymbol{h}\right)-\sum_{w_{j} \in W_{\mathrm{neg}}} \log \sigma\left(-v_{w_{j}}^{\prime \mathrm{T}} \boldsymbol{h}\right)

迭代過程推導: http://www.lxweimin.com/p/b05dfd48c43f

item2vec- word2vec在推薦系統領域的推廣

與之前提到的word2vec不同的是數據構造方式, 將用戶一段時間的點擊或者其他行為作為一句話里的使用word2vec方法進行學習得到相應的word vector.

雙塔模型

embedding方法不只item2vec, 目前比較常用的是雙塔模型,將item和user分為兩個nn塔進行學習. 是一種廣義上的item2vec模型.

輸入特征有用戶行為序列生成的one-hot特征想咯昂,變成了可包含更多信息的\全面的物品特征向量.

item2vec方法的局限性

item2vec只能用序列數據,在互聯網場景下大量的網絡化數據時往往顯得捉襟見肘.

Graph Embedding-引入更多結構信息的圖嵌入技術

word2vec和item2vec使用的是"序列"樣本數據, 互聯網場景下, 數據對象之間更多呈現的是圖結構.典型的場景是由用戶行為數據生成的物品關系圖(下圖b),以及由屬性和實體組成的知識圖譜(下圖c).

傳統的word2vec方式并不能直接學習圖結構, GraphEmbedding(簡稱GE)是一個新的方向,逐漸在深度學習推薦系統里流行了起來.

GraphEmbedding是一種對圖結構中的節點進行Embedding編碼的方法. 生成節點的emb向量一般包含圖的結構信息以及附近節點的局部相似性信息.

接下來按照書中的順序,介紹幾個常用的GE方法

DeepWalk-基礎GE方法

它的思路是在物品組成的圖結構上進行隨機有組,產生大量的物品序列,然后將這些序列作為樣本輸入Word2Vec訓練,得到EMb.

如上圖所示,主要的算法流程為:

  1. 通過日志分析挖掘到用戶的行為序列;
  2. 基于序列構建物品關系圖,
  3. 隨機游走方式產生序列,
    隨機游走的跳轉概率為相應出邊的權重除以所有出邊的權重和
  4. 輸入w2v進行訓練

Node2vec-同質性和結構性權衡

DeepWalk在隨機游走時使用的是比較單一的概率方式, NOde2vec考慮了圖結構的同質性和結構性,對于與起始點不同距離的節點采取不同的概率進行游走,通過調節超參控制學習的同質性和結構性emb.

同質性:指相近的節點盡量相似,如上圖中的U和S1234是同質;
為了能夠學習到同質性,需要讓隨機游走的過程更傾向于DFS,因為dfs更有可能通過多次跳轉,游走到遠方的節點上,但大概率率會在一個大的集團內部進行,使得一個集團或者社區內部的節點emb更為相似,從而更多地表達網絡的"同質性";
結構性:主要指結構上相似, 例如U和S6.
BFS能夠學習結構性,主要是因為它能夠在相鄰節點遍歷,當前節點是"局部中心節點","邊緣節點","連接性節點"學到的emb也是不同的,所以能夠學習到結構性.

通過節點間的跳轉概率控制BFS和DFS的傾向性 , 下圖所示為從t跳轉到節點v,再從v條狀到周圍點的概率示意圖,我們針對距離起始節點t的距離來采用不同的跳轉概率,p越小BFS概率越大學習結構性信息,q越小DFS學習同質性信息.

EGES-阿里巴巴的綜合性GE方法

之前介紹的emb方法只使用了物品id, 如果我們遇到了冷啟動即之前沒有遇到過的物品或者是長尾的物品,那么對導致沒有相應的emb或者emb學習的不充分的問題. 為了解決這個問題,alibaba加入了補充信息sideinfo來豐富embedding信息的來源,從而使沒有歷史行為記錄的商品獲得較合理的初始embedding.

EGES使用引入了與item相關的類別\價格\品牌等基礎信息,得到各自的emb,再通過attention的方法將emb進行加權pooling得到最終的emb表達.

這里值得注意的是,ali采用了e^{a_j}作為emb的權重, 主要原因是:

  1. 避免權重為0
  2. 因為e^{a_j}梯度下降過程中有優良的數學性質.

目前業界用graphSage比較多也比較成熟

emb與推薦系統相結合

之前介紹了一些emb的常用產出方式,實際在推薦系統中emb的利用可以分為3個方面:

  1. 在深度學習網絡中作為embedding層,完成從高位稀疏特征向量到低維稠密特征向量的轉換(預訓練);
  2. 作為與訓練的embeding特征向量,與其他特征向量連接后,一同輸入深度學習網絡進行訓練;
  3. 通過計算用戶和物品的embe相似度,進行匯總安徽.

embedding作為推薦系統召回層的方法

這里主要介紹youtube召回模型,這個模型是業界最為基礎和常用的范式,他將user的session以及屬性特征送入nn中使用最后一層的emb和和item emb進行softmax學習. 最終在通過線上實時預測用戶的emb與已經訓練好的emb進行相似度計算得到topN召回物料.

這里值得注意的是user的emb是離線或者實時產出的(書中說是離線產出的,我認為有問題,實時產出才能實時精準表達user的emb,效果才好),同時item的emb是單獨直接進入softmax的,與user session里邊的item無關(有人驗證過這樣效果好).

關于embeding相似topN的計算

一般用LSH方法進行快速計算,不做贅述. 主要是將emb進行分桶,每次從最相似的統計計算減少計算量.

總結

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,505評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,556評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,463評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,009評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,778評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,218評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,281評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,436評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,969評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,795評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,993評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,537評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,229評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,659評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,917評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,687評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,990評論 2 374