推薦系統(5)—— 推薦系統多目標優化(ESMM、MMOE、CGC、PLE)


1、基本思想

  目前用的較多的算法ESMM和MMOE類的算法,都是基於目標的重要性是對等或線性相關來優化的,也一定程度上仿真建模解決了業務的需求。后面會細講一下最基礎的兩個算法ESMM和MMOE,這里概括一下:

  1. ESMM:定義p(CTR)為曝光到點擊的概率,那么點擊然后購買的概率為p(CTCVR),他是定義在點擊后的樣本集上的,如果定義在曝光集上的曝轉率,則為p(CVR),從概率論角度看,很自然就知道p(CVR)=p(CTR) * p(CTCVR)。文章就是這樣算p(CVR)的。他的多目標就是CTR和CVR,兩個目標是高相關的。
  2. MMOE:從輸入到輸出從前往后:輸入特征,然后經過特征組合器增強表達,接下來接入多個專家網絡,然后接一個門控網絡,去點選各專家網絡,點選后輸出logit去分目標計算Loss訓練網絡。這個算法的核心思想就是集成學習。整個思想范疇在隨機森林里, 不過表達方式用了深層net。這樣每個專家網絡可以專注一個方向去學習表達力,門控網絡來計算每個專家網絡跟目標匹配的權重。

MMOE 模型進化過程:

(1)Shared-Bottom結構模型

  模型結構層面,底層使用經典的Shared-Bottom結構,如下圖a中所示,底層特征共享,一般分為categorical和numeric特征,前一類需要先做embedding稠密轉化,后一類直接拼接就可以,接着使用全連接層學習,整個底層為共享網絡。上層針對不同目標分別學習自己的網絡,最后輸出結果。

  模型可以表示為yk=hk(f(x))yk=hk(f(x)),其中k表示k個目標,f(x)表示底層模型,對應到圖中底層Shared-Bottom,hkhk表示第k個目標,為圖中上面兩個網絡部分。

  這樣設計的好處是模型結構簡單,參數少,問題是模型擬合能力不強,上層塔對擬合自己對應目標所需要的底層輸入沒有差異,如果上層學習兩個任務差異性比較大則效果會很差。相關性不強的任務之間的信息共享,會影響網絡的表現。負遷移(negative transfer)現象。

(2)MOE 模型

  針對上面問題就產生了下圖b的MOE模型,主要解決上面說的擬合能力不強的問題,既然單個模型擬合能力弱,那能不能使用集成學習的思想,搞多個模型學習綜合結果呢,MOE基本就是這個思路,每一個模型可以稱作一個專家模型(Expert model),然后針對每個Expert產生的結果,需要加權綜合,也就是Gate機制,給每個Expert學習出不同的權重,控制其對最終上層多個模型的影響。

  表示為yk=hk(ni=1gi·fi(x))yk=hk(∑i=1ngi·fi(x)),其中i表示第i個Expert模型,然后每個模型又一個權重gigi,其中ni=1gi=1∑i=1ngi=1。

  混合專家系統(MoE)是一種神經網絡,也屬於一種combine的模型。適用於數據集中的數據產生方式不同。混合專家系統就是將多個模型整合到一個單獨的任務中。

  不同於一般的神經網絡的是它根據數據進行分離訓練多個模型,各個模型被稱為專家,而門控模塊用於選擇使用哪個專家,模型的實際輸出為各個模型的輸出與門控模型的權重組合。各個專家模型可采用不同的函數(各種線性或非線性函數)。對於較小的數據集,該模型的表現可能不太好,但隨着數據集規模的增大,該模型的表現會有明顯的提高。  

  輸入數據是一樣的,不同專家網絡參數優化的損失是通過 gate網絡控制的,即不同目標對不同專家網絡的損失是不一樣的。

