【推荐系统】推荐系统主流召回方法综述
“?本文主要梳理了近年來推薦系統中的主流召回方法,包括傳統召回方法,基于表示學習的方法(Youtube DNN,DMF,DSSM,item2vec,graph embedding,MIND,SDM等),以及基于匹配函數學習的方法(TDM,NCF等),非常適合大家學習!”
作者:陳小白1037,華中科技大學人工智能學院在讀碩士,先后在小米和騰訊實習推薦相關方向工作,推薦系統新兵成長中。
前言:
????本文是我在實習期間針對當前業界的主流召回方式所做的一個綜述, 由于本人水平有限, 希望各位大佬在評論區多多拍磚指正, 也希望有機會和各位老師交流學習, 這是我的微信號zyws_2020.
????傳統召回方式與新式召回在業務中互為補充,傳統召回(主要是cb和cf方法)往往是最直接的,成本最低的,效果非常顯著的方法. 不過出于技術探索的原因, 筆者后面會只介紹一些相對“高階”的方法, 權當拋磚引玉了.
1 Youtube DNN
? ????當前的主流方法的通用思路就是對于use和item的embedding的學習, 這也被稱為表示學習; YoutbeDNN是經典的將深度學習模型引入推薦系統中,可以看到網絡模型并不復雜,但是文中有很多工程上的技巧,比如說 word2vec對 video 和 search token做embedding后做為video初始embedding,對模型訓練中訓練時間和采集日志時間之間“position bias”的處理,以及對大規模多分類問題的負采樣softmax。
2 DeepMF
????Deep MF方法與傳統矩陣分解方式中的談到的“分解”其實是有些區別的.如果把推薦視作填充矩陣的任務的話,傳統MF的分解是把m(用戶數)× n(物品數)的矩陣分解成m×k大小的用戶抽象矩陣和n×k大小的物品抽象矩陣的乘積,實現把物品和用戶分別映射到k維隱空間的目的. 而deepMF則使用了另外一種得到k維隱向量的方式,即先把用戶交互矩陣分解出代表用戶的行和代表物品的列,用一個NN模型去學習用戶行和物品列的隱式表達.
3. DSSM
????雙塔結構DSSM是應用十分廣泛的深度方法,搜索場景中,點擊的日志中包含了用戶搜索query和用戶搜索當前query下點擊的doc,以此來構建正樣本,對每一個正樣本(query,doc)對,隨機選擇一些該query下曝光未點擊的doc構建負樣本,屬于有監督信息的學習,同時注意的是對于每一座doc塔的參數是共享的.在DSSM的基礎上演化出一些有用的變種,如MV-DSSM,融合不同域的特征進行學習.
4.Item2vec
????本質上來說item2vec是一種利用item彼此共現信息的缺少監督信息的學習,它的一個隱含假設是同一個session中共現的item往往是相關的,可以被互相推薦的,但實際場景中,們需要思考這種先驗是否能夠滿足,比如session序列中是否存在多興趣行為導致共現的item其實并沒有什么聯系,再比如session劃分的依據該如何權衡,劃分過長勢必會引入不相關的item成為噪音,劃分過短又會降低item在不同session序列中出現頻率,也會對訓練效果造成困難.
5.Airbnb Embedding
????airbnb embedding實際上是一篇針對item2vec方法,結合自己業務進行創新的方式,其中讓我最驚艷的是對于book 序列稀疏性的處理,一個user_id并非我起初設想的對應一個user_type,而是在user長期的book歷史行為中隨著劃分type的那些特征的改變而改變(比如我一年前用小米,現在用蘋果,那我的user_type是改變了的),同時文中提到用(user_type,item_type)元組來表示一個節點,同時在訓練的時候將元組扁平化成一種“異構”序列,達到在一個空間里學習user_type和item_type的目的,這個比一般item2vec方式有很大的創新,其讓我想到了后面要講到的類似node2vec和metapath2vec同構圖和異構圖的關系一樣,讓人耳目一新.
6.DeepWalk
幻燈片227.Node2Vec
????deepwalk和node2vec其實就像item2vec一樣都是基于“連接即可推薦”的先驗的,這里面其實沒有判斷“推薦是否正確”的強標簽信息,在item2vec中是通過兩個item在多個session中共現次數的頻率來體現item的信息的,而圖隨機游走embedding中是通過把這種共現次數編輯成邊的權重,由邊權控制游走概率來反映不同item的信息(這點很重要,設想一個場景中生成的圖是一個各向同性的圖,那么這個圖是學不出來什么東西的).圖中包含的信息一個是圖結構的復雜度(連接是否稠密),一個是圖的邊權重(item之間共現頻率分布是否有大的差異),因此在實際使用中,我們往往需要對自己的場景做上面兩個維度的評估和調優.
8.EGES
????EGES主要兩個創新點一個side information的融入,一個是attention機制,原始的graph embedding正如我前面說到的主要利用節點之間的共現信息,只是利用節點自身的id特征,那么像文中這樣在得到id的圖embedding之后如何與其它side information的embedding結合是一個很自然的想法.
9.LINE
????LINE方法其實是對前面所說的deepwalk這種emdedding使用“連接而推薦”的一種改進了,文中把這種直接連接的關系定義為一階相似,引入了間接相連的二階相似,這樣的好處是提升了拓展性,使得原來不直接相連的節點也有了更直接的二階相似度,類似的我們或許可以定義更高階的相似性,但這樣的問題就是推薦會變得發散,在如相關性推薦的場景中就會增加badcase的比例.
10.SDNE
11.GraphSAGE
????GraphSAGE非常驚艷的是轉換了graph embedding問題的研究對象,以前我們是對節點建模,但是對于節點建模,而節點信息是依賴于整個圖拓撲結構的,圖結構的改動就會影響我們節點表征的結果,而本文則轉換研究對象為對局部拓撲結構,通過學習局部拓撲結構與節點表征之間的映射函數間接的得到節點的表征,而實際場景中局部拓撲結構會相對穩定.
12.MIND
13.SDM
14.DeepFM
????其實用FM或者說DeepFM做排序模型,大家是較為熟悉的,那么如何用FM或者DeepFM做召回有什么特別的地方,一般而言召回過程中FM可以不考慮user特征集合內部的特征之間的交叉,以及item特征集合內部的特征交叉,那么這樣對于存入的user embedding 可以直接取user特征集合各個特征embedding的特征加和即可,item embedding直接取item特征集合各個特征embedding的特征加和即可,此時user embedding和item embedding的內積就已經體現了user特征和item特征之間的特征交叉,模型較排序使用的FM更為簡化.
15.NCF
????NCF是較早提出對于匹配函數進行學習的,它的技術難點是不能像基于向量內積召回方式的套路那樣離線存儲embedding然后線上最近鄰召回,因此它的線上serving的時間復雜度成為一個痛點,這個問題在后面的阿里的TDM中提供了解決方案.
16.TDM
????TDM提出的是對原有向量內積召回的顛覆,耳目一新,但是應用起來會涉及到檢索架構的調整,有很大的工程落地成本,這方面的細節筆者尚不清楚,請大家多多指教.
結語:
????感謝淺夢學長提供這樣一個平臺可以和大家分享自己的調研, 自己目前還是個行業新兵,希望能和大家多多交流學習,歡迎大家加入淺夢的deepctr和deepmatch社區,一起愉快地學習和玩耍.
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯獲取一折本站知識星球優惠券,復制鏈接直接打開:https://t.zsxq.com/yFQV7am本站qq群1003271085。加入微信群請掃碼進群:總結
以上是生活随笔為你收集整理的【推荐系统】推荐系统主流召回方法综述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 李沐《动手学深度学习》新增PyTorch
- 下一篇: 【推荐系统】协同过滤 零基础到入门