多任務多目標CTR預估技術


簡介: 多目標(Multi Objective Learning)是MTL中的一種。在業務場景中,經常面臨既要又要的多目標問題。而多個目標常常會有沖突。如何使多個目標同時得到提升,是多任務多目標在真實業務場景中存在的意義。

image.png

作者 | 志陽、文靜

來源 | 阿里技術公眾號

一 背景

1 多任務多目標學習

多任務(Multi Task Learning)是深度學習時代非常普遍的建模方式。在NLP、CV、CTR諸多領域有非常廣泛的應用。

多目標(Multi Objective Learning)是MTL中的一種。在業務場景中,經常面臨既要又要的多目標問題。而多個目標常常會有沖突。如何使多個目標同時得到提升,是多任務多目標在真實業務場景中存在的意義。如下圖,視頻推薦任務,既要點擊率又要完播率;電商排序,既要點擊率又要轉化率。如今,CTR預估領域采用多任務多目標是非常主流的建模方式。值得我們深入研究。

image.png

首先來厘清一些名詞概念。如下圖,解釋了Multi-Task 與 Multi-Label等相關概念的關系。

Multi-Task learning:多任務學習建模多個任務之間的關聯關系,任務輸入可以是不同的feature/sample,如BERT的MLM預訓練任務與NSP任務,兩個任務先后訓練,輸入是不同的feature和sample。這是Multi-Input & Multi-Output (MIMO) 的類型,常用的訓練模式是pre-train+finetuning 和 多任務co-train交替訓練。

Multi-Label learning:還有一種是Single-Input & Multi-Output (SIMO) ,就是非常常見的Multi-Label Learning,建模相同feature、相同Sample上多個label之間的關系。也常稱之為多目標Multi-Objective。如CV領域中,對同一image,可以同時對semantic classification,depth regression,instance regression等諸多經典任務目標共同學習。CTR領域,對同一輸入樣本同時預估點擊率、轉化率多個目標。常用的訓練模式是Joint-train的模式,形式化地表達如下:

image.png

其中\theta^{sh}是多任務共享參數,\theta^{t}是任務t 的獨享參數,Joint-train的總Loss是各個子任務對應Loss的帶權求和。本文后面稱的多任務多目標學習,默認是這種建模方式。

image.png

2 優勢&挑戰

多目標共同學習的結果,有4種狀態,如下示意圖。“well done”: 最好的狀態,所有share任務實現共同提升。“還不錯”:其次的狀態,所有任務不降低,至少一個任務提升。如果是主任務 + 輔助任務的搭配,能夠實現犧牲輔助任務達到主任務提升的效果,也是well done。“不理想”:蹺蹺板現象,任務有漲有跌。“無法接受”:負遷移現象,所有任務都不如從前。

多任務多目標學習的優勢:有潛力做到“還不錯”和“well done”。

多任務多目標學習的挑戰:

(1)如何把“無法接受”和“不理想”兩個狀態往“還不錯”和“well done”遷移;

(2)最大限度激發“還不錯”和“well done”的效果;

image.png

共享參數!1 + 1 > 2 【還不錯/well done】

共享參數在效果 + 性能層面帶來很多優勢。效果層面,多任務的優勢通過隱式數據增強達到。多個相關任務共同學習,參數共享,相互借鑒,緩解某些任務的樣本稀疏帶來的過擬合現象,獲得更好的泛化性能。在性能層面,多任務較N個單任務網絡參數量總和顯著降低,在實時預測場景下MTL模型效率也更高。

共享參數! 1 + 1 < 1 【無法接受/不理想】

多任務多目標為了實現 1+1>2,在任務參數空間上設置了假設,例如:任務參數應該彼此靠近,w.r.t.一些距離度量,共享一個共同的概率先驗,或駐留在一個低維子空間或流形。當所有任務都是相關的時候,這些假設可以很好地工作,但是如果在不相關的任務之間發生信息共享,則大概率導致效果下降,出現蹺蹺板、負遷移現象。

因此,引出了領域研究的核心問題:如何能夠利用好“共享參數”,讓多個任務和諧共存、相輔相成、相得益彰?

二 多任務多目標方案概覽

研究上述核心問題,有兩個方向,一個是Architectures,一個是Optimization Strategy,如下圖所示。

Architectures從網絡結構設計方向思考哪些參數共享,在什么位置,如何共享。

Optimization Strategy多目標優化策略從loss、Gradient的視角去思考任務與任務之間的關系。平衡loss體量(Magnitude),調節loss更新速度(velocity),優化Gradient更新方向(direction)。在微觀層面緩解梯度沖突,參數撕扯,在宏觀層面達到多任務的balance。

