模型獨立學習:多任務學習與遷移學習

導讀:機器學習的學習方式包括監督學習和無監督學習等。針對一個給定的任務,首先要準備一定規模的訓練數據,這些訓練數據需要和真實數據的分佈一致,然後設定一個目標函數和優化方法,在訓練數據上學習一個模型。此外,不同任務的模型往往都是從零開始來訓練的,一切知識都需要從訓練數據中得到。這也導致了每個任務都需要準備大量的訓練數據。在實際應用中,我們面對的任務往往難以滿足上述要求,比如訓練任務和目標任務的數據分佈不一致,訓練數據過少等。這時機器學習的應用會受到很大的侷限。並且在很多場合中,我們也需要一個模型可以快速地適應新的任務。因此,人們開始關注一些新的學習方式。

本文中將介紹兩種典型的“模型獨立的學習方式”:多任務學習和遷移學習。這裏“模型獨立”是指這些學習方式不限於具體的模型,不管是前饋神經網絡、循環神經網絡還是其他模型。

01

多任務學習

一般的機器學習模型都是針對單一的特定任務,比如手寫體數字識別、物體檢測等。不同任務的模型都是在各自的訓練集上單獨學習得到的。如果有兩個任務比較相關,它們之間會存在一定的共享知識,這些知識對兩個任務都會有所幫助。這些共享的知識可以是表示(特徵)、模型參數或學習算法等。目前,主流的多任務學習方法主要關注於表示層面的共享。

多任務學習(Multi-task Learning)是指同時學習多個相關任務,讓這些任務在學習過程中共享知識,利用多個任務之間的相關性來改進模型在每個任務上的性能和泛化能力。多任務學習可以看作是一種歸納遷移學習(Inductive Transfer Learning),即通過利用包含在相關任務中的信息作爲歸納偏置(Inductive Bias)來提高泛化能力[Caruana, 1997]。

1. 共享機制

多任務學習的主要挑戰在於如何設計多任務之間的共享機制。在傳統的機器學習算法中,引入共享的信息是比較困難的,通常會導致模型變得複雜。但是在神經網絡模型中,模型共享變得相對比較容易。深度神經網絡模型提供了一種很方便的信息共享方式,可以很容易地進行多任務學習。多任務學習的共享機制比較靈活,有很多種共享模式。圖10.1給出了多任務學習中四種常見的共享模式,其中A、B和C表示三個不同的任務,橙色框表示共享模塊,藍色框表示任務特定模塊。

圖10.1 多任務學習中四種常見的共享模式

這四種常見的共享模式分別爲:

  • 硬共享模式:讓不同任務的神經網絡模型共同使用一些共享模塊(一般是低層)來提取一些通用特徵,然後再針對每個不同的任務設置一些私有模塊(一般是高層)來提取一些任務特定的特徵。

  • 軟共享模式:不顯式地設置共享模塊,但每個任務都可以從其他任務中“竊取”一些信息來提高自己的能力。竊取的方式包括直接複製使用其他任務的隱狀態,或使用注意力機制來主動選取有用的信息。

  • 層次共享模式:一般神經網絡中不同層抽取的特徵類型不同,低層一般抽取一些低級的局部特徵,高層抽取一些高級的抽象語義特徵。因此如果多任務學習中不同任務也有級別高低之分,那麼一個合理的共享模式是讓低級任務在低層輸出,高級任務在高層輸出。

  • 共享-私有模式:一個更加分工明確的方式是將共享模塊和任務特定(私有)模塊的責任分開。共享模塊捕捉一些跨任務的共享特徵,而私有模塊只捕捉和特定任務相關的特徵。最終的表示由共享特徵和私有特徵共同構成。

2. 學習步驟

在多任務學習中,每個任務都可以有自己單獨的訓練集。爲了讓所有任務同時學習,我們通常會使用交替訓練的方式來“近似”地實現同時學習。

假設有M個相關任務,第m個任務的訓練集爲Dm,包含Nm個樣本。

其中x(m,n)和y(m,n)表示第m個任務中的第n個樣本以及它的標籤。

假設這M個任務對應的模型分別爲fm(x;θ),1≤m≤M,多任務學習的聯合目標函數爲所有任務損失函數的線性加權。

其中Lm(·)爲第m個任務的損失函數,ηm是第m個任務的權重,θ表示包含了共享模塊和私有模塊在內的所有參數。權重可以根據不同任務的重要程度來賦值, 也可以根據任務的難易程度來賦值。通常情況下,所有任務設置相同的權重,即ηm= 1,1≤m≤M。

