多任务学习漫谈:行梯度之事
?PaperWeekly 原創 ·?作者 | 蘇劍林
單位 | 追一科技
研究方向 | NLP、神經網絡
在《多任務學習漫談:以損失之名》中,我們從損失函數的角度初步探討了多任務學習問題,最終發現如果想要結果同時具有縮放不變性和平移不變性,那么用梯度的模長倒數作為任務的權重是一個比較簡單的選擇。我們繼而分析了,該設計等價于將每個任務的梯度單獨進行歸一化后再相加,這意味著多任務的“戰場”從損失函數轉移到了梯度之上:看似在設計損失函數,實則在設計更好的梯度,所謂“以損失之名,行梯度之事”。
那么,更好的梯度有什么標準呢?如何設計出更好的梯度呢?本文我們就從梯度的視角來理解多任務學習,試圖直接從設計梯度的思路出發構建多任務學習算法。
整體思路
我們知道,對于單任務學習,常用的優化方法就是梯度下降,那么它是怎么推導的呢?同樣的思路能不能直接用于多任務學習呢?這便是這一節要回答的問題。
下降方向
其實第一個問題,我們在《從動力學角度看優化算法(三):一個更整體的視角》就回答過。假設損失函數為 ,當前參數為 ,我們希望設計一個參數增量 ,它使得損失函數更小,即 。為此,我們考慮一階展開:
假設這個近似的精度已經足夠,那么 意味著 ,即更新量與梯度的夾角至少大于 90 度,而其中最自然的選擇就是
這便是梯度下降,即更新量取梯度的反方向,其中 即為學習率。
無一例外
回到多任務學習上,如果假設每個任務都同等重要,那么我們可以將這個假設理解為每一步更新的時候 都下降或保持不變。如果參數到達 后,不管再怎么變化,都會導致某個 上升,那么就說 是帕累托最優解(Pareto Optimality)。說白了,帕累托最優意味著我們不能通過犧牲某個任務來換取另一個任務的提升,意味著任務之間沒有相互“內卷”。
假設近似(1)依然成立,那么尋找帕累托最優意味著我們要尋找 滿足
注意到它存在平凡解 ,所以上述不等式組的可行域肯定非空,我們主要關心可行域中是否存在非零解:如果有,則找出來作為更新方向;如果沒有,則有可能已經達到了帕累托最優(必要不充分),我們稱此時的狀態為帕累托穩定點(Pareto Stationary)。
求解算法
方便起見,我們記 ,我們尋求一個向量 ,使得對所有的 都滿足 ,那么我們就可以像單任務梯度下降那樣取 作為更新量。如果任務數只有兩個,可以驗證 自動滿足 和 ,也就是說,雙任務學習時,前面說的梯度歸一化可以達到帕累托穩定點。
當任務數大于 2 時,問題開始變得有點復雜了,這里介紹兩種求解方法,其中第一種思路是筆者自己給出的推導結果,第二種思路則是《Multi-Task Learning as Multi-Objective Optimization》[1] 給出的“標準答案”。
問題轉化
首先我們對問題進行進一步的轉化。留意到
所以我們只需要盡量最大化最小的那個 ,就能找出理想的 ,即問題變成了
不過這有點危險,因為一旦真的存在非零的 使得 ,那么讓 的模長趨于正無窮,那么最大值便會趨于正無窮。所以為了結果的穩定性,我們需要加個正則項,考慮
這樣無窮大模長的 就不可能是最優解了。注意到代入 后有 ,所以假設對 取 的最優解為 ,那么必然有
所以問題(6)的解必然是滿足條件(4)的解,并且如果是非零解,那么其反方向必然是使得所有任務損失都下降的方向。
光滑近似
現在介紹問題(6)的第一種求解方案,它假設讀者像筆者一樣不熟悉 min-max 問題的求解,那么我們可以將第一步的 用光滑近似代替(參考《尋求一個光滑的最大值函數》[2] ),即
于是我們就可以先求解
然后再讓 。這樣我們就將問題轉化為了單個函數的無約束最大化問題,直接求梯度然后讓梯度為零得到
假設各個 的差距大于 量級,那么當 時,上式實際上是
然而,如果直接按照 的格式迭代,那么大概率是會振蕩的,因為它要我們找到讓 最小的 作為 ,假設為 ,那么下一步讓 最小的 就很可能不再是 了,反而 可能是最大的那個。
直觀來想,上述算法雖然振蕩,但應該也是圍繞著最優點 振蕩的,所以如果我們把振蕩過程中的所有結果都平均起來,就應該能得到最優點了,這意味著收斂到最優點的迭代格式是
留意到每次疊加上去的都是某個 ,所以最終的 必然是各個 的加權平均,即存在 且 ,使得
我們也可以將 理解為各個 的當前最優權重分配方案。
對偶問題
光滑近似技巧的好處是比較簡單直觀,不需要太多的優化算法基礎,不過它終究只是“非主流”思路,有頗多不嚴謹之處(但結果倒是對的)。下面我們來介紹基于對偶思想的“標準答案”。
首先,定義 為所有 元離散分布的集合,即
那么容易檢驗
因此問題(6)等價于
上述函數關于 是凹的,關于 是凸的,并且 的可行域都是凸集(集合中任意兩點的加權平均仍然在集合中),所以根據馮·諾依曼的 Minimax 定理 [3],式 (16)的 和 是可以交換的,即等價于
等號右邊是因為 部分只是一個無約束的二次函數最大值問題,可以直接算出 ,因此最后只剩下 ,問題變成了求 的一個加權平均,使得其模長最小。
當 時,問題的求解比較簡單,相當于作三角形的高,如下圖所示:
▲ 當 時的求解算法及幾何意義
當 時,我們可以用 Frank-Wolfe 算法 [4] 將它轉化為多個 的情形進行迭代。對于 Frank-Wolfe 算法,我們可以將它理解為帶約束的梯度下降算法,適合于參數的可行域為凸集的情形,但展開來介紹篇幅太大,這里就不詳說了,請讀者自行找資料學習。簡單來說,Frank-Wolfe 算法先通過線性化目標,找到下一步更新的方向為 ,其中 而 為 位置為 1 的 one hot 向量,然后求解在 與 之間進行插值搜索,找出最優者作為迭代結果。所以,它的迭代過程為
其中 的求解,正是 的特例,用上述截圖中的算法即可。如果 不通過搜索而得,而是固定為 ,那么結果則等價于(12),這也是 Frank-Wolfe 算法的一個簡化版本。也就是說,我們通過光滑近似得到的結果,跟簡化版 Frank-Wolfe 算法的結果是等價的。
去約束化
其實對于問題(17)的求解,理論上我們也可以通過去約束的方式直接用梯度下降求解。比如直接設參數 以及
那么就可以轉化為
這是個無約束的優化問題,常規的梯度下降算法就可以求解。然而不知道為什么,筆者似乎沒看到這樣處理的(難道是不想調學習率?)。
一些技巧
在前一節中,我們給出了尋找帕累托穩定點的更新方向的兩種方案,它們都要求我們在每一步的訓練中,都要先通過另外的多步迭代來確定每個任務的權重,然后才能更新模型參數。由此不難想象,實際計算的時候計算量還是頗大的,所以我們需要想些技巧降低計算量。
梯度內積
可以看到,不管哪種方案,其關鍵步驟都有 ,這意味著我們要遍歷梯度算內積。然而在深度學習場景下,模型參數量往往很大,所以梯度是一個非常大維度的向量,如果每一步迭代都要算一次內積,計算量很大。這時候我們可以利用展開式
每次迭代其實只有 不同,所以其實在每一步訓練中 只需要計算一次存下來就行了,不用重復這種大維度向量內積的計算。
共享編碼
然而,當模型大到一定程度的時候,要把每個任務的梯度都分別算出來然后進行迭代計算是難以做到的。如果我們假設多任務的各個模型共用同一個編碼器,那么我們還可以進一步近似地簡化算法。
具體來說,假設 batch_size 為 ,第 個樣本的編碼輸出為 ,那么由鏈式法則我們知道:
記 ,那么就得到 ,利用矩陣范數不等式得到
不難想到,如果我們最小化 ,那么計算量就會明顯減少,因為這只需要我們對最后輸出的編碼向量的梯度,而不需要對全部參數的梯度。而上式告訴我們,最小化 實際上就是在最小化式(17)的上界,像很多難以直接優化的問題一樣,我們期望最小化上界也能獲得類似的結果。
不過,這個上界雖然效率更高,但也有其局限性,它一般只適用于每一個樣本都有多種標注信息的多任務學習,不適用于不同任務的訓練數據無交集的場景(即每個任務是對不同的樣本進行標注的,單個樣本只有一種標注信息),因為對于后者來說,各個 是相互正交的,此時任務之間沒有交互,上界沒有體現出任務之間的相關性,也就是過于寬松而失去意義了。
錯誤證明
前面所提到的“標準答案”以及關于共享編碼器時優化上界的結果,都來自論文《Multi-Task Learning as Multi-Objective Optimization》[1]。接下來原論文試圖證明當 滿秩時,優化上界也能找到帕累托穩定點。但是很遺憾,原論文的證明是錯誤的。
證明位于原論文的附錄 A,里邊用到了一個錯誤的結論:
如果 是對稱正定矩陣,那么 當且僅當 。
很容易舉例證明該結論是錯的,比如 ,此時 但 。
經過思考,筆者認為原論文中的證明是難以修復的,即原論文的推測是不成立的,換言之,即便 滿秩,優化上界得出的更新方向未必是能使得所有任務損失都不上升的方向,從而未必能找到帕累托穩定點。至于原論文中優化上界的實驗效果也不錯,只能說深度學習模型參數空間太大,可供“挪騰”的空間也很大,從而上界近似也能獲得不錯的結果了。
文本小結
在這篇文章中,我們從梯度的視角來理解多任務學習。在梯度視角下,多任務學習的主要工作是尋找一個盡可能與每個任務的梯度都反向的方向作為更新方向,從而使得每個任務的損失都能盡量下降,而不能通過犧牲某個任務來換取另一個任務的提升。這是任務之間無“內卷”的理想狀態。
參考文獻
[1] https://arxiv.org/abs/1810.04650
[2] https://kexue.fm/archives/3290
[3] https://en.wikipedia.org/wiki/Minimax_theorem
[4] https://en.wikipedia.org/wiki/Frank–Wolfe_algorithm
特別鳴謝
感謝 TCCI 天橋腦科學研究院對于 PaperWeekly 的支持。TCCI 關注大腦探知、大腦功能和大腦健康。
更多閱讀
#投 稿?通 道#
?讓你的文字被更多人看到?
如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學術熱點剖析、科研心得或競賽經驗講解等。我們的目的只有一個,讓知識真正流動起來。
📝?稿件基本要求:
? 文章確系個人原創作品,未曾在公開渠道發表,如為其他平臺已發表或待發表的文章,請明確標注?
? 稿件建議以?markdown?格式撰寫,文中配圖以附件形式發送,要求圖片清晰,無版權問題
? PaperWeekly 尊重原作者署名權,并將為每篇被采納的原創首發稿件,提供業內具有競爭力稿酬,具體依據文章閱讀量和文章質量階梯制結算
📬?投稿通道:
? 投稿郵箱:hr@paperweekly.site?
? 來稿請備注即時聯系方式(微信),以便我們在稿件選用的第一時間聯系作者
? 您也可以直接添加小編微信(pwbot02)快速投稿,備注:姓名-投稿
△長按添加PaperWeekly小編
🔍
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
·
總結
以上是生活随笔為你收集整理的多任务学习漫谈:行梯度之事的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: u盘怎么格式为ntfs格式化 如何使用N
- 下一篇: 小白启动盘怎么用 小白启动盘使用教程