image.png

1 多任務多目標網絡結構設計

Architectures從網絡結構設計方向思考哪些參數共享,在什么位置,如何共享。合理的共享網絡結構設計對於效果提升有舉足輕重的作用。至今,多任務的研究焦點依然在於如何結合任務來設計共享結構。本文主要介紹CTR領域的多任務結構。如上圖,較為常見的結構有Share-Bottom【hard】,無需贅述。2018年google提出MMOE,將hard的參數共享變成多個expert,通過門控來控制不同loss對每個expert的影響,2019年google提出SNR,借助簡單的 NAS(Neural Architecture Search),對 Sub-Network 進行組合,為不同目標學習各自的網絡結構。2020年tencent提出PLE,在MMOE的基礎上增加了各任務獨有的Expert。

如下圖,是Share Bottom、MMoE、PLE的網絡結構和簡單說明,細節不展開。

  • Shared Bottom->MMoE:MMoE將shared bottom分解成多個Expert,然后通過門控網絡自動控制不同任務對這些Expert的梯度貢獻。
  • MMoE->PLE:PLE在MMoE的基礎上又為每個任務增加了自有的Expert,僅由本任務對其梯度更新。

image.png

演進是朝着一個更加靈活的參數共享方向,思考為什么這樣的演進可以帶來效果的提升?我們常看到效果提升對解釋是:不同的expert負責學習不同的信息內容,然后通過gate來組合這些信息,通過不同任務gate的softmax的熱力分布差異,來表明expert對不同的目標各司其責,從而提升了效果。如果將視角從宏觀切換到微觀,從“更加靈活的參數共享”這個角度來看,MMoE對參數使用了“化整為零”的策略,PLE則是“化整為零+各有所得”。

如下圖,更加形象地理解,在Share Bottom的結構上,整個共享參數矩陣如同質量較大的物體,在梯度更新的環節,兩個loss反向計算的梯度向量分別是g1和g2,是這個物體收到的兩個不同方向不同大小的力,這兩個力同時來挪動這個物體的位置,如果在多次更新中兩個力大概率方向一致,那么就能輕松達到和諧共存、相輔相成。反之,多個力可能出現彼此消耗、相互抵消,那么任務效果就會大打折扣。在這樣的背景下,使得“如何選取設計多個任務,考慮任務之間相關性”成為Share-Bottom MTL能夠取得成功的關鍵因素。

MMoE做了一個聰明的事情,“化整為零”。把一個共享參數矩陣化成多個結合gate的共享Expert,這樣不同的loss在存在相互沖突的時候,在不同的expert上,不同loss可以有相對強弱的表達,那么出現相互抵消的情況就可能減少,呈現出部分experts受某task影響較大,部分experts受其他task主導,這種“各有所得”的狀態。但是MMoE並不保證“各有所得”,PLE增加了spcific experts,保障“各有所得”,能夠在“共享參數”的撕扯爭奪上,有了最基礎的保障。

image.png

在我們自己的數據集上,做了一個簡單對比。3個預估目標,CTR、CVR、R3。Share-Bottom出現了翹翹板現象,但是PLE能夠實現多目標的共贏現象,下表展示了模對於single task的相對提升。

image.png

未來,CTR領域多任務多目標的升級,我認為依然會朝着“更加靈活的參數共享”來提升效果。“化整為零”的方式更加靈活(例如,根據任務任務之間的相似性來動態決定共享參數的多和少,相似的任務多share一些,不太相似的任務少share一些),“個有所得”的途徑更加多樣(例如,從expert視角來動態確定當前時刻受哪個task主導)。

2 多任務多目標優化策略

Optimization Strategy多目標優化策略從loss、Gradient的視角去思考任務與任務之間的關系。在微觀層面緩解梯度沖突,參數撕扯,在宏觀層面達到多任務的balance。如下表列出了目前常見的方法【后文會詳細介紹其中幾種方法的原理和推導】。

image.png

我們對相關文獻的調研總結后,認為多任務多目標優化策略主要focus在三個問題:

Magnitude(Loss量級):Loss值有大有小,出現取值大的Loss主導的現象,怎么辦?

image.png

 

image.png

Velocity (Loss學習速度): 任務有難有易,Loss學習速度有快有慢,怎么辦?

image.png

不同任務因為樣本的稀疏性、學習的難度,在學習過程中,存在學習速度不一樣的情況。不加以調整,可能會出現某個任務接近收斂甚至過擬合的時候,其他任務還是欠擬合的狀態。