多任務學習的流程可以分爲兩個階段:

  • 聯合訓練階段:每次迭代時,隨機挑選一個任務,然後從這個任務中隨機選擇一些訓練樣本,計算梯度並更新參數;

  • 單任務精調階段:基於多任務學習得到的參數,分別在每個單獨任務進行精調。其中單任務精調階段爲可選階段。當多個任務的差異性比較大時,在每個單任務上繼續優化參數可以進一步提升模型能力。

多任務學習中聯合訓練階段的具體過程如算法10.4所示:

多任務學習通常可以獲得比單任務學習更好的泛化能力,主要有以下幾個原因:

  • 多任務學習在多個任務的數據集上進行訓練,比單任務學習的訓練集更大。由於多個任務之間有一定的相關性,因此多任務學習相當於是一種隱式的數據增強,可以提高模型的泛化能力。

  • 多任務學習中的共享模塊需要兼顧所有任務,這在一定程度上避免了模型過擬合到單個任務的訓練集,可以看作是一種正則化。

  • 既然一個好的表示通常需要適用於多個不同任務,多任務學習的機制使得它會比單任務學習獲得更好的表示。

  • 在多任務學習中,每個任務都可以“選擇性”利用其他任務中學習到的隱藏特徵,從而提高自身的能力。

02

遷移學習

標準機器學習的前提假設是訓練數據和測試數據的分佈是相同的。如果不滿足這個假設,在訓練集上學習到的模型在測試集上的表現會比較差。而在很多實際場景中,經常碰到的問題是標註數據的成本十分高,無法爲一個目標任務準備足夠多相同分佈的訓練數據。因此,如果有一個相關任務已經有了大量的訓練數據,雖然這些訓練數據的分佈和目標任務不同,但是由於訓練數據的規模比較大,我們假設可以從中學習某些可以泛化的知識,那麼這些知識對目標任務會有一定的幫助。如何將相關任務的訓練數據中的可泛化知識遷移到目標任務上,就是遷移學習(Transfer Learning)要解決的問題。

具體而言,假設一個機器學習任務T的樣本空間爲X×Y,其中X爲輸入空間,Y爲輸出空間,其概率密度函數爲p(x,y)。爲簡單起見,這裏設X爲D維實數空間的一個子集,Y爲一個離散的集合。

一個樣本空間及其分佈可以稱爲一個領域(Domain):D=(X,Y,p(x,y))。給定兩個領域,如果它們的輸入空間、輸出空間或概率分佈中至少一個不同,那麼這兩個領域就被認爲是不同的。從統計學習的觀點來看,一個機器學習任務T定義爲在一個領域D上的條件概率p(y|x)的建模問題。

遷移學習是指兩個不同領域的知識遷移過程,利用源領域(Source Domain)DS中學到的知識來幫助目標領域(Target Domain)DT上的學習任務。源領域的訓練樣本數量一般遠大於目標領域。

表10.1給出了遷移學習和標準機器學習的比較。

表 10.1 遷移學習和標準機器學習的比較

遷移學習根據不同的遷移方式又分爲兩個類型:歸納遷移學習(Inductive Transfer Learning)和轉導遷移學習(Transductive Transfer Learning)。這兩個類型分別對應兩個機器學習的範式:歸納學習(Inductive Learning)和轉導學習(Transductive Learning)[Vapnik, 1998]。一般的機器學習都是指歸納學習,即希望在訓練數據集上學習到使得期望風險(即真實數據分佈上的錯誤率)最小的模型。而轉導學習的目標是學習一種在給定測試集上錯誤率最小的模型,在訓練階段可以利用測試集的信息。

歸納遷移學習是指在源領域和任務上學習出一般的規律,然後將這個規律遷移到目標領域和任務上;而轉導遷移學習是一種從樣本到樣本的遷移,直接利用源領域和目標領域的樣本進行遷移學習。

1. 歸納遷移學習

