本文首發(fā)于公眾號“我AI”家淤,歡迎關注佳晶,共同進步抄瓦。
分享一篇NeurIPS 2020上關于多任務學習的論文坐求。
在之前的一篇文章《“一心多用”的方法——多任務學習》中蚕泽,對多任務學習(Multi-task Learning,MTL)的背景桥嗤、應用须妻、挑戰(zhàn)做了一些簡單的介紹。在文章末尾泛领,還提了我個人認為的待研究的方向:
針對這些挑戰(zhàn)荒吏,在多任務學習的領域中,可以從以下幾個研究方向考慮能做一些工作:
????1. 多任務網(wǎng)絡結(jié)構(gòu)設計
????2. 多任務損失函數(shù)設計
????3. 輔助學習(任務的篩選方法)
????4. 多任務網(wǎng)絡的訓練方法
今天分享的這一篇論文渊鞋,便是從第4點“多任務網(wǎng)絡的訓練方法”著手绰更,提出名為PCGrad的方法,在訓練多任務模型時锡宋,通過調(diào)整梯度儡湾,盡量降低任務之間的干擾。并且执俩,這一方法與模型無關:它可以與其他多任務網(wǎng)絡結(jié)構(gòu)相結(jié)合徐钠,進一步提升多任務學習的性能。
首先需要明確的是役首,在多任務網(wǎng)絡的訓練過程中尝丐,需要解決一些什么問題。
假設有下式中的兩個優(yōu)化任務衡奥,對應損失函數(shù)分別為L1和L2爹袁,θ對應模型的參數(shù)(在這個例子中做了簡化,只考慮兩個參數(shù)θ1和θ2)杰赛。對多任務學習而言呢簸,優(yōu)化目標是學習模型的參數(shù)θ,以最小化L(L1與L2的和)乏屯。
定義了這一簡化的問題后根时,下圖(a)可視化了這一多任務學習問題的目標空間(即L和(θ1, θ2)的關系),圖(b)和圖(c)分別為任務1和任務2的目標空間辰晕,即為圖(a)的拆解版蛤迎。其中,顏色越深的位置表示損失函數(shù)L越小含友。
對于一個任務1+任務2的多任務問題替裆,其目標空間為下圖(d):最深顏色的一條線為兩個任務共有的目標最優(yōu)(損失最行1纭)區(qū)域。
為了解決這一多任務的優(yōu)化問題宜咒,一個naive的做法是:使用經(jīng)典的優(yōu)化器,分別對兩個任務的損失函數(shù)進行梯度計算得到g1和g2把鉴,然后進行向量加法得到最終的梯度g (參見下面的Definition 4)故黑。
這一做法存在顯著的問題,在上圖(d)中兩個箭頭的起點處庭砍,進行梯度計算场晶,得到任務1梯度g1的紅色向量(在該點處任務1的目標空間比較陡峭(參見上圖b),故梯度大)和任務2的梯度g2的藍色向量(在該點處任務2的目標空間比較平緩(參見上圖c)怠缸,故梯度惺帷)。這兩個任務的梯度向量:
1. 數(shù)值相差巨大揭北;
2. 方向南轅北轍扳炬。
因此,簡單的對梯度進行向量加法雖然看似能夠整體上優(yōu)化損失函數(shù)搔体,但并不能達到多任務學習的優(yōu)勢鞠柄,因為上述問題可能帶來:
1. 減速訓練過程;
2. 帶來性能下降嫉柴,無法達到最優(yōu)點。
具體來說奉呛,可以將問題分解為:
1. 梯度沖突:不同任務梯度之間但更新方向不同计螺,定義上來說,當cosθ<0時瞧壮,兩個梯度存在沖突登馒;
2. 存在主導梯度:兩個任務的梯度,雖然方向并不沖突咆槽,但其中一個梯度數(shù)值上遠大于另一個梯度陈轿,則較大梯度會形成主導從而影響較小梯度。文中定義一個梯度幅值相似度(gradient magnitude similarity)秦忿,用于衡量兩個梯度的大小差異麦射;
3. 高曲率:在高曲率的位置,主導任務的性能提升會被高估灯谣,其性能下降會被低估潜秋。
已有的一些改進方法,不能很好的解決上述的三個問題胎许,例如:對不同任務的損失函數(shù)增加權重(通過經(jīng)驗峻呛、或者通過Uncertainty的計算[2])罗售,但這只改變了梯度的數(shù)值差異。
這篇論文的作者提出的PCGrad (projecting conflicting gradients)方法钩述,同時處理數(shù)值和方向的差異寨躁。下圖(e)中,通過PCGrad與Adam的結(jié)合牙勘,能夠沿著空間中正確的優(yōu)化方向找到最小損失的點职恳。
簡單來說,就是要處理沖突的梯度(下圖a)谜悟,將第i個任務的梯度投影到與第j個任務正交的方向(下圖b)话肖,或者相反(下圖c)。下圖d表示的是對不沖突的梯度葡幸,不做處理最筒。
算法流程如下:
1. 對一個batch中對每個任務Ti,隨機采樣一個其他任務Tj蔚叨,計算Ti和Tj對應梯度向量之間的余弦相似度床蜘;
2. 如果余弦相似度為正,表示梯度無沖突蔑水,不做梯度修改邢锯。若為負,表示是相互沖突的梯度搀别,根據(jù)下式計算投影丹擎;
3. 重復上述步驟,直到這一batch中的任務遍歷完成歇父;
4. 最終的梯度方向為蒂培,投影后的梯度向量之和。
論文還提供了兩個定理及其詳細證明榜苫,論述了PCGrad方法的收斂性(定理一)以及其相較于標準梯度下降方法能達到更低誤差(定理二):
這里不講定理和證明部分护戳,分享一些我個人認為有意思的前提條件:
1. 任務的損失函數(shù)是凸的且可微的,凸(convexity)對于神經(jīng)網(wǎng)絡方法來說雖然不滿足垂睬,但是很多用于神經(jīng)網(wǎng)絡的優(yōu)化方法也是基于凸的假設媳荒;
2. 定理2的(a)表示,兩個梯度的方向沖突不能太小驹饺,且兩個梯度的幅值差異要足夠大钳枕,否則可能影響收斂效果;
3. 定理2的(b)表示赏壹,多任務的曲率H有下界么伯,且曲率需要足夠大;
4. 定理2的(c)表示卡儒,學習的步長/學習率要足夠大田柔,并且這個值與曲率有關俐巴,曲率越大,步長也要越大硬爆。因此欣舵,在使用PCGrad方法時,需要設置較大的學習率缀磕。
雖然并不是說不滿足上述前提條件就一定不work了缘圈,但在一定程度上對于算法的應用效果能夠給予分析的參考。
最后袜蚕,來看一看實際的實驗效果糟把。作者在多個計算機視覺領域監(jiān)督學習數(shù)據(jù)集和機器人領域強化學習數(shù)據(jù)集上做了實驗,均取得了好的效果牲剃。具體可以查閱原文遣疯,這里摘錄一個在CityScapes和NYUv2數(shù)據(jù)集上的實驗結(jié)果:通過和其他多任務學習的方法(例如Cross-Stitch,?MTAN凿傅,Uncertainty)進行結(jié)合缠犀,能夠取得更好的性能。
總結(jié)一下:
1. 代碼開源在[3]中聪舒;
2. 要說這一方法有什么明顯的缺點或者代價呢辨液,那就是會帶來額外的訓練時間和顯存占用;
3. 但這一方法總體思路清晰(提出了優(yōu)化中的三個問題并針對性解決)箱残,實現(xiàn)簡單滔迈,并且模型無關,能夠與其他多任務方法共同使用被辑;
4. 類似的思路亡鼠,或許也可以用于其他領域,比如說持續(xù)學習敷待、或者多模態(tài)學習中。
參考資料:
[1]?Tianhe Yu, Saurabh Kumar, Abhishek Gupta, Sergey Levine, Karol Hausman, and Chelsea Finn. Gradient surgeryfor multi-task learning, 2020.
[2]?Alex Kendall, Yarin Gal, and Roberto Cipolla. Multi-task learning using uncertainty to weigh losses for scenegeometry and semantics, 2018.Al
[3]?https://github.com/tianheyu927/PCGrad
- END -
新朋友們可以看看我過往的相關文章?
【相關推薦閱讀】