Direction(Loss梯度沖突):多個Loss的反向梯度,更新方向沖突,出現翹翹板、負遷移現象,怎么辦?

image.png

不同Loss對共享參數W_{sh}進行更新, 梯度有大小、方向,相同參數被多個梯度同時更新的時候,可能會出現沖突,導致相互消耗抵消。就會出現蹺蹺板、甚至負遷移現象。

image.png

后文,將分別從網絡結構和優化策略兩個方向,抽一些文章來分享一下。

三 多任務多目標網絡結構

MMoE:Google KDD 2018,提出后就成為了CTR領域MTL的標配。

這個文章中,有一個非常有意思的做法:人工控制兩個任務的相似度,然后觀測不同網絡結構在不同任務相似度的表現效果。得出一個結論:MMoE在多任務之間的的相關性( relatedness )比較低的時候,效果也能很不錯。

如下圖,首先OMoE 和 MMoE的效果都是明顯好於Baseline,表明化整為零的Experts對效果提升有非常重要的作用。近一步,如果任務相關度非常高(Correlation = 1.0),則OMoE和MMoE的效果近似,但是如果任務相關度很低(Correlation = 0.5),則OMoE的效果相對於MMoE明顯下降,說明MMoE中的Multi-gate的結構對於任務差異帶來的沖突有一定的緩解作用。

image.png

SNR:Google AAAI 2019,對MMoE的改進,但沒有找到官方開源,目前follow的相關工作不多。

這個文章的思路與網絡自動搜索(NAS)接近。多任務各自采用哪些sub-network,動態學習出來。可見的收益主要寄希望於能夠自動學習出來相似任務能夠共享多一些。

image.png

PLE :Tencent RecSys 2020, 對MMoE的改進,結構簡潔,效果顯著。

在MMoE的基礎上,為每個任務增加了自己的specific expert,上文中已經解釋了為什么specific expert為什么有效。看下圖右上角的子圖,PLE是唯一做到多任務共贏“well done”。MMoE是唯一做到“還不錯”【一平一漲】。其余方法是蹺蹺板現象。Hard Sharing是負遷移。觀察在不同相似度的多任務上,PLE都表現優秀。

image.png

四 多任務多目標優化策略

1 UncertaintyWeight

文章:《Multi-task learning using uncertainty to weigh losses for scene geometry and semantics》
這個文章估計是多目標Loss優化策略中,最常被提及的方法。但是目前在我們的任務上,沒有取得明顯的效果【ps. 據大多數使用過的同學反饋,都是沒啥效果的】。
文章希望直接建模單個任務中的uncertainty,然后通過uncertainty來指導權重的調節。

 

image.png

 

image.png

經驗tips:loss大->uncertainty多->權重小,loss小->uncertainty少->權重大。這個在我們自己的實驗中也得到了驗證,甚至會出現loss小的那個任務的權重是其他loss大的任務的權重的幾十倍情況(如CTR、CVR、Pay目標建模的時候,Pay的loss量級最小,這個方法給了Pay目標非常大的權重,導致很快出現過擬合。)而且因為后面log項的存在,會使總的loss可能出現為負的情況。如果你的多任務設計,需要使用這個屬性:loss大->uncertainty多->權重小,loss小->uncertainty少->權重大,那么這個方法可以嘗試套用一下(我們也嘗試過分類 + 回歸的多任務,回歸任務Loss大,UncertaintyWeight給予小權重,整體效果正向)。

2 GradNorm

image.png

3 DWA

文章:《End-to-End Multi-Task Learning with Attention》

定義了一個指標來衡量任務學習的快慢,然后來指導調節任務的權重。

image.png

用這一輪loss除以上一輪loss,這樣可以得到這個任務loss的下降情況用來衡量任務的學習速度,然后直接進行歸一化得到任務的權重。當一個任務loss比其他任務下降的慢時,這個任務的權重就會增加,下降的快時權重就會減小。是只考慮了任務下降速度的簡化版的Gradient normalization,簡單直接。

經驗tips:對最終能夠達到的收斂狀態,沒有啥影響。

4 PE-LTR

文章:《A Pareto-Efficient Algorithm for Multiple Objective Optimization in E-Commerce Recommendation》

淘系主搜2019年的文章。首先需要白話一下問題建模。多任務的loss公式是可以建模為了多目標優化的,也就是優化可能沖突的目標的集合。

image.png

 

 

image.png

滿足這些條件的solution,被稱之為一個 Pareto Stationary Point【所有帕累托最優都是Pareto Stationary Point,但反之不一定成立】。上述優化問題,可以轉化成為

image.png

