概念
當在一個任務中要優化多于一個的目標函數[1] ,就可以叫多任務學習
一些例外
「一個目標函數的多任務」:很多任務中把loss加到一起回傳,實質優化的是一個目標函數, 但優化的是多個任務,loss相加是多任務學習的一種正則策略,對多個任務的參數起一種類似與均值約束的作用[2],所以也叫multi-task
「多個目標函數的單任務」:一些NLP中用main-task和auxiliary-task 輔助任務,很多輔助任務的loss并不重要,個人覺得這種雖然是多個loss,但是就是為了main-task ,不應該算多任務
動機
應用上節省資源,一個模型跑多個任務,單倍的時間雙倍的快樂
感覺上非常的直觀,好不容易花了30分鐘都出門了,肯定多逛幾個個商場,順便剪個頭發做個指甲
從模型的角度,學習得的底層的概率分布通常是對多個任務都是有效的
兩種常見方式
參數的硬共享機制:從幾十年前開始到現在這種方式還在流行(Multitask Learning. Autonomous Agents and Multi-Agent Systems[3]),一般認為一個模型中任務越多,通過參數共享降低噪聲導致過擬合的風險更低,在參數硬共享機制中loss直接相加就是一種最簡單的均值約束。
參數的軟共享機制:每個任務都由自己的模型,自己的參數。對模型間參數的距離進行正則化來保障參數空間的相似。
混合方式:前兩種的混合
為什么會有效
1. 不同任務的噪聲能有更好的泛化效果
由于所有任務都或多或少存在一些噪音,例如,當我們訓練任務A上的模型時,我們的目標在于得到任務A的一個好的表示,而忽略了數據相關的噪音以及泛化性能。由于不同的任務有不同的噪音模式,同時學習到兩個任務可以得到一個更為泛化的表示
2. 輔助特征選擇作用
如果主任務是那種,噪音嚴重,數據量小,數據維度高,則對于模型來說區分相關與不相關特征變得困難。其他輔助任務有助于將模型注意力集中在確實有影響的那些特征上。
3. 特征交流機制
在不同的任務之間的特征交互交流,對于任務B來說很容易學習到某些特征G,而這些特征對于任務A來說很難學到。這可能是因為任務A與特征G的交互方式更復雜,或者因為其他特征阻礙了特征G的學習。
4. 相互強調(監督)機制
多任務學習更傾向于學習到大部分模型都強調的部分。學到的空間更泛化,滿足不同的任務。由于一個對足夠多的訓練任務都表現很好的假設空間,對來自于同一環境的新任務也會表現很好,所以這樣有助于模型展示出對新任務的泛化能力(Deep Multi-Task Learning with Low Level Tasks Supervised at Lower Layers[4]、Emotion-Cause Pair Extraction: A New Task to Emotion Analysis in Texts[5]),非常適合遷移學習場景。
5. 表示偏置機制
如歸約遷移通過引入歸約偏置來改進模型,使得模型更傾向于某些假設,能起到一種正則效果。常見的一種歸約偏置是L1正則化,它使得模型更偏向于那些稀疏的解。在多任務學習場景中,這會導致模型更傾向于那些可以同時解釋多個任務的解。
為什么無效
先說是不是,再問為什么.
在Identifying beneficial task relations for multi-task learning in deep neural networks[6]中,作者探究到底是什么讓multi-task work, 作者使用嚴格意義上相同的參數用NLP任務做了對比實驗,圖中分別是兩個任務結合時與單任務loss的對比,大部分多任務的效果比不上單任務,作者的結論是單任務的主要特征在起作用,那些多任務結合效果好的情況,是「主任務比較難學(梯度下降比較緩慢),輔助任務比價好學的時候,多任務會有好效果」
為什么會無效?因為所有有效的原因都有它的負向效果
不同任務的噪聲提高泛化,在模型容量小的時候引入的噪聲也無法忽視。
特征的選擇,交流這些起作用的機制會產生一種負遷移(Negative Transfer),共享的信息交流的信息反而是一種誤導信息
...
Muti-task的一些思路
1. 對任務間的不同強制加稀疏性約束的正則化項
如塊稀疏正則化,對于不同任務的參數,加l1正則,或者l1/lx, x>1等的正則,起任務參數的選擇,讓模型自動去選擇應該共享哪些參數, 在keras的multi-task框架中,就是多個任務的loss相加后,用一個優化器優化,就是這種思路
2. 對中間層添加矩陣先驗,可以學習任務間的關系
3. 共享合適的相關結構
高層次監督(High Supervision),共享大部分結構,后面直接輸出分叉那種共享(就是大多數人入手的multi-task),個人覺得除非有很精致的一些調整,感覺效果很難超多個single-task.
低層次監督(Low Supervision),Deep Multi-Task Learning with Low Level Tasks Supervised at Lower Layers中,在NLP中,作者使用deep bi-RNN低層開始對各個任務分別建模,不共享的部分模型更新時不受其他任務影響,效果不錯。
4. 建模任務之間的關系
建模任務之間的關系有非常多的方式,如,加各種約束項,這個約束項,讓不同任務的參數空間,盡量平均, 有很多方式花式拓展,正則也是一種約束項,loss相加也是一種建立任務之間關系的約束項目,如 Learning Multiple Tasks with Kernel Methods[7]對模型聚類 ,a是任務參數,讓各種任務參數空間盡量靠近
a是各個任務的參數
特征交互,在 Emotion-Cause Pair Extraction: A New Task to Emotion Analysis in Texts 中,作者通過不同任務的高層特征交互,同時完成情感向判斷和情感向原因提取,這跟有些多模態特征fusion的方式很相似,
Cross-Stitch Networks for Multi-Task Learning[8]將兩個獨立的網絡用參數的軟共享方式連接起來, 用所謂的十字繡單元來決定怎么將這些任務相關的網絡利用其他任務中學到的知識,并與前面層的輸出進行線性組合。
串行的聯合多任務模型(A Joint Many-Task Model)
NLP 領域中,各個任務間經常是有層級關系,A Joint Many-Task Model: Growing a Neural Network for Multiple NLP Tasks[9]中在多任務并行的同時,加了串行結構,例如具體任務:詞性分析 POS->語塊分析 CHUNK->依存句法分析 DEP->文本語義相關 Relatedness->文本蘊涵 Entailment,每個子任務都偶有自己的loss, 然后又會作為其他任務的輸入
5. 用loss調整任務之間的關系
Multi-Task Learning Using Uncertainty to Weigh Losses for Scene Geometry and Semantics[10] 用同方差不確定性對損失進行加權(Weighting losses with Uncertainty),作者認為最佳權值與不同任務的衡量規模和噪聲相關,而噪聲中除了認知不確定性,異方差不確定性,這些取決于數據的不確定性外,作者把同方差不確定性作為噪聲來對多任務學習中的權重進行優化,作者根據噪聲調整每個任務在代價函數中的相對權重,噪聲大則降低權重,反之。
GradNorm: Gradient Normalization for Adaptive Loss Balancing in Deep Multitask Networks[11] 基于不同任務loss的降低速度來動態調整權值, 作者定義了另外一個專門針對權值的優化函數
是每個任務的loss相對第一步loss的優化程度, 是每一步 對 task 任務的梯度,即如果某個任務的優化程度小,這個loss會超那么就調大這個任務的權值優化,達到個loss學習程度的平衡
應用|適用任務
輔助任務,相關性任務,對抗性任務....等[12]
責任編輯:xj
原文標題:Multi-Task 多任務學習, 那些你不知道的事
文章出處:【微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。
-
AI
+關注
關注
87文章
31155瀏覽量
269482 -
多任務
+關注
關注
0文章
18瀏覽量
9077 -
機器學習
+關注
關注
66文章
8425瀏覽量
132773
原文標題:Multi-Task 多任務學習, 那些你不知道的事
文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論