# An Overview of Multi-Task Learning in Deep Neural Networks ## 多任務學習(multitask learning)概述 把多個相關(related)的任務放在一起學習,同時學習多個任務。 相關性定義: 1.如果兩個任務是處理輸入的相同函式,但是在任務訊號中加入獨立的噪聲處理,很明顯這兩個任務是相關的。 2.如果兩個任務用於預測同個個體的屬性的不同方面,這些任務比預測不同個體的屬性的不同方面更相關。 3.兩個任務共同訓練時能相互幫助並不意味著它們是相關的:有時通過在後向傳播網路的一個額外輸出加入噪聲可以提高泛化能力,但是這個噪聲任務與其它任務不相關。 現實世界中很多問題不能分解為一個一個獨立的子問題,即使可以分解,各個子問題之間也是相互關聯的,通過一些共享因素或共享表示(share representation)聯繫在一起 把多個相關(related)的任務(task)放在一起學習它們可以在學習過程中,共享它們所學到的信息,這是單任務學習所具不備的。相關聯的多任務學習比單任務學能有更好的泛化(generalization)效果 多任務學習(Multitask Learning)是一種推導遷移學習方法,主任務(main tasks)使用相關任務(related tasks)的訓練信號(training signal)所擁有的領域相關信息(domain-specific information),做為一直推導偏差(inductive bias)來提升主任務(main tasks)泛化效果(generalization performance)的一種機器學習方法 **共享表示shared representation:** (1)基於參數的共享(Parameter based):比如基於神經網絡的MTL,高斯處理過程。 (2)基於約束的共享(regularization based):比如均值,聯合特徵(Joint feature)學習(創建一個常見的特徵集合) 原文網址:https://kknews.cc/education/j6llyyq.html ## introduction 這篇只是在對MTL的研究近況做一個回顧,從多任務學習 MTL 的背景、現狀、動機、方法、機制、實踐等方面,全面而詳實地對深度神經網絡多任務學習(Multi-Task Learning in Deep Neural Networks)進行了深度介紹 **MLT**:By sharing representations between related tasks, we can enable our model to generalize better on our original task 通常有很多形式:聯合學習(joint learning),自主學習(learning to learn自己學習要共享什麼),借助輔助任務學習(learning with auxiliary tasks) paper[1]簡要總結了 MTL 的目標:「MTL 通過利用包含在相關任務訓練信號中的特定領域的信息來改進泛化能力」 當優化多於一個loss function時通常就是在做MTL 我將2.首先從不同的角度闡述 MTL 的動機。然後,3.我將介紹 MTL 在深度學習中最常用的兩種方法(hard,soft共享)。隨後,4.我將描述 MTL 的機制,並闡述為什麼 MTL work in pratice。在研究更先進的基於神經網絡的 MTL 方法之前,5.我將通過討論 MTL 的文獻來提供一些背景。然後,6.我將介紹一些最近提出的更強大的深度神經網絡 MTL 方法。最後,7.我將討論常用的輔助任務類型,並討論什麼是一個好的 MTL 輔助任務 ## motivation 生物學上,人類會先學其他relative work得到很多knowledge後之後學其他東西會較快 而在機器學習上,我們可以視為inductive transfer(假設有很多標記的樣本)。而inductive transfer再透過引入inductive bias來改進模型。在多任務學習場景中,Inductive bias是由輔助任務來提供的,這會導致模型更傾向於那些可以同時解釋多個任務的解 **inductive transfer**:給定源領域Ds和源領域學習任務Ts、目標領域Dt和目標領域任務Tt的情況,且Ts不等於Tt,利用Ds與Ts去優化Dt的預測函數學習效果 當源領域中有很多標記樣本時,推導遷移學習與多任務學習(multitask learning)類似。區別在於,通過從源領域遷移知識,推導遷移學習只注重提升目標領域的效果;但多任務學習注重同時提升源領域和目標領域的效果 當源領域沒有標記樣本時,推導遷移學習與自學習類似 原文網址:https://kknews.cc/education/ov5klnp.html **inductive bias**:歸納出一個規律,來對模型做出約束,從而起到選擇模型,即根據自己歸納出的假設,去選擇模型 ## two MTL method 分為應硬共享與軟共享 **硬共享**:paper[2]直接用共同的隱藏層與參數,overfitting 風險低  **軟共享**:每個任務都有自己的model與參數,並對參數進行正規化來保證他們相似  例如: paper[4]使用 L2 距離進行正則化 paper[5]使用跡範數(trace norm) ## MLT的機制 假設有taskA與taskB共享相同隱藏層F **implicit data augmentation**:因為多task代表有更多sample可以去train model,使其得到一個更general的representation,避免overfitting **attention focusing**:當task噪音多、高維且data少,model會很難區分相關與不相關的特徵。MLP有助於幫助將model集中精神到相關高的特徵上,因為other task可以為特徵提供額外證據 **eavesdropping**:假設一些特徵G很難從taskA學到,但很容易從taskB學到,這時我們可以藉由taskB來學習特徵G,此即為竊聽(eavesdropping) paper[6]:hint方法 **representation bias**:MLT更傾向去學到一個其他Task都強調的表現的model,所以之後當有來自於同環境的new task其表現也會很好i.e.泛化(generalize)能力好 paper[7] **regularization**:透過引入inductive bias來達到regularization的作用。可以減少過擬合和減少fit random noise ## literature in MLT(MLT in non-neural network) 具體的說,我們將討論多任務學習中兩個普遍存在的重要思想:*1.對任務間的不同強制加稀疏性約束的正則化項2.建模任務之間的關系* **對任務間的不同強制加稀疏性約束的正則化項(Block-Sparsity Regularization)**:我們有T個任務,每個任務t,對應的模型記為Mt,模型參數記為at,維度為d維。我們用列向量來表示參數at(行)=[a1t,a2t...adt]。將這些列向量a1,a2,a3...aT堆起來形成一個矩陣A(dxT) paper[8]說所有model共享參數的一個小集合,這說明只有幾行是1其他為0,只有與之對應的特徵能在任務間共享,為了做到上述目的,我們強加L1正則化項(LASSO) Lasso:是一種同時進行特徵選擇和正則化(數學)的回歸分析方法,旨在增強統計模型的預測準確性和可解釋性 L1正則化的計算是基於任務參數矩陣A,首先對每行ai(對應每個任務的第i個特征)計算Lq正則化,產生列向量b(列)=[|a1|q,|a2|q...|ad|q],然後計算這個向量的L1正則化,從而強迫b中大部分項為0 一般來說,我們將之稱為混合正則化(mix norm)約束L1/Lq正則化。由於這樣做導致A的整行為0,故可稱之為塊稀疏性正則化(Block-Sparsity Regularization) paper[9]:使用L1/L無限正則化 paper[10]:group lasso paper[11]:用group lasso建立上界約束 paper[12]:證明了當任務間特征不重疊時,L1/lq正則化可能會比單純的元素層面的L1正則化效果更糟 paper[13]:提出了將塊稀疏正則化與元素稀疏正則化結合以改進塊稀疏模型 paper[14]:提出了一個分布式版本的group lasso正則化 **建模任務之間的關系**:上述約束可以使模型只有一部份參數被所有任務共享,但若有不相關的任務共享訊息會造成負遷移。在此我們使用某種先驗知識來表明相關與不相關 paper[15]:提出了一種聚類約束來同時懲罰列向量及其方差的正則化 paper[16]:為SVM方法提出了一個類似的約束 paper[17]:假設潛在的聚類正則化可以顯式表示為A上的聚類約束(當聚類數C已知時),將該聚類正則化分解為三部分:全局約束、聚類間的方差約束、聚類內的方差約束,衡量每個聚類的緊致程度,最後再將此三種先性組合起來。這種聚類約束中假設聚類或簇是預先知道的,所以他們引入了對上述正則項的約束進行放鬆 paper[18]:將group lasso擴展到多個任務呈現樹狀結構時 paper[19]:將group lasso擴展到多個任務呈現圖狀結構時 paper[20]:是首個用kNN來表示任務聚類的算法 paper[21]:試圖學習到多個任務之間的一個常見結構,來應用到半監督學習中 paper[22]:提出了一個用於多任務學習的貝葉斯神經網絡,通過對模型參數加先驗來鼓勵不同任務參數相似 paper[23]:通過推斷一個共享的協方差矩陣,將高斯過程擴展到多任務學習中。由於計算代價高,他們采用以個稀疏近似模式來貪心選擇最具信息量的實例 paper[24]:采用高斯過程來做多任務學習,假設多有的模型都來自於同一個先驗 paper[25]:將正態分布作為先驗,對每個任務相關的層進行約束。為了鼓勵不同任務間的相似性,他們提出了使得均值是任務相關的,使用混合分布來建模任務間的聚類。重要的是,他們需要任務的特點是預先定義聚類,並指定混合分布的數量 paper[26]基於paper[25],從Dirichlet過程中得到分布並能使得模型學習到任務間的相似性以及聚類的數目(簇數) paper[27]:提出了一個層次貝葉斯模型來學習任務間潛在的層次關系 paper[28]:使用高斯過程正則化來做多任務學習,並將高斯過程擴展到大規模場景中 其他還有一些方法在關註在線多任務學習(online Multi-task Learning)的場景 paper[29]:將已有方法擴展到online。他們也提出了正則化的感知器在多任務問題上的擴展,並將任務間的關系用一個矩陣來表示。他們使用看多種形式的正則化項來對這個任務相關矩陣進行偏置,如任務特征的相關程度,生成子空間維度的相關性等。值得註意的是,以往這些方法都需要任務特點來定義一個這樣的矩陣 paper[30]:擴展了上述方法,通過學習得到關係矩陣 paper[31]:假設任務形成了多個分割的組,處於同一個組內的任務位於同一個低維空間中。每組內部,任務共享一組特征表示,這些參數可以與組分配矩陣使用交替最小化模式共同學習得到,然而完全分割並非最佳方式 paper[32]:允許來自不同組的兩個任務之間有重疊 paper[33]:學習到一個共享假設的小集合,並將每個任務對應到一個假設上 ## Recent work on MLT for deep learning 現在大部分的深度學習都還是使用前面所提的硬共享與軟共享method,以下介紹專注於提出深度神經網絡中好的多任務學習機制 **深度關係網路(Deep Relationship Networks)**: paper[34]提出了深度關係網路,處理機器視覺的多任務。 除了共享層與任務相關層的結構,他們對全連接層添加矩陣先驗,這將*允許模型學習任務間的關系*。這一點對於機器視覺問題已經足夠,但是對於新任務有錯誤傾向  **完全自適應特征共享(Fully-Adaptive Feature Sharing)**:paper[35]提出了一個自底向上的方法。從較瘦的網絡開始,使用對相似任務自動分組的指標,貪心的動態加寬網絡,然而這種貪心的做法並不能得到全局的最優。 他們覺得各自很像,所以就聚在一起  參考:https://www.itread01.com/content/1542420853.html **十字繡網絡(Cross-Stitch Networks)**: paper[36]將兩個獨立的網絡用參數的軟共享方式連接起來。接著,他們描述了如何使用所謂的十字繡單元來決定怎麽將這些任務相關的網絡利用其他任務中學到的知識,並與前面層的輸出進行線性組合。  僅在pooling(池化)層與全連接層之後加入十字繡單元 **低層次監督(Low Supervision)**: 自然語言處理領域中近年來的多任務學習的工作重點在於找到一個好的層次結構,paper[37]展示了一些NLP中的基本工作,如詞性標註,命名實體識別等,應該被作為輔助任務,在較低層次時進行有監督學習 **聯合多任務模型(A Joint Many-Task Model)**: paper[38]預先定義了一個包含多個NLP任務的層次結構,並用來做多任務學習的聯合模型  詞性分析 POS->語塊分析 CHUNK->依存句法分析 DEP->文字語義相關 Relatedness->文字蘊涵 Entailment:這句話可能還有其他意思(可以通過不同的文字表達相同的含義) 參考:https://codertw.com/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80/517212/ **用不確定性對損失進行加權(Weighting losses with Uncertainty)**: paper[39]采用一種正交的方法來考慮每個任務的不確定性。他們調整每個任務在代價函數中的相對權重,基於最大化任務相關的不確定性似然函數原理,來得到多任務學習的目標  探索了有三个子任务的多任务学习网络,如上图所示,分别是语义分割,实例分割和深度估计,後面的同方差不确定性解释为任务相关的权重 将不同任务的loss简单线性加权求和  **多任務學習中的張量分解(Tensor factorisation for MTL)**: paper[40]將已有的一些使用張量分解技術推廣到模型參數劃分來分解出每層的共享參數於任務的相關系數 **水閘網絡(Sluice Networks)**: paper[41]中提到的水閘網絡,它是對多種基於深度神經網絡的多任務學習方法的泛化  這個模型可以學習到每層中哪些子空間是必須共享的,以及哪些是用來學習到輸入序列的一個好的表示的 **我的模型中應該共享些什麽?** 大多數的多任務學習中,任務都是來自於同一個分布的。盡管這種場景對於共享是有益的,但並不總是如此。為了研發更健壯的多任務模型,我們必須處理那些不相關的任務。 1.早期用於深度學習的多任務模型需要預定義任務間的共享結構,然而這種策略不適合擴展,因為他嚴重依賴於多任務的結構。 2.早在1997年就已經提出的參數的硬共享技術在20年後的今天仍舊是主流。盡管參數的硬共享機制在許多場景中有用,但是若任務間的聯系不那麽緊密,或需要多層次的推理,則硬共享技術很快失效。 3.最近也有一些工作研究*學習哪些可以共享*,這些工作的性能從一般意義上將優於硬共享機制 4.若模型已知,學習一個任務層次結構的容量也是有用的 多任務不應局限於將所有任務的知識都限制在同一個參數空間,而是更加關注於如何使我們的模型學習到任務間本應該的交互模式 ## 輔助任務(Auxiliary Tasks) 我們將討論如何找到一個輔助任務來使得多任務學習受益 **相關任務(Related Tasks)**: 使用相關任務作為一個輔助任務,對於多任務學習來說,是一個典型的選擇,以下為例子 paper[42]:使用頭部姿勢估計與面部特征屬性推斷輔助臉部輪廓檢測任務 paper[43]:同時學習查詢分類與網頁搜索 paper[44]:同時預測圖像中物體的類別和位置 paper[45]:同時預測文本到語言的過程中音素的持續時間和頻率 **對抗性(Adversarial)任務**: 有些任務沒有label,然而我們卻能找到任務與我們想要實現的目標是相反的例子,這樣的數據可以用來找對抗損失的最大值 paper[46]:展示了這種場景在領域自適應方面的成功例子。這種場景中的對抗任務用來預測輸入的領域。通過對對抗任務的梯度求逆,對抗任務損失最大化,得到這樣對於主任務是有利的 **提示(Hints)性任務**: 多任務學習可以學到單任務學不到的特征,使用Hints就是這樣一種有效的機制,在輔助任務中預測特征。 paper[47]:在情感分析中將一個輸入句子中是否包含正負面情感詞作為輔助任務 paper[48]:在錯誤名字識別中將判斷一個句子中是否包含名字作為輔助任務 **注意力集中(Focusing attention)**: 輔助任務可以用來將注意力集中在網絡可能忽略的圖像上。ex.對於學習方向掌控的任務中,單一任務可能會去忽略路標,那麽預測路標就可以作為一個輔助任務,迫使模型學會去表示它們,這樣的知識可以幫助主任務 ~~**量化平滑(Quantization smoothing)**: 對多任務來說,大家比較可以接受訓練目標是連續的。在許多情況下,需要人為評估收集的數據,例如預測疾病(低/中/高)或情感分析(積極/中性/消極)。使用降低量化的輔助任務可能有助於這些情況,由於目標更平滑,它們可能更容易學習~~ **預測輸入(Prediction input)**: 在某些情況下,使用某些特徵作為輸入是沒用的,因為對預設目標無益。然而它們仍然可以指導任務的學習,在這些情況下,這些特徵可以用作輸出而不是輸入 paper[49]提供了這種方法適用的幾種情況 **用未來預測現在**: 在許多情況下,某些特徵只能在預測之後才能使用。例如,對於自動駕駛汽車,車輛通過後可以進行更準確的障礙物測量和車道標記。對於這些例子,附加數據不能用作特徵,因為它不會在建模時作為輸入使用。然而,它可以用作輔助任務,以便在訓練期間向模型傳入額外的信息。 **表征學習(Representation learning)**: MTL 中輔助任務的目標是使模型能夠學習對主任務有共享或有幫助的表征。到此為止所討論的所有輔助任務都是隱式的:它們與主任務密切相關,以便幫助模型學習有用的表征。而顯式的也有可能,例如通過採用已知的任務使模型能夠學習可遷移的表征,paper[50]即為此 **為什麽輔助任務對主任務是有益的?** 尋找輔助任務主要是基於一種假設,即認為輔助任務與主任務有某種相關性,並且有助於預測主任務 1.Caruana(1997)定義如果兩個任務使用相同的特徵作判斷,那麼這兩個任務是相似的 2.Baxter(2000)認為理論上相關的任務共享一個共同的最優假設類,即具有相同的inductive bias 3.paper[50]提出,如果兩個任務的數據可以使用一個從一組分布變換 F 得到的固定機率分布生成,那麼兩個任務是 F-相關的 4.Xue 等人(2007)討論,如果兩個任務的分類邊界即參數向量接近,則兩個任務是相似的 在理解任務相關性方面,儘管有這些早期的理論進展,但實踐中還沒有太多進展。任務相似度不是binary,而是在一個頻譜範圍內。允許我們的模型學習分享的每個其他任務,可能使我們能夠暫時避開理論的缺失,並更好利用即使是鬆散相關的任務,然而,我們還需要制定一個有關任務相似性的原則概念,以便了解我們應該選擇哪些任務 paper[52]發現了標籤滿足緊湊且均勻分布的輔助任務,這適用於 NLP 中的序列標籤問題 paper[53]發現主任務更有可能快速達到高峰平穩(plateau),而輔助任務不容易達到高峰平穩 ## 應用 **臉部特徵點檢測** TCDCN除了檢測特徵點任務,還有識別眼鏡、笑臉、性別和姿態這四個輔助任務,通過與其它網路的對比,可以看出輔助任務使主任務的檢測更準確。 loss function相同可以直接相加去優化,不同可以分別優化更新model參數 學習所有任務權重的協方差矩陣來解決收斂速度不同的問題,但是這種方法只能在所有任務的損失函式相同時才能應用 TCDCN採用一種儘快停止輔助任務的方法,避免這些任務對訓練集過擬合後影響主任務的學習:在訓練開始時,TCDCD受所有任務的約束,避免陷入不好的區域性最優;隨著訓練的進行,有些輔助任務將不再使主任務受益,它們的學習過程將被停止 ## Conclusion 在本篇概述中,我們回顧了多任務學習的發展歷程,以及最近的深度學習MTL的研究。雖然對MTL的應用更加頻繁,但是有 20 年歷史的硬參數共享模式仍然普遍存在於神經網絡MTL中。然而,最近已經在讓model自己學習什麼該共享,這是一大進步。但同時,我們對任務的理解仍然有限(如,它們的相似性、關係、層次結構和MTL的用處),我們需要更多地了解它們,以便更好地了解MTL在深度神經網絡方面的泛化能力。 參考網址:https://www.itread01.com/content/1499678535.html 參考網址:https://kknews.cc/news/vaqzyo4.html 看其他paper的網址:https://ruder.io/multi-task/
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up