在歸納遷移學習中,源領域和目標領域有相同的輸入空間XS=XT,輸出空間可以相同也可以不同,源任務和目標任務一般不相同TS≠TT,即pS(y|x)≠pT(y|x)。一般而言,歸納遷移學習要求源領域和目標領域是相關的,並且源領域DS有大量的訓練樣本,這些樣本可以是有標註的樣本,也可以是無標註樣本。

  • 當源領域只有大量無標註數據時,源任務可以轉換爲無監督學習任務,比如自編碼和密度估計任務。通過這些無監督任務學習一種可遷移的表示,然後再將這種表示遷移到目標任務上. 這種學習方式和自學習(Self-Taught Learning)[Raina et al., 2007]以及半監督學習比較類似。比如在自然語言處理領域,由於語言相關任務的標註成本比較高,很多自然語言處理任務的標註數據都比較少,這導致了在這些自然語言處理任務上經常會受限於訓練樣本數量而無法充分發揮深度學習模型的能力。同時,由於我們可以低成本地獲取大規模的無標註自然語言文本,因此一種自然的遷移學習方式是將大規模文本上的無監督學習(比如語言模型)中學到的知識遷移到一個新的目標任務上。從早期的預訓練詞向量(比如word2vec [Mikolov et al., 2013]和GloVe [Pennington et al., 2014]等)到句子級表示(比如ELMO [Peters et al., 2018]、OpenAI GPT [Radford et al., 2018]以及BERT[Devlin et al., 2018]等)都對自然語言處理任務有很大的促進作用。

  • 當源領域有大量的標註數據時,可以直接將源領域上訓練的模型遷移到目標領域上。比如在計算機視覺領域有大規模的圖像分類數據集 ImageNet [Deng et al., 2009]。由於在ImageNet數據集上有很多預訓練的圖像分類模型,比如AlexNet[Krizhevsky et al., 2012]、VGG [Simonyan et al., 2014]和ResNet[He et al., 2016]等,我們可以將這些預訓練模型遷移到目標任務上。

在歸納遷移學習中,由於源領域的訓練數據規模非常大,這些預訓練模型通常有比較好的泛化性,其學習到的表示通常也適用於目標任務。歸納遷移學習一般有下面兩種遷移方式:

  • 基於特徵的方式:將預訓練模型的輸出或者是中間隱藏層的輸出作爲特徵直接加入到目標任務的學習模型中。目標任務的學習模型可以是一般的淺層分類器(比如支持向量機等)或一個新的神經網絡模型。

  • 精調的方式:在目標任務上覆用預訓練模型的部分組件,並對其參數進行精調(fine-tuning)。

假設預訓練模型是一個深度神經網絡,這個預訓練網絡中每一層的可遷移性也不盡相同 [Yosinski et al., 2014]。通常來說,網絡的低層學習一些通用的低層特徵,中層或高層學習抽象的高級語義特徵,而最後幾層一般學習和特定任務相關的特徵。因此,根據目標任務的自身特點以及和源任務的相關性,可以有針對性地選擇預訓練模型的不同層來遷移到目標任務中。

將預訓練模型遷移到目標任務上通常會比從零開始學習的方式更好,主要體現在以下三點 [Torrey et al., 2010]:

  • 初始模型的性能一般比隨機初始化的模型要好;

  • 訓練時模型的學習速度比從零開始學習要快,收斂性更好;

  • 模型的最終性能更好,具有更好的泛化性。

歸納遷移學習和多任務學習也比較類似,但有下面兩點區別:

  • 多任務學習是同時學習多個不同任務,而歸納遷移學習通常分爲兩個階段,即源任務上的學習階段和目標任務上的遷移學習階段;

  • 歸納遷移學習是單向的知識遷移,希望提高模型在目標任務上的性能,而多任務學習是希望提高所有任務的性能。

2. 轉導遷移學習

轉導遷移學習是一種從樣本到樣本的遷移,直接利用源領域和目標領域的樣本進行遷移學習[Arnold et al., 2007]。轉導遷移學習可以看作一種特殊的轉導學習(Transductive Learning)[Joachims, 1999]。轉導遷移學習通常假設源領域有大量的標註數據,而目標領域沒有(或只有少量)標註數據,但是有大量的無標註數據. 目標領域的數據在訓練階段是可見的。

轉導遷移學習的一個常見子問題是領域適應(Domain Adaptation)。在領域適應問題中,一般假設源領域和目標領域有相同的樣本空間,但是數據分佈不同pS(x,y)≠pT(x,y)。 

