翻譯一下一篇多任務學習的綜述
https://arxiv.org/abs/1706.05098
大家好,我是老周,歡迎閱讀我的文章。
上一篇文章說了微軟的MT-DNN,裡面用到了多任務學習。這篇文章主要想說清楚多任務學習,多任務學習是機器學習中的一個子領域,而學習一個領域的最好辦法是閱讀它的綜述。於是我翻譯了一下由Sebastian Ruder小哥寫的一篇綜述,裡面很好的講述了多任務學習的發展過程。
論文鏈接:https://arxiv.org/abs/1706.05098
1、引言
在機器學習(ML)中,我們通常關心針對特定指標的優化,無論這是某個基準的分數還是業務關鍵績效指標。為了做到這一點,我們通常訓練一個模型或一組模型來執行我們所期望的任務。然後我們對這些模型進行微調,直到它們的性能不再提高。雖然我們通常可以通過這種方式獲得可接受的性能,但通過專注於我們的單一任務,我們忽略了可能幫助我們在我們關心的指標上做得更好的信息。具體來說,這些信息來自於相關任務的訓練信號。通過在相關任務之間共享表示,我們可以使我們的模型能夠更好地對原始任務進行泛化。這種方法被稱為多任務學習(MTL),並將成為本文的主題。
多任務學習已經成功地應用於機器學習的所有應用,從自然語言處理[1]和
語音識別[2]到計算機視覺[3]和藥物發現[4]。MTL有很多猜想:聯合學習、學習學習和輔助任務學習只是一些用來引用它的名字。一般來說,一旦你發現自己優化了不止一個損失函數,你就可以有效地進行多任務學習(與單任務學習相比)。在這些場景中,它有助於思考你試圖明確地用MTL來做什麼,並從中獲得靈感。即使你只是優化一個損失,這是典型的情況下,有可能是一個輔助任務,將有助於您改進您的主要任務。Rich Caruana[5]簡潔地總結了MTL的目標:“MTL通過利用相關任務的訓練信號中包含的**領域特定信息**來改進泛化”。
在這篇博文的過程中,我將試圖對多任務學習的現狀做一個概述,特別是當涉及到使用深度神經網絡的MTL時。我將首先從不同的角度解釋多任務學習。然後,我將介紹兩個最常用的方法,在深入學習的MTL。隨後,我將描述共同說明MTL在實踐中工作的機制。在研究更先進的基於神經網絡的MTL方法之前,我將通過討論MTL中的文獻提供一些背景。然後,我將介紹一些更強大的最近提出的方法。最後,我將討論常用類型的輔助任務,並討論MTL如何做一個好的輔助任務。
2、動機解釋
我們可以用不同的方式解釋多任務學習的動機:從生物學上講,我們可以看到多任務學習是由人類學習所激發的。為了學習新的任務,我們經常運用我們從學習相關任務中獲得的知識。例如,嬰兒首先學會識別面部,然後可以應用這些知識來識別其他物體。
從教育學的角度來看,我們通常想學習一些任務,這些任務為我們掌握更復雜的技術提供了必要的技能。這對於學習正確的武術摔倒方式是正確的,例如柔道和學習編程。
以流行文化為例,我們還可以考慮空手道小子(1984年)(感謝瑪格麗特·米切爾和阿德里安·本頓的啟發)。在電影中,Miyagi先生教空手道小孩看似無關的任務,如打磨地板和打蠟汽車。然而,事後看來,這些技能使他具備了學習空手道的寶貴技能。
最後,我們可以從機器學習的角度來看多任務學習:我們可以將多任務學習視為
歸納遷移(inductive transfer)的一種形式。歸納轉移可以通過引入一個歸納偏差(inductive bias)來幫助改進模型,這使得模型更喜歡一些假設。例如,一種常見的歸納偏差是L1正則化,導致偏好稀疏解。在MTL的情況下,歸納偏差由輔助任務提供,這使得模型更傾向於解釋多個任務的假設。正如我們將很快看到的,這通常會導致更好概括的解決方案。3、深度學習下兩種MTL
到目前為止,我們關注的是MTL的理論動機。為了使MTL的思想更加具體,我們現在來看兩種在深層神經網絡中執行多任務學習最常用的方法。在深度學習的背景下,多任務學習通常是通過共享隱藏層的硬參數或軟參數來完成的。
- 3.1 硬參數共享
硬參數共享是神經網絡中最常用的MTL方法,可以追溯到[6]。它通常通過在所有任務之間共享隱藏層來應用,同時保留幾個特定於任務的輸出層。
硬參數共享大大降低了過度擬合的風險。實際上,[7]表明,過度擬合共享參數的風險是N階(其中N是任務數),小於過度擬合特定任務參數(即輸出層)。這在直覺上是有道理的:我們同時學習的任務越多,我們的模型就越需要找到一個能夠捕獲所有任務的表示,而我們在原始任務上過度擬合的機會就越小。
- 3.2 軟參數共享
另一方面,在軟參數共享中,每個任務都有自己的模型和參數。然後對模型參數之間的距離進行正則化,以鼓勵參數相似。[8] 例如,使用L2正則化,而[9]使用trace norm。
深度神經網絡中用於軟參數共享的約束很大程度上受到了MTL正則化技術的啟發,我們將很快討論這些技術。
4、為什麼多任務學習work?
儘管通過多任務學習獲得的歸納偏差在直覺上似乎是合理的,但為了更好地理解MTL,我們需要研究其背後的機制。其中大多數是由Caruana(1998)首先提出的。對於所有的例子,我們假設我們有兩個相關的任務A和B,他們共同依賴一個公共的隱藏層表示F。
- 4.1 隱式數據增強
MTL有效地增加了我們用來訓練模型的樣本量。因為所有的任務至少都有點嘈雜,所以在訓練一個模型執行某項任務時,我們的目標是學習一個好的任務表示法,一種理想的忽略數據相關噪聲的方法。由於不同任務具有不同的噪聲模式,同時學習兩個任務的模型能夠學習更一般的表示。
- 4.2 Attention focusing
如果一個任務是非常嘈雜的,或者數據是有限的和高維的,那麼模型很難區分相關和不相關的特徵。MTL可以幫助模型將注意力集中在那些實際重要的特性上,因為其他任務將為這些特性的相關性或不相關性提供額外的證據。
- 4.3 竊聽機制(Eavesdropping)
如果一個任務是非常嘈雜的,或者數據是有限的和高維的,那麼模型很難區分相關和不相關的特徵。MTL可以幫助模型將注意力集中在那些實際重要的特性上,因為其他任務將為這些特性的相關性或不相關性提供額外的證據。
- 4.3 表示偏差(Representation bias)
MTL將模型偏向於其他任務也喜歡的表徵。這也將有助於該模型推廣到未來的新任務,因為假設空間在足夠多的訓練任務中表現良好,只要它們來自相同的環境,也將在學習新任務中表現良好
- 4.4 正則化
最後,MTL通過引入感應偏置來充當正則化器。因此,它降低了過度擬合的風險以及模型的Rademacher複雜性,即它擬合隨機噪聲的能力。
閱讀更多 代碼人老周 的文章