推荐系统中如何做多目标优化
在做推薦系統(tǒng)的過程中,我們希望同時優(yōu)化多個業(yè)務(wù)目標。比如電商場景中,希望能夠在優(yōu)化GMV的基礎(chǔ)上提高點擊率,從而提高用戶的粘性;在信息流場景中,希望提高用戶點擊率的基礎(chǔ)上提高用戶關(guān)注,點贊,評論等行為,營造更好的社區(qū)氛圍從而提高留存。因此推薦系統(tǒng)做到后期,往往會向多目標方向演化,承擔起更多的業(yè)務(wù)目標。下面就介紹幾種多目標相關(guān)的算法。其中有些是筆者實踐過取得了線上的收益,有些是最新的論文中提出的新的解決方案,文章沒有公式,易于理解,拿出來和大家一起討論。
A. 通過sample weight進行多目標優(yōu)化
該方法是多目標的0.1版本,是rank主模型上的微調(diào),以實現(xiàn)多目標。這里以信息流場景為例,我們的主目標是feed的點擊率,用戶在feed上的任何點擊行為都被認為是正反饋。與此同時,在feed中的點贊功能是我們希望boost的功能。此時點擊和點贊都是正樣本(點贊本身也是一種點擊行為),但是點贊的樣本可以設(shè)置更高的sample weight。模型訓練在計算梯度更新參數(shù)時,梯度要乘以權(quán)重,對sample weight大的樣本給予更大的權(quán)重。直觀理解,對于sample weight大的樣本,如果預(yù)測錯誤就會帶來更大的損失。通過這種方法能夠在優(yōu)化某個目標(點擊率)的基礎(chǔ)上,優(yōu)化其他目標(點贊率)。實際AB測試會發(fā)現(xiàn),這樣的方法,目標A會受到一定的損失換取目標B的增長。通過線上AB測試和sample weight調(diào)整的聯(lián)動,可以保證在可接受的A目標損失下,優(yōu)化目標B,實現(xiàn)初級的多目標優(yōu)化。
- 優(yōu)點:
- 模型簡單,僅在訓練時通過梯度上乘sample weight實現(xiàn)對某些目標的boost或者decay
- 帶有sample weight的模型和線上的base模型完全相同,不需要架構(gòu)的額外支持,可以作為多目標的第一個模型嘗試。
- 缺點:
- 本質(zhì)上并不是對多目標的建模,而是將不同的目標折算成同一個目標。相關(guān)的折算可能需要多次AB測試才能確定。此處有點難理解,設(shè)置sample weight,本質(zhì)上是用base樣本去度量其他樣本。比如認為一個點贊算兩次點擊。比如在視頻中停留了5min是等價于2次對視頻的點擊行為等。
- 從原理上講無法達到最優(yōu),多目標問題本質(zhì)上是一個帕累托尋找有效解的過程。有很多文章給出多目標的數(shù)學建模,如[1]。我們后續(xù)從這些文章中給出更詳細的證明。
B. 多個模型 stacking
這個思路是也是很直接的。我們有多個優(yōu)化的目標,每個優(yōu)化的目標都有一個獨立的模型來優(yōu)化。可以根據(jù)優(yōu)化目標的不同,采用更匹配的模型。如視頻信息流場景中,我們用分類模型優(yōu)化點擊率,用回歸模型優(yōu)化停留時長。不同的模型得到預(yù)測的score之后,通過一個函數(shù)將多個目標融合在一起。
最常見的是weighted sum融合多個目標,給不同的目標分配不同的權(quán)重。當然,融合的函數(shù)可以有很多,比如連乘或者指數(shù)相關(guān)的函數(shù),這里和業(yè)務(wù)場景和目標的含義強相關(guān),可以根據(jù)自己的實際場景探索。
- 優(yōu)點:
- 模型簡單
- 缺點:
- 線上serving部分需要有額外的時間開銷,通常我們采用并行的方式請求兩個模型進行融合。
- 多個模型之間相互獨立,不能互相利用各自訓練的部分作為先驗,容易過擬合。
C. Shared bottom NN model多個模型stacking會帶來更多的訓練參數(shù),導致模型的規(guī)模變大。這種情況在NN模型中更為常見,從而帶來過擬合的風險。因此在基于深度學習的推薦模型中,引入了shared bottom layer來加強參數(shù)共享。多個目標的模型可以聯(lián)合訓練,減小模型的參數(shù)規(guī)模,防止模型過擬合。具體模型結(jié)果如下:
但是問題也顯而易見,由于不同的任務(wù)最終預(yù)測的目標不同。而共享參數(shù)一定程度上限制了不同目標的特異性,最終訓練的效果就會打折扣。因此Shared bottom NN model能夠成功的前提,是預(yù)測的目標之間的相關(guān)性比較高。這樣參數(shù)共享層不會帶來太大的損失。在[2]中有相關(guān)的實驗證明,當任務(wù)的相關(guān)性越高,模型的loss會下降,模型的準確度才會更高。所以,在文獻[3]的中,也提出了一些任務(wù)之間相關(guān)性衡量的方法,以及如何在眾多任務(wù)中選擇合適的任務(wù)子集做多目標學習。
在參數(shù)共享中,還有一類方法是soft parameter sharing的方法。
在這個NN的場景中,通過給模型參數(shù)之間距離加正則化,鼓勵參數(shù)趨于一致,從而減小過擬合的風險,同時也為訓練樣本少的模型提供一些先驗信息。但是在實際的推薦系統(tǒng)多目標優(yōu)化中,沒有看到類似的模型結(jié)構(gòu),可能是因為線上serving的時候計算量顯著高于shared bottom NN model,且效果也不一定好。
D. MMoE?MMoE是Google的研究人員提出的一種NN模型中多目標優(yōu)化的模型結(jié)構(gòu)[2]。在Recsys 2019中,我們也發(fā)現(xiàn),Google已經(jīng)將MMoE用在Youtube中進行視頻相關(guān)推薦[4]。MMoE為每一個模型目標設(shè)置一個gate,所有的目標共享多個expert,每個expert通常是數(shù)層規(guī)模比較小的全連接層。gate用來選擇每個expert的信號占比。每個expert都有其擅長的預(yù)測方向,最后共同作用于上面的多個目標。
此處我們可以將每一個gate認為是weighted sum pooling操作。如果我們選擇將gate換成max操作。x為輸入,g(x)中分量最大值對應(yīng)的expert被唯一選中,向上傳遞信號。如果g(x)與input無關(guān),則模型退化成多個獨立的NN模型stacking,這樣就便于我們更方便理解模型的進化關(guān)系。Recsys 2019 Google的文章,是在shared bottom layer上面增加MMoE層。這樣做是為了減少模型的復雜度,降低訓練的參數(shù)數(shù)量。只不過此處的shared bottom layer層數(shù)很少,推薦系統(tǒng)中特征的輸入非常稀疏,input對應(yīng)的參數(shù)維度很大,因此先作用于淺層的shared bottom layer,有利于減小上層MMoE的模型復雜度,也減少線上serving的開銷。
先介紹這些多目標相關(guān)的優(yōu)化算法,這些算法中A,C是經(jīng)過業(yè)務(wù)驗證可行的算法,大家可以優(yōu)先嘗試。歡迎大家留言討論。
[1] Lin X, Chen H, Pei C, et al. A pareto-efficient algorithm for multiple objective optimization in e-commerce recommendation[C]//Proceedings of the 13th ACM Conference on Recommender Systems. ACM, 2019: 20-28.
[2] Ma J, Zhao Z, Yi X, et al. Modeling task relationships in multi-task learning with multi-gate mixture-of-experts[C]//Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. ACM, 2018: 1930-1939.
[3] Ruder S. An overview of multi-task learning in deep neural networks[J]. arXiv preprint arXiv:1706.05098, 2017.
[4] Zhao Z, Hong L, Wei L, et al. Recommending what video to watch next: A multitask ranking system[C]//Proceedings of the 13th ACM Conference on Recommender Systems. ACM, 2019: 43-51.
總結(jié)
以上是生活随笔為你收集整理的推荐系统中如何做多目标优化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 推荐算法三视角:矩阵,图,时间线
- 下一篇: 胆囊炎能不能吃桂圆