(3)MMOE 模型

  上面模型創新點其實比較大,但是依然遺留下來一個問題加入上層多目標見差異比較大,或者說是類型兩階段或多階段的多目標,則會效果比較差,MMOE給出的解決方案是,針對不同目標分別學習自己的Gate,事后想想這樣才是合理的,而且也沒有增加多少參數,如下面圖c所示。

  表示為yk=hk(ni=1gi,k·fi(x))yk=hk(∑i=1ngi,k·fi(x)),第i個Expert模型和對應的第k個目標,分別學習自己的Gate權重gi,kgi,k,其中對於每個目標ni=1gi=1∑i=1ngi=1。

  這里會涉及到Expert的數量,需要權衡模型復雜度和模型效果,找出合理的Expert數。

 

(4)CGC 模型

  多任務學習相對於多個單任務學習的模型,往往能夠提升一部分任務的效果,同時犧牲另外部分任務的效果。即使通過MMoE這種方式減輕負遷移現象,蹺蹺板現象仍然是廣泛存在的。  

  CGC 是 PLE的單層版本,最底層是每個任務特有的專家網絡以及共享專家網絡,對每一個任務,通過門控單元控制自己的專家模塊和共享模塊的輸入,得到加權輸出,最后經過簡單MLP得到單個任務的輸出。

  VCR和VTR兩個任務。VCR任務可理解為視頻完成度,這是回歸問題,並以MSE作為評估指標;VTR表示此次觀看是否是一次有效觀看,即觀看時長是否在給定的閾值之上,這是二分類問題(如果沒有觀看,樣本Label為0),並以AUC為評估指標。兩個任務之間的關系比較復雜。首先,VTR的標簽是播放動作和VCR的耦合結果,因為只有觀看時間超過閾值的播放動作才被視為有效觀看。其次,播放動作的分布更加復雜,在存在WIFI時,部分場景有自動播放機制,這些樣本就有較高的平均播放概率,而沒有自動播放且需要人為顯式點擊的場景下,視頻的平均播放概率則較低。

 

  CGC可以看作是Customized Sharing和MMoE的結合版本。每個任務有共享的Expert和獨有的Expert。對任務A來說,將Experts A里面的多個Expert的輸出以及Experts Shared里面的多個Expert的輸出,通過類似於MMoE的門控機制之后輸入到任務A的上層網絡中。

(5)PLE 模型

  PLE 是 疊加多層CGC的版本。在CGC的基礎上,Progressive Layered Extraction(以下簡稱PLE)考慮了不同的Expert之間的交互,可以看作是Customized Sharing和ML-MMOE的結合版本。與CGC網絡(PLE里的Extraction Network)不同的是:(1)在底層的Extraction網絡中,除了各個子任務的gating network外,還包含有一個share部分的gating network,這部分gating network的輸入包含了所有input,而各個子任務的gating network的輸入是task-specific和share兩部分;(2)在上層Extraction Network中input不再是原始的input向量,而是底層Extraction Network網絡各個gating network輸出結果的fusion result。

 

   在下層模塊,增加了多層Extraction Network,在每一層,共享Experts不斷吸收各自獨有的Experts之間的信息,而任務獨有的Experts則從共享Experts中吸收有用的信息。每一層的計算過程與CGC類似,這里就不再贅述。論文指出在設計損失函數時,主要是解決兩個問題,一個是多任務模型不同人物之間的樣本空間不同;另一個是不同任務之間的權重設定。

(1)解決樣本空間不一致的問題,前面我們介紹過ESMM的方式。而本文則是在Loss上進行一定的優化,文章的解決思路是訓練樣本空間為全部任務的樣本空間的並集,而針對每個任務計算loss時,只考慮這個任務的樣本空間:

(2) 傳統方法是人工設定一個固定的權重比例,這個需要人工來進行調整,文章給出的思路就是一種自適應動態調節的方案,在訓練過程中調整不同任務之間的權重。

  1. CGC里VTR和VCR的expert權重有着顯著不同,而MMoE中幾乎相似,這也表明CGC效果優於MMoE;
  2. MMoE和ML-MMoE所有的expert權重幾乎不為0,這也表明:沒有先驗知識的情況下,MMOE and ML-MMOE很難收斂到CGC和PLE的結構,即便理論上存在可能性;
  3. 與CGC相比,PLE的shared experts對Tower有更大的影響,尤其是在VTR任務中。PLE性能優於CGC,這表明共享更高級的更深層表示的價值。換句話說,為了在任務之間共享某些更深的語義表示,PLE提供了更好的聯合路由和學習方案。

