推荐系统(5)—— 推荐系统多目标优化(ESMM、MMOE、CGC、PLE)
1、基本思想
目前用的較多的算法ESMM和MMOE類的算法,都是基于目標的重要性是對等或線性相關(guān)來優(yōu)化的,也一定程度上仿真建模解決了業(yè)務的需求。后面會細講一下最基礎的兩個算法ESMM和MMOE,這里概括一下:
ESMM:定義p(CTR)為曝光到點擊的概率,那么點擊然后購買的概率為p(CTCVR),他是定義在點擊后的樣本集上的,如果定義在曝光集上的曝轉(zhuǎn)率,則為p(CVR),從概率論角度看,很自然就知道p(CVR)=p(CTR) * p(CTCVR)。文章就是這樣算p(CVR)的。他的多目標就是CTR和CVR,兩個目標是高相關(guān)的。
MMOE:從輸入到輸出從前往后:輸入特征,然后經(jīng)過特征組合器增強表達,接下來接入多個專家網(wǎng)絡,然后接一個門控網(wǎng)絡,去點選各專家網(wǎng)絡,點選后輸出logit去分目標計算Loss訓練網(wǎng)絡。這個算法的核心思想就是集成學習。整個思想范疇在隨機森林里, 不過表達方式用了深層net。這樣每個專家網(wǎng)絡可以專注一個方向去學習表達力,門控網(wǎng)絡來計算每個專家網(wǎng)絡跟目標匹配的權(quán)重。
MMOE 模型進化過程:
(1)Shared-Bottom結(jié)構(gòu)模型
模型結(jié)構(gòu)層面,底層使用經(jīng)典的Shared-Bottom結(jié)構(gòu),如下圖a中所示,底層特征共享,一般分為categorical和numeric特征,前一類需要先做embedding稠密轉(zhuǎn)化,后一類直接拼接就可以,接著使用全連接層學習,整個底層為共享網(wǎng)絡。上層針對不同目標分別學習自己的網(wǎng)絡,最后輸出結(jié)果。
模型可以表示為yk=hk(f(x))yk=hk(f(x)),其中k表示k個目標,f(x)表示底層模型,對應到圖中底層Shared-Bottom,hkhk表示第k個目標,為圖中上面兩個網(wǎng)絡部分。
這樣設計的好處是模型結(jié)構(gòu)簡單,參數(shù)少,問題是模型擬合能力不強,上層塔對擬合自己對應目標所需要的底層輸入沒有差異,如果上層學習兩個任務差異性比較大則效果會很差。相關(guān)性不強的任務之間的信息共享,會影響網(wǎng)絡的表現(xiàn)。負遷移(negative transfer)現(xiàn)象。
(2)MOE 模型
針對上面問題就產(chǎn)生了下圖b的MOE模型,主要解決上面說的擬合能力不強的問題,既然單個模型擬合能力弱,那能不能使用集成學習的思想,搞多個模型學習綜合結(jié)果呢,MOE基本就是這個思路,每一個模型可以稱作一個專家模型(Expert model),然后針對每個Expert產(chǎn)生的結(jié)果,需要加權(quán)綜合,也就是Gate機制,給每個Expert學習出不同的權(quán)重,控制其對最終上層多個模型的影響。
表示為yk=hk(∑ni=1gi·fi(x))yk=hk(∑i=1ngi·fi(x)),其中i表示第i個Expert模型,然后每個模型又一個權(quán)重gigi,其中∑ni=1gi=1∑i=1ngi=1。
混合專家系統(tǒng)(MoE)是一種神經(jīng)網(wǎng)絡,也屬于一種combine的模型。適用于數(shù)據(jù)集中的數(shù)據(jù)產(chǎn)生方式不同。混合專家系統(tǒng)就是將多個模型整合到一個單獨的任務中。
不同于一般的神經(jīng)網(wǎng)絡的是它根據(jù)數(shù)據(jù)進行分離訓練多個模型,各個模型被稱為專家,而門控模塊用于選擇使用哪個專家,模型的實際輸出為各個模型的輸出與門控模型的權(quán)重組合。各個專家模型可采用不同的函數(shù)(各種線性或非線性函數(shù))。對于較小的數(shù)據(jù)集,該模型的表現(xiàn)可能不太好,但隨著數(shù)據(jù)集規(guī)模的增大,該模型的表現(xiàn)會有明顯的提高。
輸入數(shù)據(jù)是一樣的,不同專家網(wǎng)絡參數(shù)優(yōu)化的損失是通過 gate網(wǎng)絡控制的,即不同目標對不同專家網(wǎng)絡的損失是不一樣的。
(3)MMOE 模型
上面模型創(chuàng)新點其實比較大,但是依然遺留下來一個問題加入上層多目標見差異比較大,或者說是類型兩階段或多階段的多目標,則會效果比較差,MMOE給出的解決方案是,針對不同目標分別學習自己的Gate,事后想想這樣才是合理的,而且也沒有增加多少參數(shù),如下面圖c所示。
表示為yk=hk(∑ni=1gi,k·fi(x))yk=hk(∑i=1ngi,k·fi(x)),第i個Expert模型和對應的第k個目標,分別學習自己的Gate權(quán)重gi,kgi,k,其中對于每個目標∑ni=1gi=1∑i=1ngi=1。
這里會涉及到Expert的數(shù)量,需要權(quán)衡模型復雜度和模型效果,找出合理的Expert數(shù)。
(4)CGC 模型
多任務學習相對于多個單任務學習的模型,往往能夠提升一部分任務的效果,同時犧牲另外部分任務的效果。即使通過MMoE這種方式減輕負遷移現(xiàn)象,蹺蹺板現(xiàn)象仍然是廣泛存在的。
CGC 是 PLE的單層版本,最底層是每個任務特有的專家網(wǎng)絡以及共享專家網(wǎng)絡,對每一個任務,通過門控單元控制自己的專家模塊和共享模塊的輸入,得到加權(quán)輸出,最后經(jīng)過簡單MLP得到單個任務的輸出。
VCR和VTR兩個任務。VCR任務可理解為視頻完成度,這是回歸問題,并以MSE作為評估指標;VTR表示此次觀看是否是一次有效觀看,即觀看時長是否在給定的閾值之上,這是二分類問題(如果沒有觀看,樣本Label為0),并以AUC為評估指標。兩個任務之間的關(guān)系比較復雜。首先,VTR的標簽是播放動作和VCR的耦合結(jié)果,因為只有觀看時間超過閾值的播放動作才被視為有效觀看。其次,播放動作的分布更加復雜,在存在WIFI時,部分場景有自動播放機制,這些樣本就有較高的平均播放概率,而沒有自動播放且需要人為顯式點擊的場景下,視頻的平均播放概率則較低。
CGC可以看作是Customized Sharing和MMoE的結(jié)合版本。每個任務有共享的Expert和獨有的Expert。對任務A來說,將Experts A里面的多個Expert的輸出以及Experts Shared里面的多個Expert的輸出,通過類似于MMoE的門控機制之后輸入到任務A的上層網(wǎng)絡中。
(5)PLE 模型
PLE 是 疊加多層CGC的版本。在CGC的基礎上,Progressive Layered Extraction(以下簡稱PLE)考慮了不同的Expert之間的交互,可以看作是Customized Sharing和ML-MMOE的結(jié)合版本。與CGC網(wǎng)絡(PLE里的Extraction Network)不同的是:(1)在底層的Extraction網(wǎng)絡中,除了各個子任務的gating network外,還包含有一個share部分的gating network,這部分gating network的輸入包含了所有input,而各個子任務的gating network的輸入是task-specific和share兩部分;(2)在上層Extraction Network中input不再是原始的input向量,而是底層Extraction Network網(wǎng)絡各個gating network輸出結(jié)果的fusion result。
在下層模塊,增加了多層Extraction Network,在每一層,共享Experts不斷吸收各自獨有的Experts之間的信息,而任務獨有的Experts則從共享Experts中吸收有用的信息。每一層的計算過程與CGC類似,這里就不再贅述。論文指出在設計損失函數(shù)時,主要是解決兩個問題,一個是多任務模型不同人物之間的樣本空間不同;另一個是不同任務之間的權(quán)重設定。
(1)解決樣本空間不一致的問題,前面我們介紹過ESMM的方式。而本文則是在Loss上進行一定的優(yōu)化,文章的解決思路是訓練樣本空間為全部任務的樣本空間的并集,而針對每個任務計算loss時,只考慮這個任務的樣本空間:
(2)傳統(tǒng)方法是人工設定一個固定的權(quán)重比例,這個需要人工來進行調(diào)整,文章給出的思路就是一種自適應動態(tài)調(diào)節(jié)的方案,在訓練過程中調(diào)整不同任務之間的權(quán)重。
CGC里VTR和VCR的expert權(quán)重有著顯著不同,而MMoE中幾乎相似,這也表明CGC效果優(yōu)于MMoE;
MMoE和ML-MMoE所有的expert權(quán)重幾乎不為0,這也表明:沒有先驗知識的情況下,MMOE and ML-MMOE很難收斂到CGC和PLE的結(jié)構(gòu),即便理論上存在可能性;
與CGC相比,PLE的shared experts對Tower有更大的影響,尤其是在VTR任務中。PLE性能優(yōu)于CGC,這表明共享更高級的更深層表示的價值。換句話說,為了在任務之間共享某些更深的語義表示,PLE提供了更好的聯(lián)合路由和學習方案。
2、聯(lián)系&區(qū)別
(1)MMOE一個模型有幾個Loss?他跟多標簽分類學習有什么區(qū)別?既然是多目標,多個專家網(wǎng)絡,直接多個模型不是更好的解決問題嗎?
搞清這些問題,需要從多目標優(yōu)化的業(yè)務需求和真實數(shù)據(jù)場景講起。所謂的多目標優(yōu)化,是指真實業(yè)務場景中,一次排序展示,需要得到多個結(jié)果。例如電商的相關(guān)推薦,希望一次推薦排序好的商品,既能讓用戶點擊,也能讓用戶下單,甚至還能讓用戶滿意(好評)。又如一次新聞(視頻)推薦,如果光考慮點擊,可能一些獵奇的標題黨更搶流量;我們希望點擊,希望用戶瀏覽時間長;并且還希望用戶喜歡這個內(nèi)容,轉(zhuǎn)發(fā)或者收藏就更牛了。
理解了這個點,就不會考慮多個目標用多個模型了,首先,線上實時排序,不可能多個模型部署,這樣耗時太高;其次訓練管理多個模型的數(shù)據(jù)集,也是在工業(yè)界的最大成本。大數(shù)據(jù)集存儲多份,不合適。當然,最重要的不是這個,而是核心的算法精度訴求:多個模型,每個模型預測一個值,拿來綜合排序,由于每個模型是單獨訓練的,因而他們的排序序列是互斥的,容易顧此失彼,專注點擊的模型+專注轉(zhuǎn)化的模型<max(CTR,CVR)是有可能存在的。即1+1< 大1,因此,多目標優(yōu)化就是要解決這個顧此失彼的問題,讓一個模型成為多面手。跟多標簽學習的關(guān)系:其實本質(zhì)是相同的,只是多標簽學習更多是分類,多目標學習你可以是分類,也可以是回歸。
MMOE的loss個數(shù),就跟目標個數(shù)是一樣的,然后加一起訓練。
論文指出:一般的多任務模型結(jié)構(gòu)如上圖(a)所示,即對于不同的任務,底層的參數(shù)和網(wǎng)絡結(jié)構(gòu)是共享的,然后上層經(jīng)過不同的神經(jīng)網(wǎng)絡得到對應任務的輸出,缺點是模型的效果取決于任務的相關(guān)性,如果多任務之間關(guān)聯(lián)較小,采用這種結(jié)構(gòu)甚至會出現(xiàn)互相拖后腿的情況。Multi-gate Mixture-of-Experts模型為每個task設置一個gate,使不同的任務和不同的數(shù)據(jù)可以多樣化的使用共享層。每個任務的共享層輸出是不同的。
因此本論文提出了基于圖(b)的OMOE和圖(c)的MMOE兩種結(jié)構(gòu),主要思路是每個任務有一個獨立的expert中間網(wǎng)絡,類似于“開關(guān)”的功能,通過模型學習,不同的任務可以從相同的底層embedding中提取到側(cè)重點不同的特征,而不是完全共享底層,即達到了“各取所需”的效果,有點類似于上面提到的attention網(wǎng)絡。
之后每個任務接各自的tower模型,得到logit,再和label一起計算loss,然后多目標的loss直接可以用類似weighted sum的方式結(jié)合起來組成總的loss。
(2)這兩個方法有什么異同?
我現(xiàn)在既要點擊好,又要轉(zhuǎn)化多,還要成交金額高,怎么選?我如果就CTR和CVR兩個目標,哪個方法效果更好?
MMOE在ESSM之后出來,本質(zhì)解決的問題是ESSM解決不了的問題,就是現(xiàn)在這個需求:三個目標怎么學。ESSM是學CTR和CVR的,CTR和CVR是緊相連的,但GMV不太一樣,跟商品單價相關(guān),跟買家下單量有關(guān)。跟CTR和CVR的相關(guān)性有但小不少。
因此,如果目標相差迥異,只能用MMOE,ESSM是專門解決CTR和CVR兩個目標聯(lián)合訓練的。這個是他們兩個方法的核心不同點。
如果你的目標就是CTR和CVR,那么MMOE訓練CVR時,是會出現(xiàn)欠擬合的,因為他沒有共享模型參數(shù),因此,這個時候ESSM比MMOE效果好不少。
參考文獻:
(1)esmm模型詳解:https://imzhanghao.com/2020/11/06/alimama-cvr-esmm/
(2)PLE 論文解析
(3)漫談深度學習時代點擊率預估技術(shù)進展:https://zhuanlan.zhihu.com/p/54822778
總結(jié)
以上是生活随笔為你收集整理的推荐系统(5)—— 推荐系统多目标优化(ESMM、MMOE、CGC、PLE)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在Linux系统中如何把文件拷贝到U盘
- 下一篇: 怎么创建具有真实纹理的CG场景岩石?