遷移學習與多任務學習簡析

摘要: 本文簡要介紹遷移學習與多任務學習的思想,給出了兩種方法的模型示例圖,適合對此感興趣的初學者。網絡

對於深度學習而言,訓練網絡這一過程是至關乏味的,須要不斷根據實驗結果調整網絡結構和模型。相對於隨機初始化後調參而言,有沒有更加高效的方式呢?答案是確定的。一些科研人員發現,將其它訓練好的模型從新應用於另一個任務,或者是將相同的網絡模型應用於多任務中,模型性能可能會更好。本文將討論這兩種重要方法——遷移學習(Transfer Learning)和多任務學習(Multi-task Learning)。性能

遷移學習

在遷移學習中,科研人員但願利用源任務(source task)學到的知識來幫助學習另外一個目標任務(target task)。例如,能夠將一個訓練好的圖像分類網絡模型用於另外一個與圖像識別相關的任務。另一個例子是將模擬環境中訓練的網絡所學到的知識(網絡參數)遷移到真實環境的網絡中。學習

基本上,神經網絡遷移學習主要有兩個應用場景:特徵提取(Feature Extraction)和微調(Fine Tuning)。對於ImageNet挑戰賽而言,衆所周知的一個網絡模型是VGG網絡,該網絡模型能夠分類1000種不一樣的圖像,所以能夠將其應用到另一個任務中,好比具體的醫學圖像分類。如何去尋找已訓練好的網絡模型呢?有些網站已經對此有所總結,好比Model zoo。優化

clipboard.png

1.特徵提取網站

在特徵提取中,能夠在預先訓練好的網絡結構後添加一個簡單的分類器,將源任務上的預先訓練好的網絡做爲另外一個目標任務的特徵提取器,只對最後增長的分類器參數進行從新學習,而預先訓練好的網絡參數不被修改。這使得新任務的特徵提取時使用的是源任務中學習到的參數,而不用從新學習全部參數。可是,這些網絡參數可能對源任務而言顯得更加適合。spa

2.微調設計

微調容許修改預先訓練好的網絡參數來學習目標任務。通常而言,其大體過程是在預先訓練過的網絡上添加新的隨機初始化層,此外預先訓練的網絡參數也會被更新,但會使用較小的學習率以防止預先訓練好的參數發生較大改變。經常使用的方法是固定底層的參數,調整一些頂層或具體層的參數。這樣作的好處能夠減小訓練參數的數量,同時也有助於克服過擬合現象的發生,尤爲是當目標任務的數據量不足夠大的時候,該方法實踐起來頗有效果。實際上,微調要優於特徵提取,由於它可以對遷移過來的預訓練網絡參數進行優化,使其更加適合新的任務。blog

遷移學習應用的基本場景

遷移學習大致上根據兩個主要因素(1.目標任務的數據集大小、2.源目標和目標任務之間的類似性)將其分紅如下四種場景:ip

場景1:目標任務的數據集是小數據集,且目標任務相似於源目標任務:在這種狀況下,建議使用遷移學習中的特徵提取方法,由於目標任務的數據集很小,再對其進行訓練會致使模型發生過擬合現象。v8

場景2:目標數據集很小,且目標任務與源任務不一樣:這種狀況建議對底層進行微調,而移除源任務中更深的層、特定層。簡而言之,就是隻使用源任務中的底層特徵提取網絡。

場景3:目標數據集很大,且目標任務相似於源任務:在這種狀況下,因爲擁有大量的數據集,建議從頭開始訓練網絡,網絡參數初始化是使用隨機初始化的方式。簡而言之,就是不依賴於其它預訓練好的網絡。可是,根據相關研究,利用預先訓練好的網絡模型來初始化或微調底層的幾層網絡效果會比徹底隨機初始化的效果更好。

場景4:目標數據集很大,且目標任務與源任務不一樣:在這種狀況下,能夠微調預先訓練好的網絡中的多層或整個網絡的參數。

多任務學習

多任務學習的主要目標是經過使用來自這些任務的樣原本優化全部網絡參數,同時提高多任務的性能。例如,咱們但願有一個網絡模型能夠將輸入的人臉圖像分類爲男性或女性,同時還可以預測其年齡。這個案例中有兩個相關的任務:一個是二元分類任務,另外一個是迴歸任務。顯而易見,這兩個任務是相關的,學習其中一個任務的同時應該加強對另外一個任務的理解。

clipboard.png

一種簡單的多任務網絡設計模型示例如上圖所示,能夠在任務和任務之間共享部分網絡結構。共享部分學習到的是多個任務的共享表示,共享表示具備較強的抽象能力,可以適應多個不一樣但相關的目標任務,一般使得多任務中的主任務得到更好的泛化能力。另外一方面,針對每一個不一樣的任務都會設計具體的頂層網絡結構(頭),頂層網絡結構用來學習如何使用共享表示來完成每一個特定的任務。

做者信息

Ibrahim sobh,首席研究員,專一於深度學習

詳細內容請查看原文

相關文章
相關標籤/搜索