如何讓訓練神經網路不無聊?試試遷移學習和多工學習

技術小能手發表於2018-05-29

訓練深度神經網路是一個乏味的過程。更實際的方法,如重新使用訓練好的網路解決其他任務,或針對許多工使用相同的網路。這篇文章中,我們會討論兩個重要的方法:遷移學習和多工學習。

遷移學習

在遷移學習中,我們希望利用源任務學到的知識幫助學習目標任務。例如,一個訓練好的影像分類網路能夠被用於另一個影像相關的任務。再比如,一個網路在模擬環境學習的知識可以被遷移到真實環境的網路。

總的來說,神經網路遷移學習有兩種方案:特徵提取和微調。遷移學習一個典型的例子就是載入訓練好VGG網路,這個大規模分類網路能將影像分到1000個類別,然後把這個網路用於另一個任務,如醫學影像分類。

如何讓訓練神經網路不無聊?試試遷移學習和多工學習

1特徵提取:

特徵提取是針對目標任務把一個簡單的分類器加在源任務上預訓練的網路上,將預訓練的網路作為特徵提取器。僅有新增的分類器的引數需要更新,預訓練的網路的引數不變。這能使新任務從源任務中學習到的特徵中受益。但是,這些特徵更加適合源任務。

2微調:

微調允許學習目標任務時修改預訓練的網路引數。通常,在預訓練的網路之上加一個新的隨機初始化的層。預訓練網路的引數使用很小的學習率更新防止大的改變。通常會凍結網路底層的引數,這些層學到更通用的特徵,微調頂部的層,這些層學到更具體的特徵。同時,凍結一些層能夠減少需要訓練的引數的數量,避免過擬合問題,尤其時在目標任務資料量不夠大的情況下。實踐中,微調勝過特徵提取因為他針對新的任務優化了預訓練的網路。

遷移學習的基本情形:

遷移學習可以分為4種情形基於以下兩個因素:1)目標任務資料集的大小,2)源任務與目標任務的相似度:

情形1:目標資料集很小,目標任務與源任務相似:這種情況使用特徵提取,因為目標資料集小容易造成過擬合。

情形2:目標資料集很小,目標任務與源任務不同:這時我們微調底層網路,並移除高層網路。換句話說,我們使用較早的特徵提取。

情形3:目標資料集很大,目標任務與源任務相似:我們有了大量的資料,我們可以隨機初始化引數,從頭開始訓練網路。然而,最好還是使用預訓練的網路初始化引數並微調幾層。

情形4:目標資料集很大,目標任務與源任務不同。這時,我們微調大部分層甚至整個網路。

多工學習

多工學習的主要目標是通過使用多個任務的樣本優化網路的引數改進任務的效能。例如,我們希望有一個網路可以根據輸入的臉部影像區分是男性還是女性,同時可以預測這個人的年齡。這時,我們有兩個相關的任務,一個是二分類,一個是迴歸任務。顯然兩個任務是相關的,對一個任務的學習可以改進另外一個任務。

如何讓訓練神經網路不無聊?試試遷移學習和多工學習

一個簡單的網路設計例項,可以在任務和任務之間共享一部分網路。共享部分學習任務通用的中間表達,有助於這些共同的學習任務。另一方面,針對特定的學習任務,特定的頭部會學習如何使用這些共享表達。

原文釋出時間為:2018-05-29

本文來自雲棲社群合作伙伴“雷鋒網”,瞭解相關資訊可以關注“雷鋒網”。


相關文章