2、聯系&區別

(1)MMOE一個模型有幾個Loss?他跟多標簽分類學習有什么區別?既然是多目標,多個專家網絡,直接多個模型不是更好的解決問題嗎? 
     搞清這些問題,需要從多目標優化的業務需求和真實數據場景講起。所謂的多目標優化,是指真實業務場景中,一次排序展示,需要得到多個結果。例如電商的相關推薦,希望一次推薦排序好的商品,既能讓用戶點擊,也能讓用戶下單,甚至還能讓用戶滿意(好評)。又如一次新聞(視頻)推薦,如果光考慮點擊,可能一些獵奇的標題黨更搶流量;我們希望點擊,希望用戶瀏覽時間長;並且還希望用戶喜歡這個內容,轉發或者收藏就更牛了。     

  理解了這個點,就不會考慮多個目標用多個模型了,首先,線上實時排序,不可能多個模型部署,這樣耗時太高;其次訓練管理多個模型的數據集,也是在工業界的最大成本。大數據集存儲多份,不合適。當然,最重要的不是這個,而是核心的算法精度訴求:多個模型,每個模型預測一個值,拿來綜合排序,由於每個模型是單獨訓練的,因而他們的排序序列是互斥的,容易顧此失彼,專注點擊的模型+專注轉化的模型<max(CTR,CVR)是有可能存在的。即1+1< 大1,因此,多目標優化就是要解決這個顧此失彼的問題,讓一個模型成為多面手。     跟多標簽學習的關系:其實本質是相同的,只是多標簽學習更多是分類,多目標學習你可以是分類,也可以是回歸。      

  MMOE的loss個數,就跟目標個數是一樣的,然后加一起訓練。

  論文指出:一般的多任務模型結構如上圖(a)所示,即對於不同的任務,底層的參數和網絡結構是共享的,然后上層經過不同的神經網絡得到對應任務的輸出,缺點是模型的效果取決於任務的相關性,如果多任務之間關聯較小,采用這種結構甚至會出現互相拖后腿的情況。Multi-gate Mixture-of-Experts模型為每個task設置一個gate,使不同的任務和不同的數據可以多樣化的使用共享層。每個任務的共享層輸出是不同的。

  因此本論文提出了基於圖(b)的OMOE和圖(c)的MMOE兩種結構,主要思路是每個任務有一個獨立的expert中間網絡,類似於“開關”的功能,通過模型學習,不同的任務可以從相同的底層embedding中提取到側重點不同的特征,而不是完全共享底層,即達到了“各取所需”的效果,有點類似於上面提到的attention網絡。

  之后每個任務接各自的tower模型,得到logit,再和label一起計算loss,然后多目標的loss直接可以用類似weighted sum的方式結合起來組成總的loss。

(2)這兩個方法有什么異同?

  我現在既要點擊好,又要轉化多,還要成交金額高,怎么選?我如果就CTR和CVR兩個目標,哪個方法效果更好?           

  MMOE在ESSM之后出來,本質解決的問題是ESSM解決不了的問題,就是現在這個需求:三個目標怎么學。ESSM是學CTR和CVR的,CTR和CVR是緊相連的,但GMV不太一樣,跟商品單價相關,跟買家下單量有關。跟CTR和CVR的相關性有但小不少。           

  因此,如果目標相差迥異,只能用MMOE,ESSM是專門解決CTR和CVR兩個目標聯合訓練的。這個是他們兩個方法的核心不同點。           

  如果你的目標就是CTR和CVR,那么MMOE訓練CVR時,是會出現欠擬合的,因為他沒有共享模型參數,因此,這個時候ESSM比MMOE效果好不少。

 

參考文獻:

(1)esmm模型詳解:https://imzhanghao.com/2020/11/06/alimama-cvr-esmm/

(2)PLE 論文解析

(3)漫談深度學習時代點擊率預估技術進展:https://zhuanlan.zhihu.com/p/54822778

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM