多任務模型融合如何平衡?

平衡目標

  • 不同任務loss量級相近
  • 不同任務相近速率學習
  • 不同任務數據量級接近
  • 不同任務重要性程度近似評估
  • 不同任務不確定性估計

廢話少說 上圖個球的


image.png

1. 加權融合

1.1 手動加權

image.png

人肉調權重。

1.2 動態加權平均

核心思想:利用loss變化率,平衡多任務學習速度。
[End-to-End Multi-Task Learning with Attention],CVPR 2019,Cites:107
https://arxiv.org/pdf/1803.10704v1.pdf
實現:
https://github.com/lorenmt/mtan
本文提出了一種新的多任務學習體系結構,允許學習特定任務的特征級注意力。提出了MTAN(Multi-Task Attention Netwrok)網絡,由一個包含全局特征池化的共享網絡和基于特定任務的soft-attention模塊組成。這些模塊從全局共享特征中學習特定任務的特征,同時允許特征在不同任務間共享。
MTAN結構主要包括兩大部分,一個任務共享的主網絡和K個特定任務的子網絡,共享網絡可以根據特定的任務進行設計,而每個特定于任務的子網絡由一組注意力模塊組成,這些模塊與共享網絡相連接。每個注意力模塊對共享網絡的特定層應用一個soft attention mask,以學習特定于任務的特征。基于這種設計,共享主網絡可以看做是一個跨任務的特征表示,每一個attention mask都可以被看作是對主網絡的特征選擇器,決定哪些共享特征被用到自己的子任務中去。

image.png

最后損失函數:
image.png

作者嘗試了不同的權重方案對模型效果的影響
image.png

DWA,使每個子任務首先計算前個epoch對應損失的比值,然后除以一個固定的值T,進行exp映射后,計算各個損失所占比。
image.png

K代表任務的數量;T是一個常數,T=1時,w等同于softmax的結果;T足夠大時,w趨近1,各個任務的loss權重相同。該方法,只需要記錄不同階段的loss值,從而避免了為了獲取不同任務的梯度,運算較快。

2. loss梯度數量級差異

loss值的大小不重要,重要的是每一個loss產生的梯度的數量級不能差的特別大。如果梯度數量級差的很多的,可以給loss加權重。

2.1 梯度正則化

《Gradnorm: Gradient normalization for adaptive loss balancing in deep multitask networks》,ICML 2018,Cites:177
https://arxiv.org/abs/1711.02257
核心思想:
同時考慮標簽損失與梯度損失,同時將梯度表示為權重的函數,進行全局標準化優化。
實現:
https://github.com/brianlan/pytorch-grad-norm
與靜態加權不同,我們認為多任務的w是對于參數t的函數,且有不同的wi(t)對多任務分配loss權重。

image.png

本文定義了兩種類型的損失:標簽損失和梯度損失,獨立優化,不進行疊加。Label Loss即多任務學習中,每個任務的真實的數據標簽與網絡預測標簽計算的loss。Gradient Loss,用來衡量每個任務的loss的權重 wi(t)的好壞,Gradient Loss是關于權重wi(t)的函數。t表示網絡訓練中的第t步,權重為關于t的一個變量。
image.png

  • W是整個多任務學習網絡參數的子集,在文章中的實驗,作者選擇了網絡share bottom部分最后一層的參數;
  • Giw(t)是任務i梯度標準化的值,是任務i的權重與loss 的乘積對參數W求梯度的L2范數, 可以衡量某個任務loss的量級;
  • G---w(t)是全局梯度標準化的值(即所有任務梯度標準化值的期望值),通過所有求均值實現。
  • Li(0)與Li(t)分別代表子任務i的第0步和第t步的loss,L ~ i(t)在一定程度上衡量了任務i的反向的訓練速度,L~~i(t)越大,表示網絡訓練越慢。
  • image.png

    表示了各個任務反向訓練速度的期望;

  • 反向訓練速率除以反向訓練期望,得到相對反向訓練速率r,r是任務的相對反向訓練速度,r越大,表示任務i在所有任務中訓練越慢。
    從而:


    image.png

    計算完Gradient Loss后,通過以下函數對wi(t)進行更新:


    image.png

    image.png

2.2差異化學習率

對于多任務損失減小速度不一致的情況,需要自適應多任務的學習率,在 Adagrad, RMSProp, Adam 等等優化算法中,自適應學習率主要針對高維空間模型參數變化不同的方向,使用不同的學習率。
對更新快的任務,使用小一點的學習率,對更新慢的任務,使用大一點的學習率。


image.png

trick:


image.png

3. 引入Bayesian框架下的平衡

3.1 確定性平衡

尤其針對于多任務指標提升有蹺蹺板現象的模型,如ESSM模型在做CTR、CVR目標時,引入pCTR與pCTCVR,可以基于先驗任務的估計可以作為下游任務的一個特征,從而組合loss。

3.2 動態任務優先級

[Dynamic task prioritization for multitask learning],ECCV 2018,Cites:53
https://openaccess.thecvf.com/content_ECCV_2018/papers/Michelle_Guo_Focus_on_the_ECCV_2018_paper.pdf
本文提出了多任務學習的動態任務優先級。這允許模型在訓練過程中動態的對困難任務進行優先級排序,其中困難任務與性能成反比,并且困難隨著時間的推移而變化。與傳統認知上優先學習簡單任務相反,本文通過多個實驗證明了優先學習困難任務的重要性。
核心思想:DTP以為更難的任務對模型影響程度更高,希望讓更難學的任務具有更高的權重。
引入幾個概念:

image.png

  • 任務困難程度D,且D與性能指標k成反比,即


    image.png
  • 基礎公式:


    image.png
  • 任務難易程度降序排列:


    image.png

    image.png
  • 性能指標KPIs:
    對于每一個任務Tt,用Kt代表關鍵性能指標,也就是我們常聽到的KPI,其中 Kt∈[0,1]。那么什么樣的標準可以用來當做KPI呢?Kt必須是一個有意義的度量標準,比如準確率或者AP等。此外,還借鑒tensorflow上的知識,通過Kt計算一個滑動平均模型,公式如下:


    image.png

    阿爾法代表衰減因子,取[0,1],決定了模型更新的速度,越大任務越趨于穩定。
    權重公式:


    image.png

    需要獲取不同step的KPI值,從而避免了為了獲取不同任務的梯度,運算較快。但是DTP沒有考慮不同任務的loss的量級,需要額外的操作把各個任務的量級調整到差不多,且需要額外計算KPI。
    猜想:
    是否可以結合梯度正則化,來平衡任務量級+考量KPI指標來進行多任務融合。

3.3不確定性平衡

本文希望讓“簡單”的任務有更高的權重。
貝葉斯建模中存在的兩類不確定性:

  • 認知不確定性(Epistemic uncertainty): 由于缺少訓練數據而引起的不確定性。

  • 偶然不確定性(Aleatoric uncertainty): 由于訓練數據無法解釋信息而引起的不確定性。
    對于偶然不確定性,又可以分為如下兩個子類:

  • 數據依賴(Data-dependant)或異方差(Heteroscedastic)不確定性,簡單的說就是對于不同的輸入,網絡輸出的噪聲大小不同。

  • 任務依賴(Task-dependant)或同方差(Homoscedastic)不確定性,是一個對所有輸入數據保持不變的量,并且在不同任務之間變化。

對每個task,受限于任務數據與模型刻畫能力,都存在task相關的不確定性,不確定性被量化為模型輸出與樣本標簽之間的噪聲。
[Multi-Task Learning Using Uncertainty to Weigh Losses for Scene Geometry and Semantics]
https://arxiv.org/abs/1705.07115v3
實現: https://github.com/yaringal/multi-task-learning-example/blob/master/multi-task-learning-example.ipynb
基礎假設:

  1. 回歸任務,噪聲服從高斯分布,噪聲強弱衡量指標高斯分布方差。
  2. 分類任務,噪聲服從玻爾茲曼分布,衡量標準為熱力學溫度。(這個在原文中沒有展開)
    // 回歸任務不確定性


    image.png

    // 分類任務不確定性


    image.png

    組合loss:
    image.png

    image.png
image.png

取log類似于正則項,防止不確定性估計過大,能夠將不確定性壓縮在一定數值范圍內,不確定性估計越大,任務的不確定性越大,則任務的權重越小,即噪聲大且難學的任務權重會變小。
猜想:
與梯度正則化不同的是,不確定性估計


image.png

收斂受到初始化的影響較小,是否可以在梯度正則化中L(0)初始化時引入對不確定性的估計。

4. 梯度沖突系列方法

之前的有關梯度的多任務融合方式,主要針對任務loss梯度量級差異、不同任務學習速度差異而做研究,更進一步,討論梯度更新方向與梯度更新沖突的方法,正high起來。

從帕累托解集的角度來看

其實,從梯度角度出發的MTL平衡研究主要在討論,梯度從量化差異上升到多維空間離散解集,再到連續解集的過程。


image.png

從梯度沖突問題角度來看

1. 不同任務梯度之間的更新方向不同引起的梯度沖突,引出了本模塊要講的內容
2. 非方向性沖突,由于梯度大小不同,如果一個梯度特別大,另一個梯度特別小,那么較大的梯度會形成主導從而影響較小梯度。
3. 在曲率很大的位置,高梯度值的任務的改進可能被高估,而高梯度值的任務的性能下降可能被低估

4.1 PCGrad

https://arxiv.org/pdf/2001.06782.pdf
實現:
https://github.com/tianheyu927/PCGrad

  • 核心思想:
    將任務的梯度投影到具有沖突梯度的任何其他任務的梯度的法線平面上。


    image.png
  1. 首先,計算任務i梯度和隨機一個其他任務j梯度之間的余弦相似度,如果為負值表示是相互沖突的梯度,如上圖(a)
  2. 如果余弦相似度為負值,則通過下式計算任務i梯度在任務j梯度的法線平面上的投影(如上圖(b)):


    image.png
  3. 如果梯度沒有沖突,即余弦相似度為非負,則直接使用原始梯度即可,如上圖d。
  4. 選擇另外一個任務,作為任務i,重復上述流程,直到所有任務的梯度都修正過一遍。
  5. 將各任務修正后的梯度相加,得到最終的梯度。
  • 更新規則:


    image.png

4.2 MGDA 帕累托單解

Multiple-gradient descent algorithm (mgda) for multiobjective optimization. Comptes Rendus Mathematique, 350:313–318, 2012.
實現:
在MMOE模型里增加MGDA的玩法。
https://github.com/king821221/tf-mmoe-mgda

image.png

4.3 CAGrad多梯度優化

https://papers.nips.cc/paper/2021/file/9d27fdf2477ffbff837d73ef7ae23db9-Paper.pdf
實現:
https://github.com/Cranial-XIX/CAGrad
核心思想:
通過構造新的梯度更新方向來避免梯度沖突,但之前出現的梯度修正算法往往偏離了最小化平均loss的目標,導致最終結果無法收斂到全局最優。文章在平均梯度方向鄰域內求解梯度更新方向,最大化所有子目標中最小的局部提升。

  • 多任務學習與梯度沖突:


    image.png
  • 算法


    image.png

    image.png

5. 帕累托平衡

多目標優化的解通常是一組均衡解(即一組由眾多 Pareto最優解組成的最優解集合 ,集合中的各個元素稱為 Pareto最優解或非劣最優解)。

5.1 幾個概念:

  • 什么是Pareto?
    上wiki:
    https://en.wikipedia.org/wiki/Pareto_efficiency
    (自己看去吧,三五三十五,三五太難了)
    Pareto optimality,即帕累托最優。一個 Pareto 最優解指的是在優化任務有多個目標時,在這些目標中權衡得最好的解。如下圖所示,兩個目標的誤差值越小越好。由于模型能力的限制,其最左下角是理論上無法得到的不可行區域,所以最接近不可行區域的解即為 Pareto 最優解。綠色的解由于能夠找到在兩個任務上都比它表現更好的解,所以它不是 Pareto 最優解。所有的 Pareto 最優解所組成的面就是 Pareto 前沿(Pareto front)。
    image.png
  • 為什么要有Pareto最優?之前的MTL方法不香么?
    之前的MTL平衡方法主要關注的是如何在有多個任務時找到一個能夠權衡利弊的解,但由于 Pareto 的存在,一個獨立解是難以滿足多種偏好的,Pareto旨在找到多個Pareto解,進而利用 Pareto 前沿的連續性質,連續地從一個 Pareto 解出發找到其他的解。
  • 非劣解——多目標優化問題并不存在一個最優解,所有可能的解都稱為非劣解,也稱為Pareto解。
  • Pareto最優解——無法在改進任何目標函數的同時不削弱至少一個其他目標函數。這種解稱作非支配解或Pareto最優解。
    通俗的講,帕累托最優解即不存在一個在任意子目標均不弱于它且至少在一個子目標上強于它的解,優化帕累托最優解的任意子目標必然弱化至少一個其他子目標。帕累托穩定解即存在所有子目標上梯度的凸組合為零的可行解。

5.2 方法論

多目標優化問題不存在唯一的全局最優解 ,過多的非劣解是無法直接應用的 ,所以在求解時就是要尋找一個最終解。

  • 求最終解主要有三類方法:
  1. 生成法,即先求出大量的非劣解,構成非劣解的一個子集,然后按照決策者的意圖找出最終解;(生成法主要有加權法﹑約束法﹑加權法和約束法結合的混合法以及多目標遺傳算法)。
  2. 交互法,不先求出很多的非劣解,而是通過分析者與決策者對話的方式,逐步求出最終解。
    3.目標重要度,算法以此為依據,將多目標問題轉化為單目標問題進行求解。
  • 多目標優化算法歸結起來有傳統優化算法和智能優化算法兩大類:
  1. 傳統優化算法包括加權法、約束法和線性規劃法等,實質上就是將多目標函數轉化為單目標函數,通過采用單目標優化的方法達到對多目標函數的求解。
  2. 智能優化算法包括進化算法(Evolutionary Algorithm, 簡稱EA)、粒子群算法(Particle Swarm Optimization, PSO)等。
    兩者的區別——傳統優化技術一般每次能得到Pareo解集中的一個,而用智能算法來求解,可以得到更多的Pareto解,這些解構成了一個最優解集,稱為Pareto最優解(任一個目標函數值的提高都必須以犧牲其他目標函數值為代價的解集)。

5.3 帕累托多解

https://proceedings.neurips.cc/paper/2019/file/685bfde03eb646c27ed565881917c71c-Paper.pdf
該文章提出多個 Pareto 解的重要性,但由于沒有利用 Pareto 前沿的性質,該方法生成的每一個解都是從頭訓練的,并且無法形成連續的 Pareto 前沿。

image.png

5.4 連續帕累托優化

paper:
https://arxiv.org/pdf/2006.16434.pdf
視頻:
https://icml.cc/virtual/2020/poster/5856

  • 核心思想:
  1. 利用 Hessian 矩陣對多目標問題的 Pareto 集(權衡多目標的理論最優集)進行一階近似,并實驗說明沿該近似方向更新可以使已有的 Pareto 解保持其性質。
  2. 提出使用 Hessian 向量積(Hessian-Vector Product)和 Krylov 子空間迭代法(共軛梯度法就是其中的一種)來高效解決上述近似問題,并將該方法應用于深度學習。
  3. 對生成的 Pareto 集進行線性插值,并由此得到無窮多的連續一階近似解,以滿足多目標問題下的不同偏好。
  • Pareto一階近似
    當一個解已經到達 Pareto 最優,其各目標的梯度一定共面(當任務數為2時為共線)。從另一個角度說,這些梯度一定可以找到一組正權重使其加權和為0,寫為公式:


    image.png

    論文在參數空間尋找一個更新方向的參數表示:


    image.png

    v即參數更新方向,t為參數化變量,H為線性變化矩陣,目的將v表示為梯度加權的線性表示。
    下面介紹H這個鬼東西。
  • Hessian是什么鬼?Hessian 向量積又是什么鬼?
    H是加權過的各個目標函數的 Hessian 矩陣,這個矩陣的每個元素都是一個二階導數,形式為:


    image.png

    就是為了避免直接計算H求H而做的一種方法,n為參數量,平方搞一搞,算死球了個喵的,哎,但是Hessian 和一個向量的點乘可以算,這個就是Hessian 向量積。


    image.png
  • Krylov 子空間迭代法求解v:
  1. MINRES
  2. 無需顯式構造左側矩陣,只需要調用它和一個向量的點積。
  3. 迭代求解,可以 early-stopping 加快求解速度。
  • 如何保證連續?
    雖然我們已經得到了更新方向,但基于這些更新方向生成的解依舊是離散的。幸運的是,由于我們是基于 Pareto 前沿在局部上是連續的這一假設,我們可以認為從同一解更新出的解都在同一連續曲面上,這也就意味著我們可以對其進行線性插值來生成連續曲面。如果我們有很多不同的初始 Pareto 解,我們就可以對它們分別進行更新獲得多個相交的 Pareto 前沿,然后篩選出最后的大片連續曲面。
  • Pareto 連續性方法總結
  1. 計算復雜度高,任務數量無法過度擴展,但這個面對一般工程3-4task其實還好。
  2. 在 Pareto 局部連續性的假設上進行的操作,但深度過參數化網絡往往高度非線性,難以從一個局部 Pareto 曲面跳到另一個局部 Pareto 曲面,容易陷入某 Pareto 曲面的局部最優解。

僅供學習 無關利益 大論灌水 寶刀屠龍

REF:
https://www.zhihu.com/question/359962155/answer/928941168
https://zhuanlan.zhihu.com/p/362860026
https://www.zhihu.com/question/293188597/answer/1183278070
https://zhuanlan.zhihu.com/p/425672909
https://zhuanlan.zhihu.com/p/56613537
https://www.yanxishe.com/columnDetail/26367
https://www.zhihu.com/question/294635686/answer/606259229
https://www.zhihu.com/question/375794498/answer/1052779937
https://zhuanlan.zhihu.com/p/269492239
https://zhuanlan.zhihu.com/p/56986840
https://blog.csdn.net/Leon_winter/article/details/105014677
https://zhuanlan.zhihu.com/p/82234448
https://zhuanlan.zhihu.com/p/71012037
https://zhuanlan.zhihu.com/p/159000150
https://blog.csdn.net/weixin_43202635/article/details/82700342
https://www.zhihu.com/search?type=content&q=Pareto%20Multi-Task%20Learning
https://zhuanlan.zhihu.com/p/442858141
https://zhuanlan.zhihu.com/p/395220852
https://zhuanlan.zhihu.com/p/258327403
https://www.zhihu.com/column/c_1360363335737843712

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,572評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,071評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,409評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,569評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,360評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,895評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,979評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,123評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,643評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,559評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,742評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,250評論 5 356
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,981評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,363評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,622評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,354評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,707評論 2 370

推薦閱讀更多精彩內容