天天看點

工業界常用的推薦系統模型有哪些?Q:工業界推薦系統采用什麼架構?Q:CTR和推薦算法有什麼本質差別?Q:推薦系統中如何做 User Embedding?

原創 豆苗 淘系技術  6月7日

工業界常用的推薦系統模型有哪些?Q:工業界推薦系統采用什麼架構?Q:CTR和推薦算法有什麼本質差別?Q:推薦系統中如何做 User Embedding?

Q:工業界推薦系統采用什麼架構?

豆苗:

一般來說,工業界推薦系統采用召回->排序兩階段的架構。召回階段從海量内容池中召回數千條内容生成候選集,排序階段利用使用者、内容側豐富的特征、上下文資訊和複雜的模型對候選集中的内容進行打分排序,最終為使用者傳回數十條内容。本人主要工作在召回側,是以下面簡單列出召回相關的政策和模型。

▐  召回環節優化通常經曆三個階段

基礎個性化召回->深度個性化召回->多目标多政策召回

  • 基礎個性化召回

基于統計和傳統模型(如swing、userCF、itemCF等)産出各種x2i資料,進行以i2i為主,c2i,、b2i補充,熱門兜底的多路召回,各召回鍊路可單獨優化。

  • 深度個性化召回

将user、item轉化為向量,通過向量檢索技術召回topk,變“精确比對”為“模糊查找”,提升召回的擴充性。首先需要嘗試的是FM,可以參考:張俊林的《推薦系統召回四模型之:全能的FM模型》

閱讀位址:

https://zhuanlan.zhihu.com/p/58160982

還有基于使用者行為序列、基于多興趣拆分的、基于graph embedding和和基于知識圖譜融合的。

使用者行為序列

這類模型代表性的方法是SASRec,這是18年的發表在ICDM上的一篇針對召回的工作,主要是借助transformer來對使用者的曆史行為序列模組化,提取更為有價值的資訊。整個模型基本上是套在transformer這個架構下的,是以有position embedding、block的stacking等等,需要注意的是作者也有作一些調整,比如隻有當j > i 的時候Qi 和 kj 才會進行相關性的計算,并且采用非固定的Position embedding。

工業界常用的推薦系統模型有哪些?Q:工業界推薦系統采用什麼架構?Q:CTR和推薦算法有什麼本質差別?Q:推薦系統中如何做 User Embedding?
https://cseweb.ucsd.edu/~jmcauley/pdfs/icdm18.pdf

使用者多興趣拆分

這類模型核心的思想就是認為單一的向量無法充分表征使用者,進而采用多個向量表征使用者的多峰興趣,最為典型的就是MIND,它利用動态路由技術,對使用者興趣進行拆分。模型的輸入包含三部分:使用者屬性特征、使用者行為特征(例如點選過的商品/内容)和label特征。首先,所有的id類特征都經過embedding層,其中對于使用者行為特征對應的embedding向量還會進行average pooling。接着,傳遞給multi-Interest extract layer,生成的interest capsules。最後将interest capsules與使用者屬性特征的embedding concate起來經過幾層全連接配接網絡,得到使用者多個興趣表達向量。值得注意的是,在模型的最後有設計一個label-aware attention層,用以針對每個使用者從多個興趣中挑選出與其下一次點選行為最相關的興趣, 送入到後續的訓練。

工業界常用的推薦系統模型有哪些?Q:工業界推薦系統采用什麼架構?Q:CTR和推薦算法有什麼本質差別?Q:推薦系統中如何做 User Embedding?
https://arxiv.org/abs/1904.08030v1

其他相關的多興趣拆分的方法有:

基于注意力機制

https://dl.acm.org/doi/abs/10.1145/3394486.3403344 https://dl.acm.org/doi/abs/10.1145/3397271.3401088

基于層次凝聚聚類

https://dl.acm.org/doi/10.1145/3394486.3403280

Graph Embedding

這類模型是近期推薦系統召回環節較為熱門的研究方法,并且也線上上拿到了收益。例如EGES、PinSAGE、PinnerSAGE等。

  • 多目标多政策召回

在以點選率為優化目标的基礎上,嘗試優化發現性、成交率等其他目标。以及将積累的各種召回模型,根據業務實際需求實行多政策召回。

Q:CTR和推薦算法有什麼本質差別?

一般來說,一個完整的推薦算法包含召回、粗排、精排和重排這四個環節,而ctr預估隻是在排序時的一個重要參考依據。借用一張經典的圖來抛下觀點:

工業界常用的推薦系統模型有哪些?Q:工業界推薦系統采用什麼架構?Q:CTR和推薦算法有什麼本質差別?Q:推薦系統中如何做 User Embedding?

▐  召回有沒有必要?——有必要!

