多任务学习在推荐算法中的应用
導讀:我們在優化推薦效果的時候,很多時候不僅僅需要關注 CTR 指標,同時還需要優化例如 CVR ( 轉化率 )、視頻播放時長、用戶停留時長、用戶翻頁深度、關注率、點贊率這些指標。那么一種做法是對每個任務單獨使用一個模型來優化,但是這樣做的缺點顯而易見,需要花費很多人力。其實很多任務之間都是存在關聯性的,比如 CTR 和 CVR。那么能不能使用一個模型來同時優化兩個或多個任務呢?其實這就是 Multi-task 多任務的定義。本文主要總結了近兩年工業界關于 Multi-task 模型在推薦場景的一些應用和工作。
1. 阿里 ESMM
Entire Space Multi-Task Model:?An Effective Approach for Estimating Post-Click Conversion Rate
CVR 是指從點擊到購買的轉化,傳統的 CVR 預估會存在兩個問題:樣本選擇偏差和稀疏數據。
樣本選擇偏差是指模型用用戶點擊的樣本來訓練,但是預測卻是用的整個樣本空間。數據稀疏問題是指用戶點擊到購買的樣本太少。因此阿里提出了 ESMM 模型來解決上述兩個問題:主要借鑒多任務學習的思路,引入兩個輔助的學習任務,分別用來擬合 pCTR 和 pCTCVR。
ESMM 模型由兩個子網絡組成,左邊的子網絡用來擬合 pCVR,右邊的子網絡用來擬合 pCTR,同時,兩個子網絡的輸出相乘之后可以得到 pCTCVR。因此,該網絡結構共有三個子任務,分別用于輸出 pCTR、pCVR 和 pCTCVR。假設用 x 表示 feature ( 即 impression ),y 表示點擊,z 表示轉化,那么根據 pCTCVR = pCTR * pCVR,可以得到:
則 pCVR 的計算為:
由上面的式子可知,pCVR 可通過 pCTR 和 pCTCVR 推導出來,那么我們只需要關注 pCTR 和 pCTCVR 兩個任務即可,并且 pCTR 和 pCTCVR 都可以從整個樣本空間進行訓練?為什么呢,因為對于 pCTR 來說可將有點擊行為的曝光事件作為正樣本,沒有點擊行為的曝光事件作為負樣本,對于 PCTCVR 來說,將同時有點擊行為和購買行為的曝光事件作為正樣本,其他作為負樣本。模型的 loss 函數:
另外兩個子網絡的 embedding 層是共享的,由于 CTR 任務的訓練樣本量要遠超過 CVR 任務的訓練樣本量,ESMM 模型中 embedding 層共享的機制能夠使得 CVR 子任務也能夠從只有展現沒有點擊的樣本中學習,從而能夠極緩解訓練數據稀疏性問題。
2. 阿里 DUPN
Perceive Your Users in Depth: Learning Universal User Representations from Multiple E-commerce Tasks
多任務學習的優勢:可共享一部分網絡結構,比如多個任務共享一份 embedding 參數。學習的用戶、商品向量表示可方便遷移到其它任務中。本文提出了一種多任務模型 DUPN:
模型分為行為序列層、Embedding 層、LSTM 層、Attention 層、下游多任務層。
? 行為序列層:輸入用戶的行為序列 x = {x1,x2,...,xN},其中每個行為都有兩部分組成,分別是 item 和 property 項。Item 包括商品 id 和一些 side-information 比如店鋪 id、brand 等 ( 好多場景下都要帶 side-information,這樣更容易學習出商品的 embedding 表示 )。Property 項表示此次行為的屬性,比如場景 ( 搜索、推薦等場景 ) 時間、類型 ( 點擊、購買、加購等 )。
? Embedding 層:主要多 item 和 property 的特征做處理。
??LSTM 層:得到每一個行為的 Embedding 表示之后,首先通過一個 LSTM 層,把序列信息考慮進來。
??Attention 層:區分不同用戶行為的重要程度,經過 attention 層得到128維向量,拼接上128維的用戶向量,最終得到一個256維向量作為用戶的表達。
??下游多任務層:CTR、L2R ( Learning to Rank )、用戶達人偏好 FIFP、用戶購買力度量 PPP 等。
另外,文中也提到了兩點多任務模型的使用技巧:
??天級更新模型:隨著時間和用戶興趣的變化,ID 特征的 Embedding 需要不斷更新,但每次都全量訓練模型的話,需要耗費很長的時間。通常的做法是每天使用前一天的數據做增量學習,這樣一方面能使訓練時間大幅下降;另一方面可以讓模型更貼近近期數據。
??模型拆分:由于 CTR 任務是 point-wise 的,如果有 1w 個物品的話,需要計算 1w 次結果,如果每次都調用整個模型的話,其耗費是十分巨大的。其實 user Reprentation 只需要計算一次就好。因此我們會將模型進行一個拆解,使得紅色部分只計算一次,而藍色部分可以反復調用紅色部分的結果進行多次計算。
3.?美團 "猜你喜歡" 深度學習排序模型
根據業務目標,將點擊率和下單率拆分出來,形成兩個獨立的訓練目標,分別建立各自的 Loss Function,作為對模型訓練的監督和指導。DNN 網絡的前幾層作為共享層,點擊任務和下單任務共享其表達,并在 BP 階段根據兩個任務算出的梯度共同進行參數更新。網絡在最后一個全連接層進行拆分,單獨學習對應 Loss 的參數,從而更好地專注于擬合各自 Label 的分布。
這里有兩個技巧可借鑒下:
??Missing Value Layer:缺失的特征可根據對應特征的分布去自適應的學習出一個合理的取值。
??KL-divergence Bound:通過物理意義將有關系的 Label 關聯起來,比如 p(點擊) * p(轉化) = p(下單)。加入一個 KL 散度的 Bound,使得預測出來的 p(點擊) * p(轉化) 更接近于 p(下單)。但由于 KL 散度是非對稱的,即 KL(p||q) != KL(q||p),因此真正使用的時候,優化的是 KL(p||q) + KL(q||p)。
4. Google MMoE
Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts
模型 (a) 最為常見,兩個任務直接共享模型的 bottom 部分,只在最后處理時做區分,圖 (a) 中使用了 Tower A 和 Tower B,然后分別接損失函數。
模型 (b) 是常見的多任務學習模型。將 input 分別輸入給三個 Expert,但三個 Expert 并不共享參數。同時將 input 輸出給 Gate,Gate 輸出每個 Expert 被選擇的概率,然后將三個 Expert 的輸出加權求和,輸出給 Tower。有點 attention 的感覺
模型 (c) 是作者新提出的方法,對于不同的任務,模型的權重選擇是不同的,所以作者為每個任務都配備一個 Gate 模型。對于不同的任務,特定的 Gate k 的輸出表示不同的 Expert 被選擇的概率,將多個 Expert 加權求和,得到?fk(x)?,并輸出給特定的 Tower 模型,用于最終的輸出。
其中 g(x) 表示 gate 門的輸出,為多層感知機模型,簡單的線性變換加 softmax 層。
5.?阿里 ESM2
Conversion Rate Prediction via Post-Click Behaviour Modeling
前面已經介紹過一種基于多任務學習的 CVR 預估模型?ESMM,但對于 CVR 預估來說,ESMM 模型仍面臨一定的樣本稀疏問題,因為 click 到 buy 的樣本非常少。但其實一個用戶在購買某個商品之前往往會有一些其他的行為,比如將商品加入購物車或者心愿單。如下圖所示:
文中把加購物車或者心愿單的行為稱作 Deterministic Action ( DAction ),表示購買目的很明確的一類行為。而其他對購買相關性不是很大的行為稱作 Other Action ( OAction )。那原來的?Impression→Click→Buy?購物過程就變為:
Impression→Click→DAction/OAction→Buy 過程。
ESM2 模型結構:
那么該模型的多個任務分別是:
??Y1:點擊率?
??Y2:點擊到 DAction 的概率?
??Y3:DAction 到購買的概率
??Y4:OAction?到購買的概率
并且從上圖看出,模型共有3個 loss,計算過程分別是:
??pCTR:Impression→Click 的概率是第一個網絡的輸出。
??pCTAVR:Impression→Click→DAction 的概率,pCTAVR = Y1 * Y2,由前兩個網絡的輸出結果相乘得到。
??pCTCVR:
Impression→Click→DAction/OAction→Buy 的概率,pCTCVR = CTR * CVR = Y1 * [(1 - Y2) * Y4 + Y2 * Y3],由四個網絡的輸出共同得到。其中 CVR=(1 - Y2) * Y4 + Y2 * Y3。是因為從點擊到 DAction 和點擊到 OAction 是對立事件。
隨后通過三個 logloss 分別計算三部分的損失:
最終損失函數由三部分加權得到:
6.?YouTube 多目標排序系統
Recommending What Video to Watch Next: A Multitask Ranking System
本文主要解決了視頻推薦場景下普遍存在的兩個問題:
??視頻推薦中的多任務目標。比如不僅需要預測用戶是否會觀看外,還希望去預測用戶對于視頻的評分,是否會關注該視頻的上傳者,否會分享到社交平臺等。
??偏置信息。比如用戶是否會點擊和觀看某個視頻,并不一定是因為他喜歡,可能僅僅是因為它排在推薦頁的最前面,這會導致訓練數據產生位置偏置的問題。
模型結構:
從上圖可知,整個模型需要預測兩大類目標,分別是:
??Engagement objectives:主要預測用戶是否點擊和觀看視頻的時長。其中通過二分類模型來預測用戶的點擊行為,而通過回歸模型來預測用戶觀看視頻的時長。
??Satisfaction objectives:主要預測用戶在觀看視頻后的反饋。其中使用二分類模型來預測用戶是否會點擊喜歡該視頻,而通過回歸模型來預測用戶對于視頻的評分。
模型中有兩個比較重要的結構:Multi-gate Mixture-of-Experts ( MMoE ) 和消除位置偏置的 shallow tower。
MMoE 的結構為:
Shallow tower 的結構為:
通過一個 shallow tower 來預測位置偏置信息,輸入的特征主要是一些和位置偏置相關的特征,輸出的是關于 selection bias 的 logits 值。然后將該輸出值加到子任務模型中最后 sigmoid 層前,在預測階段,則不需要考慮 shallow tower 的結果。值得注意的是,位置偏置信息主要體現在 CTR 預估中,而預測用戶觀看視頻是否會點擊喜歡或者用戶對視頻的評分這些任務,是不需要加入位置偏置信息的。
7. 知乎推薦頁 Ranking 模型
上圖是知乎在推薦場景下使用的多目標模型,預測的任務包括點擊率、收藏率、點贊率、評論率等,共 8 個目標??梢钥闯鲋醯淖龇ㄒ彩堑讓?embedding 和 DNN 前幾層權重設置成共享。損失函數可設置成這幾個 task 的簡單線性加權和。上線后線上性能:點擊率基本不變,而其他的幾個指標,比如點贊,收藏大幅提升。
8. 美圖推薦排序多任務
模型結構:
如上圖,Multi-task NFwFM 模型的前幾個隱層是共享的。在最后即將預估多個目標時通過全連接層進行拆分,各自學習對應任務的參數,從而專注地擬合各自任務。在線上預估時,因為模型尺寸沒有變化,推理效率和線上的點擊率預估模型一致。考慮到我們是在點擊率任務的基礎上同時優化關注轉化率,融合公式上體現為優先按照點擊率排序再按照曝光→關注的轉化率排序。Multi-task NFwFM 已在美圖秀秀社區首頁 Feeds 推薦、相關推薦下滑流全量上線。首頁 Feeds 點擊率+1.93%,關注轉化率+2.90%,相關推薦下滑流人均瀏覽時長+10.33%,關注轉化率+9.30%。
9. 小結
當我們在推薦場景需要同時優化多個目標時,多任務學習就可以派上用場。那反過來思考一個問題,在什么樣的情況下,多任務學習會沒效果呢?其實也很容易想到,當多個任務的相關性沒那么強時,這些任務之間就會相互擾亂,從而影響最后的效果。
最后總結下現在多任務學習模型的主要使用方式:
??底層 embedding 和 mlp 參數共享,上層演化出各個任務的分支,最后 loss 函數是各個任務的簡單加權和。
??通過多任務之間的關系來建模出新的 loss 函數,比如阿里的 ESSM,ESSM2。
??通過 Multi-gate Mixture-of-Experts ( MMoE ) 這種特殊的多任務結構來學習出不同任務的權重,比如 YouTube 的多任務模型。
參考鏈接:
https://arxiv.org/pdf/1804.07931.pdf
https://www.jianshu.com/p/35f00299c059
https://arxiv.org/pdf/1805.10727.pdf
https://www.jianshu.com/p/aba30d1726ae
https://tech.meituan.com/2018/03/29/recommend-dnn.html
https://zhuanlan.zhihu.com/p/70940522
https://arxiv.org/abs/1910.07099
https://www.jianshu.com/p/c06e9ed08dd1
https://www.jianshu.com/p/2f3dbbfc16a6
https://zhuanlan.zhihu.com/p/89401911
知乎推薦頁 Ranking
原文鏈接:
https://zhuanlan.zhihu.com/p/78762586
https://zhuanlan.zhihu.com/p/91285359
總結
以上是生活随笔為你收集整理的多任务学习在推荐算法中的应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 搜索推荐中的召回匹配模型综述(二):基于
- 下一篇: 胆囊炎能不能吃西红柿