根據貝葉斯公式,p(x,y)=p(x|y)p(y)=p(y|x)p(x),因此數據分佈的不一致通常由三種情況造成:

  • 協變量偏移(Covariate Shift):源領域和目標領域的輸入邊際分佈不同pS(x)≠pT(x),但後驗分佈相同pS(y|x)=pT(y|x),即學習任務相同TS=TT。

  • 概念偏移(Concept Shift):輸入邊際分佈相同pS(x)=pT(x),但後驗分佈不同pS(y|x)≠pT(y|x),即學習任務不同TS≠TT。

  • 先驗偏移(Prior Shift):源領域和目標領域中的輸出標籤y的先驗分佈不同pS(y)≠pT(y),條件分佈相同pS(x|y)=pT(x|y). 在這樣情況下,目標領域必須提供一定數量的標註樣本。

廣義的領域適應問題可能包含上述一種或多種偏移情況。目前,大多數的領域適應問題主要關注於協變量偏移,這樣領域適應問題的關鍵就在於如何學習域無關(Domain-Invariant)的表示。假設pS(y|x)=pT(y|x),領域適應的目標是學習一個模型f:X→Y使得:

其中L(·)爲損失函數,θf爲模型參數。

如果我們可以學習一個映射函數g:X→Rd,將x映射到一個特徵空間中,並在這個特徵空間中使得源領域和目標領域的邊際分佈相同pS(g(x;θg))=pT(g(x;θg)),∀x∈X,其中θg爲映射函數的參數,那麼目標函數可以近似爲:

其中RS(θf,θg)爲源領域上的期望風險函數,dg(S,T)是一個分佈差異的度量函數,用來計算在映射特徵空間中源領域和目標領域的樣本分佈的距離,γ爲一個超參數,用來平衡兩個子目標的重要性比例。這樣,學習的目標是優化參數θf,θg使得提取的特徵是領域無關的,並且在源領域上損失最小。

分別爲源領域和目標領域的訓練數據,我們首先用映射函數g(x,θg)將兩個領域中訓練樣本的輸入x映射到特徵空間,並優化參數θg使得映射後兩個領域的輸入分佈差異最小。分佈差異一般可以通過一些度量函數來計算,比如 MMD (Maximum Mean Discrepancy)[Gretton et al., 2007]、CMD(Central Moment Discrepancy)[Zellinger et al., 2017]等,也可以通過領域對抗學習來得到領域無關的表示 [Bousmalis et al., 2016; Ganin et al., 2016]。

以對抗學習爲例,我們可以引入一個領域判別器c來判斷一個樣本是來自於哪個領域。如果領域判別器c無法判斷一個映射特徵的領域信息,就可以認爲這個特徵是一種領域無關的表示。

對於訓練集中的每一個樣本x,我們都賦予z∈{1,0}表示它是來自於源領域還是目標領域,領域判別器c(h,θc)根據其映射特徵h=g(x,θg)來預測它來自於源領域的概率p(z=1|x)。由於領域判別是一個兩分類問題,h來自於目標領域的概率爲1-c(h,θc)。

因此,領域判別器的損失函數爲:

其中hS(n)=g(xS(n),θg),hD(m)=g(xD(m),θg) 分別爲樣本xS(n)和xD(m)的特徵向量。

這樣,領域遷移的目標函數可以分解爲兩個對抗的目標。一方面,要學習參數θc使得領域判別器c(h,θc)儘可能區分出一個表示h=g(x,θg)是來自於哪個領域;另一方面,要學習參數θg使得提取的表示h無法被領域判別器c(h,θc)預測出來,並同時學習參數θf使得模型f(h;θf)在源領域的損失最小。

03

總結

目前,神經網絡的學習機制主要是以監督學習爲主,這種學習方式得到的模型往往是任務定向的,也是孤立的。每個任務的模型都是從零開始來訓練的,一切知識都需要從訓練數據中得到,導致每個任務都需要大量的訓練數據。這種學習方式和人腦的學習方式是不同的,人腦的學習一般不需要太多的標註數據,並且是一種持續的學習,可以通過記憶不斷地累積學習到的知識。本文主要介紹了倆種和模型無關的學習方式:

  • 多任務學習是一種利用多個相關任務來提高模型泛化性的方法,可以參考文獻[Caruana, 1997; Zhang et al., 2017]。

  • 遷移學習是研究如何將在一個領域上訓練的模型遷移到新的領域,使得新模型不用從零開始學習。但在遷移學習中需要避免將領域相關的特徵遷移到新的領域 [Ganin et al., 2016; Pan et al., 2010]。遷移學習的一個主要研究問題是領域適應[Ben-David et al., 2010; Zhang et al., 2013]。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章