Multi-Task 多任務學習, 那些你不知道的事

做者 | 三和廠妹   html

來源 | 文末『閱讀原文』處node


概念

當在一個任務中要優化多於一個的目標函數[1] ,就能夠叫多任務學習web

一些例外

  • 「一個目標函數的多任務」:不少任務中把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]),很是適合遷移學習場景。app

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]

一塊兒交流

重磅推薦!『NewBeeNLP』目前已經創建了多個不一樣方向交流羣(機器學習 / 深度學習 / 天然語言處理 / 搜索推薦 / 面試交流 /  等),名額有限,趕忙添加下方微信加入一塊兒討論學習吧!(注意必定要備註信息才能經過)

本文參考資料

[1]

An Overview of Multi-task Learning in Deep Neural Networks: https://arxiv.org/abs/1706.05098

[2]

Identifying beneficial task relations for multi-task learning in deep neural networks: https://www.aclweb.org/anthology/E17-2026/

[3]

Multitask Learning. Autonomous Agents and Multi-Agent Systems: https://www.cs.cornell.edu/~caruana/mlj97.pdf

[4]

Deep Multi-Task Learning with Low Level Tasks Supervised at Lower Layers: https://www.aclweb.org/anthology/P16-2038/

[5]

Emotion-Cause Pair Extraction: A New Task to Emotion Analysis in Texts: https://www.aclweb.org/anthology/P19-1096/

[6]

Identifying beneficial task relations for multi-task learning in deep neural networks: https://www.aclweb.org/anthology/E17-2026/

[7]

Learning Multiple Tasks with Kernel Methods: https://jmlr.org/papers/v6/evgeniou05a.html

[8]

Cross-Stitch Networks for Multi-Task Learning: https://arxiv.org/abs/1604.03539

[9]

A Joint Many-Task Model: Growing a Neural Network for Multiple NLP Tasks: https://arxiv.org/abs/1611.01587

[10]

Multi-Task Learning Using Uncertainty to Weigh Losses for Scene Geometry and Semantics: https://arxiv.org/abs/1705.07115

[11]

GradNorm: Gradient Normalization for Adaptive Loss Balancing in Deep Multitask Networks: https://arxiv.org/abs/1711.02257

[12]

輔助任務,相關性任務,對抗性任務....等: https://blog.csdn.net/qq280929090/article/details/79649163


- END -




BERT-Flow | 文本語義表示新SOTA

2020-12-23

你的模型可能學錯了!!深刻探究答案位置誤差

2020-12-10

Node2Vec:萬物皆可Embedding

2020-12-03




本文分享自微信公衆號 - NewBeeNLP(NewBeeNLP)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索