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