一石二鸟:推荐系统多目标任务建模方法
「煉丹筆記」傳送門: 這些我全要!推薦系統一石二鳥之道
作者:九羽,公眾號:煉丹筆記在做推薦系統時,在系統剛剛搭建時,針對業務目標我們可能只需要去優化CTR或者CVR即可,但是不同的推薦場景下的優化目標不同。同時,隨著系統的不斷迭代,我們希望推薦算法能夠同時優化多個業務目標。
比如,在內容信息流場景中,希望提高用戶點擊率CTR的基礎上提高用戶關注、點贊、評論、停留時長等行為,營造更好的社區氛圍從而提高留存;而在電商場景中,則希望能夠在優化GMV的基礎上提高點擊率,從而提高用戶的粘性和復購行為等。因此,一個成熟的推薦系統,會向多目標、多任務方向進行演化,從而承擔起更多的業務目標!
本文,我來分享一下在多目標優化問題上一些思路,包括多目標任務的技巧、算法模型MMOE、SNR、ESMM、PLE等。
通過Sample Weight進行多目標優化,保證一個主目標的同時,通過將其它目標轉化為樣本權重的方式改變數據分布,從而達到優化其它目標的效果。
這里我們以內容信息流場景為例。設定主目標為內容點擊率CTR,用戶在內容流中的點擊行為定義為正樣本。同時,在信息流點贊、評論、轉發功能也同樣定義為正樣本,但是點贊、評論、轉發、完播率大的樣本可以設置更高的樣本權重。對于樣本權重大的行為,如果預測錯誤就會帶來更大的損失。通過這種方法能夠在優化A目標CTR的基礎上,優化B目標停留時長。目標A會受到一定的損失換取目標B的增長。通過線上AB-Test和Sample Weight調整的聯動,可以保證A目標損失較小的前提下,帶來目標B的提升,實現初級的多目標優化。
這種方式模型簡單,上線容易,僅在訓練時通過梯度乘以樣本權重實現對其它目標的加權即可。但本質上并不是多目標建模,而是將不同的目標轉化為同一個目標,樣本的加權權重需要根據線上AB測試才能確定。
多目標模型融合,通過一個模型同時訓練多個目標(label的構造),線上進行融合。該方法的優點是各個任務之間能夠共享信息,統一迭代方便,節省資源。但缺點也比較明顯,目標越多模型越復雜,各任務之間相互影響,迭代速度慢等,尤其是在線上需要模型一定的響應時間時,該方法就變得有些笨重。
例如在視頻信息流場景中,我們用分類模型優化點擊率CTR,用回歸模型優化停留時長。不同的模型得到預測的score之后,通過一個函數將多個目標融合在一起,融合的函數可以有很多,比如連乘或者指數相關的函數,這里和業務場景和目標的含義強相關,可以根據自己的實際場景探索。
推薦系統在給用戶推薦一些熱門內容的同時,也需要對這些內容的質量有一定的把控,比如用戶的停留時長、點贊、轉發、評論等,所以成熟的推薦系統的推薦模型會同時對多個目標進行優化,而如何對這多個目標進行并行優化,正是本篇論文MMOE關注的重點,在以往的一些模型當中,通常優化一方面的效果就會損失另一方面的效果,所以這是一個Trade-off的過程。除此之外無論是搜索、推薦還是廣告,都存在一個的潛在的bias問題。
多任務模型通過學習不同任務的聯系和差異,可提高每個任務的學習效率和質量。多任務學習的的框架廣泛采用Shared-bottom的結構,不同任務間共用底部的隱層。這種結構本質上可以減少過擬合的風險,但是效果上可能受到任務差異和數據分布帶來的影響。MMoE模型刻畫了任務相關性,基于共享表示來學習特定任務的函數,避免了明顯增加參數的缺點。
Shared-Bottom 網絡通常位于底部,它通過淺層參數共享,互相補充學習。這種方式下任務相關性越高,模型的loss可以降低到更低。但是當任務沒有好的相關性時,這種Hard parameter sharing會損害效果。
MOE由一組專家系統(Experts)組成的神經網絡結構替換原來的Shared-Bottom部分,每一個Expert都是一個前饋神經網絡,再加上一個門控網絡(Gate)。
MMoE(Multi-gate Mixture-of-Experts)是在MOE的基礎上,使用了多個門控網絡, k個任就對應k個門控網絡。MMoE包括兩個部分,左側的shallow tower部分和右側的main tower部分,論文中提到的采用類似Wide&Deep模型結構就是指這兩個tower,其中shallow tower可以對應Wide部分,main tower對應的是Deep部分。
谷歌在MMOE之后又做了什么?經典的Shared-Bottom網絡結構存在一個明顯的問題:當共同訓練學習的多個任務之間聯系不強的時,會嚴重損害各自任務的效果。因為相對于多個目標各自訓練獨立模型而言,Shared-Bottom的網絡結構會在共享的網絡底層引入了Bias,這個上文中我們已經提到了。
上面提到的MMoE模型存在的一個問題,它只能夠針對共享的experts子網絡進行有限的組合。因此,在MMoE模型結構的基礎上,本文提出了優化的SNR模型來實現更靈活的網絡參數共享。與MMoE類似,SNR模型將共享的底層網絡模塊化為子網絡。不同的是,SNR模型使用編碼變量來控制子網絡之間的連接,并且設計了兩種類型的連接方式:SNR-Trans和SNR-Aver。
基于 Multi-Task Learning 的思路,阿里媽媽團隊在SIGIR2018上提出一種新的CVR預估模型ESMM,它有效解決了真實場景中CVR預估面臨的數據稀疏以及樣本選擇偏差這兩個關鍵問題。CVR預估和CTR任務相比,有兩個不同:
(1)Sample Selection Bias轉化是在點擊之后才“有可能”發生的動作,傳統CVR模型通常以點擊數據為訓練集,其中點擊未轉化為負例,點擊并轉化為正例。但是訓練好的模型實際使用時,則是對整個空間的樣本進行預估,而非只對點擊樣本進行預估。
(2)Data Sparsity作為CVR訓練數據的點擊樣本遠小于CTR預估訓練使用的曝光樣本。
一些策略可以緩解這兩個問題,但都沒有從實質上解決上面任一個問題。
為了解決這個問題,ESMM提出了轉化公式:
在全部樣本空間中,CTR對應的label為click,而CTCVR對應的label為click & conversion,這兩個任務是可以使用全部樣本的。而PCTCVR和PCTR都可以在全樣本空間進行訓練和預估。但是這種除法在實際使用中,會引入新的問題。因為PCTR其實是一個很小的值,預估時會出現PCTCVR大于PCTR的情況,導致PCVR預估值大于1。ESSM巧妙的通過將除法改成乘法來解決上面的問題。它引入了PCTR和PCTCVR兩個輔助任務,訓練時loss為兩者相加。
騰訊PCG在RecSys2020發表的最佳長論文PLE(Progressive Layered Extraction),是在視頻推薦場景下多任務模型。相對于前面的MMOE、SNR和ESMM模型,PLE模型主要解決兩個問題:(1)MMOE中所有的Expert是被所有任務所共享的,這可能無法捕捉到任務之間更復雜的關系,從而給部分任務帶來一定的噪聲;(2)不同的Expert之間沒有交互,聯合優化的效果有所折扣。
從圖中的網絡結構可以看出,CGC的底層網絡主要包括shared experts和task-specific expert構成,每一個expert module都由多個子網絡組成,子網絡的個數和網絡結構都是超參數。上層由多任務網絡構成,每一個多任務網絡(towerA和towerB)的輸入都是由gating網絡進行加權控制,每一個子任務的gating網絡的輸入包括兩部分,其中一部分是本任務下的task-specific部分的experts和shared部分的experts組成。
上面看到了CGC網絡是一種single-level的網絡結構,一個比較直觀的思路就是疊加多層CGC網絡,從而獲得更加豐富的表征能力,而PLE網絡結構就是將CGC拓展到了multi-level層中。
作者還將不同experts的平均權重展示出來,可以看出MOE不同experts權重基本相差不大,PLE模型共享experts和獨有experts的權重相差更大,說明針對不同的任務,能夠有效利用共享Expert和獨有Expert的信息,這也解釋了為什么其能夠達到比MMoE更好的訓練結果。
更多干貨,請關注微信公眾號:煉丹筆記總結
以上是生活随笔為你收集整理的一石二鸟:推荐系统多目标任务建模方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 搜索推荐炼丹笔记:融合GNN、图谱、多模
- 下一篇: java信息管理系统总结_java实现科