轉化后的解釋就是,找到一組w,能夠盡量平衡各任務在共享參數部分的梯度。如果優化到0,就滿足了KKT條件,沒有優化到0,也能找到一個方向是降低全局所有任務的總Loss。

image.png

image.png

新優化目標仍然是一個難解的二次規划問題。論文提出一個兩步求解算法來解這個問題。1、只考慮等式約束來放松問題,然后通過解析解來獲得松弛后問題的解。但是此時得出的解可能是不滿足不等式約束。2、投影步,從第一步獲得可行解中獲得一個滿足所有約束條件的有效解。

經驗tips:目前源碼demo是開源的,但目前並非開箱即用的狀態,我們優化適配到自己場景中,在每一輪迭代中,各個任務的w取值,頗為穩定,但目前還沒有在我們的場景中取得理想的效果。

這個方法是探索任務級別的平衡關系,求解w。WWW 2021年微信文章《Personalized Approximate Pareto-Efficient Recommendation》提出來在視頻推薦任務中不同用戶在意側重的目標(視頻點擊率 vs 視頻完播率)是不一樣的,求解的w不應該是在任務維度,而是每個用戶樣本,都應當有自己的一組w。這個出發點是有價值的,但在我們的業務中,更有價值的可能是按照人群group來得到自己的一組w,如新用戶更加注重引導點擊,老用戶更家注重引導交易,如消費品行業更加注重交易,非消行業着重引導詢盤,實現多目標共同增長。國家/行業/用戶分層等群體目標差異的優化,也是一個有意思有價值的點。

5 PCGrad & GradVac

文章:PCGrad -《Gradient Surgery for Multi-Task Learning》,GradVac - 《Gradient Vaccine: Investigating and Improving Multi-task Optimization in Massively Multilingual Models》

這兩篇文章是Google近期的研究,PCGrad投ICLR 2020被拒后,投中NIPS 2020。這個文章首次直面gradient沖突源頭。采用簡單、直接的方式做gradient調整。ICLR 2021 GradVac是PCGrad的改進,應用在多語種機器翻譯任務上。

PCGrad指出MTL多目標優化存在3個問題:1. 方向不一致,導致撕扯,需要解決;2. 量級不一致,導致大gradients主導,需要解決;3. 大曲率,導致容易過擬合,需要解決。本文以方向不一致作為切入點,打破這個問題。怎樣打破的? 白話一下首先通過cosine相似度來定義兩個任務在共享參數上是否是沖突的,如下圖,conflicting是夾角大於90度,non-conflicting是小於90度。如果兩個兩個梯度向量存在沖突,則把 gi 向量中與 gj 沖突的分量給減去。剩下的則是沒有沖突的部分。這就是核心。

image.png

GradVac應用在機器翻譯領域,給出了3個非常有意思的觀察:

1.梯度的相似性 vs language相似性 => close tasks enjoy similar loss geometries, Gradient Similarities reflect language proximities

a.任務是翻譯任務,不同的翻譯語料共享一個大模型。如上圖熱力圖,每一個格子的得分含義是:Baltic翻譯成en的任務對應的gradient,與 Turkic翻譯成en任務對應的gradient 之間的cosine similarity
b.語言越相近,gradient的cosine similarity也越相似。

image.png

2.梯度的相似性與模型效果正相關

a.回答一個問題:相似性越高的任務進行joint trainnig,是否能夠帶來更好的效果?

i.答案是肯定的! 相似度越高的任務進行MTL的訓練,效果是更好的。
ii.有研究表明en-x相對於x-en是更加困難的,從下面的gradient similarity也可以觀察到,x-en的梯度相似性更高。
iii.以en-fr pair作為錨點,分別加入相似性更高的/更低的任務去聯合訓練得到不同的模型。然后都在相同的測試集合en-fr上進行評估【以en-fr為主人物,其他語種對為輔助任務】,去對比gradient similarity更高的pair 和 更低的pair,觀察他們在BLEU指標上的效果,添加相似性更高的語種作為輔助人物會有更好的效果。

image.png

3.梯度相似性隨着訓練步驟和網絡層級(transformer的layer)在不斷的演變

a.隨着訓練step的改變:gradient similarity會逐漸收斂到一個水位
b.隨着layer的改變:x-en【越靠近輸出位置的layer,越相似】,en-x 【越低level相似】,因為都是從en出發的,這個容易解釋,也make sense。

我覺得這些觀察非常重要,GradVac本身怎樣做,甚至都顯得沒那么重要了。白話一下GradVac的做法

  1. PCGrad只是設置了一個下界。讓兩個任務的cosine相似度至少是大於等於0的,不能出現負數。這個下界非常容易達到。
  2. 基於上文提及的觀察3,兩個任務的真實相似度,其實是會逐漸收斂到一個水位。這個值可以認為是兩個任務的真實相似度。
  3. 兩個任務的Gradinet相似度,應當去靠近這個相似度,而不是只滿足PCGrad設置的下界。

image.png

經驗tips:改造代碼,嘗試中,目前沒有可分享的經驗。有后續再追加。

五 小結

多任務多目標出現蹺蹺板、負遷移現象,微觀的梯度沖突是本質。不論是從Architecture 還是 Optimization strategy兩個維度來優化升級,殊途同歸,都是要緩解沖突,減少多任務間的內耗。

總結一下,從實踐角度來看,要做一個共贏的多任務多目標模型,技術層面幾點經驗tips:

(1)網絡結構backbone,目前優選PLE;

(2)多任務的設計和構造,要考慮任務間的相似性;如主 + 輔任務,輔助任務和主任務的關系需要考慮;

  • 目前還沒有一種權威的方法或者指標來度量任務與任務之間的相似性,那么實操中,怎么辦?【PS. 多任務間的相似性度量,應該也是一個有意思的研究點】
  • 多任務兩個Loss,只訓練其中一個Loss,另一個Loss也在緩慢下降! => 任務相關(get)

    • 三個loss,ctr/cvr/contra loss, 僅僅 training ctr/cvr主任務loss,觀察另一個輔助contra loss也會跟隨下降。實驗表明引入這個輔助loss一起train會帶來很好的離線效果提升。

image.png

  • 多任務兩個Loss,只訓練其中一個Loss,另一個Loss沒有變化甚至波動增加! => 如果不是刻意而為之,慎重聯合

(3)優化策略方面,留意多個Loss的量級,如果差異很大,注意約束和控制;上圖contra loss 與 ctr cvr的loss,差了一個量級。

(4)梯度沖突的解決,一種技能是pareto,另一種是以pcgrad為代表的直接對梯度進行調整的方法,可選用。

多任務多目標的優化,有兩種典型的方式:

  1. 主任務 + 主任務:解決業務場景既要又要的訴求;多個任務都要漲;
  2. 主任務 + 輔任務:輔助任務為主任務提供一些知識信息的增強,幫助主任務提升;

不同的業務訴求下,會有任務目標不同的側重、關聯、取舍。多任務多目標,有非常多的組合盲盒,等待打開。

Reference

本文中提及到的參考文獻如下

  1. Kendall A, Gal Y, Cipolla R. Multi-task learning using uncertainty to weigh losses for scene geometry and semantics[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 7482-7491.
  2. Rosenbaum C, Cases I, Riemer M, et al. Routing networks and the challenges of modular and compositional computation[J]. arXiv preprint arXiv:1904.12774, 2019.
  3. Tang H, Liu J, Zhao M, et al. Progressive layered extraction (ple): A novel multi-task learning (mtl) model for personalized recommendations[C]//Fourteenth ACM Conference on Recommender Systems. 2020: 269-278.
  4. 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. 2018: 1930-1939.
  5. Chen Z, Badrinarayanan V, Lee C Y, et al. Gradnorm: Gradient normalization for adaptive loss balancing in deep multitask networks[C]//International Conference on Machine Learning. PMLR, 2018: 794-803.
  6. Liu S, Johns E, Davison A J. End-to-end multi-task learning with attention[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2019: 1871-1880.
  7. 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. 2019: 20-28.
  8. Xie R, Liu Y, Zhang S, et al. Personalized Approximate Pareto-Efficient Recommendation[C]//Proceedings of the Web Conference 2021. 2021: 3839-3849.
  9. Yu T, Kumar S, Gupta A, et al. Gradient surgery for multi-task learning[J]. arXiv preprint arXiv:2001.06782, 2020.
  10. Wang Z, Tsvetkov Y, Firat O, et al. Gradient vaccine: Investigating and improving multi-task optimization in massively multilingual models[J]. arXiv preprint arXiv:2010.05874, 2020.
  11. Sener O, Koltun V. Multi-task learning as multi-objective optimization[J]. arXiv preprint arXiv:1810.04650, 2018.
  12. Ruder S. An overview of multi-task learning in deep neural networks[J]. arXiv preprint arXiv:1706.05098, 2017.
  13. Vandenhende S, Georgoulis S, Van Gansbeke W, et al. Multi-task learning for dense prediction tasks: A survey[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2021.

原文鏈接
本文為阿里雲原創內容,未經允許不得轉載。 


免責聲明!

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



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