召回環節的設定是對推薦算法效率和效果綜合考慮的産物。它的任務是從全網的item池中篩選與使用者相關的item集合,其目标是拉高推薦算法的上限、提高使用者粘性,守住相關性的下界,保障使用者擁有一個良好的體驗。基于上述兩點,我們希望召回具備處理資料量大、模型夠快的特點。因而,這也限定了它不能用太多的特征和太複雜的模型。主流的召回方法主要有兩大類:

  • 基于統計的啟發式召回

如協同過濾、swing i2i,利用item 共現性,進行相關召回。

  • 基于深度學習的向量召回方法

如MIND、DSSM、GNN等将user、item表示成向量,利用設定好的距離度量方法,通過向量檢索召回top-K item。為了滿足不同的業務需求,我們通常會設定多路召回,有針對user冷啟動的、針對item冷啟動的、針對個性化的等在守住相關性的同時完成其他的業務目标。

是以說,在現有的條件下,舍棄召回環節,直接排序未必是一件容易的事。(此處,仍可參考張俊林的《推薦系統召回四模型之:全能的FM模型》

▐  推薦系統僅有ctr預估打分排序就夠了嗎?——不夠!

首先,對于新的user、item,ctr模型預估未必足夠準确,我們需要另外的政策機制去解決冷啟動。其次,把ctr分高的item展示給使用者,使用者就買賬嗎?一直看同類型的item使用者很快會産生疲勞感。是以根據業務場景的不同,我們有時還要考慮item的多樣性,例如通過用MMR、DPP等手段去平衡好相關性和多樣性。最後,實際業務場景中,推薦算法是個多目标優化的任務,除了考慮ctr,還需要考慮停留時長、互動率等名額。

最後總結下,召回和排序兩個環節各司其職。雖然排序,特别是精排,處于整個推薦算法鍊條的最後一環,友善直接對業務名額發力,加之候選集較小,可以使用複雜模型,如各種NN,各種Attention。而召回處于整個推薦鍊路的前端,其結果經過粗排、精排、重排的篩選,最終作用于業務名額時,影響力已經大大減弱了,但是召回決定了排序效果的上限,是值得我們好好研究的。

Q:推薦系統中如何做 User Embedding?

推薦系統的主要任務是預測實體間會不會存在某種關系。在大部分以使用者為主導的推薦系統中,一般會存在兩類實體:user和item,相應的就存在兩種實體對:user-user和user-item。user-user間關系:社交關系、行為相似、興趣相似等user-item間關系:點選、收藏、加購、點贊、評論等針對預測關系的不同,首先要建構描述實體間對應關系的訓練資料,其次是選擇合适的embedding模型。

常用的embedding模型有:

▐  傳統的MF模型

通過對user-item互動矩陣進行分解,進而擷取user和item的embedding。代表性的方法有biasSVD、SVD++、PMF、NMF等,MF模型的優勢是實作簡單、可擴充性強,預測精度也比較好,但是訓練速度慢。具體可參考:

張小磊的《推薦系統之矩陣分解家族》

https://zhuanlan.zhihu.com/p/35262187

▐  端到端DNN-embedding模型

模型中接入embedding層,通過與目标loss聯合訓練,得到embedding。例如DSSM、youtube雙塔結構、NCF等。

▐  Graph embedding模型

學習node或entire(sub) graph的低維embedding,使得embedding間的關系能夠反映原始網絡的結構資訊。将user和item視為網絡中的node,通過node embeding技術得到user/item-embedding。

▐  淺層模型

在由item-item組成的網絡中進行随機遊走,産生item序列庫。将item序列庫當做NLP中語料庫作為訓練樣本輸入word2vec進行訓練,得到item的embedding。例如:DeepWalk、Node2vec、EGES。具體可參考

王喆的《深度學習中不得不學的Graph Embedding方法》

https://zhuanlan.zhihu.com/p/64200072

▐  深層模型

目前廣泛使用的方法是Graph Convolutional Networks(GCN)。GCN将卷積從圖像和NLP領域拓展到Graph Embedding,每個節點單獨encode,但encode的時候,會利用卷積操作來彙聚鄰域節點的屬性資訊,并疊加多層網絡,形成節點的embedding表示。相比較于淺層模型,卷積核參數或網絡的參數是所有節點之間共享的,是以能夠有效減少參數量,同時能夠泛化到新的節點。例如:GraphSAGE、GAT、NGCF、LightGCN等。更多論文可參考:

https://github.com/thunlp/GNNPapers

通常情況下,user和item處在互相對等的位置。

是以在模組化user-user關系得到user embedding的任務中可嘗試将item-item的模組化模型遷移過來;在模組化user-item關系得到user embedding的任務中,可嘗試端到端的雙塔模型或異構網絡表示模型。

繼續閱讀