來自:圓圓的算法筆記;作者:Fareise
遷移學習廣泛地應(yīng)用于NLP、CV等各種領(lǐng)域,通過在源域數(shù)據(jù)上學習知識,再遷移到下游其他目標任務(wù)上,提升目標任務(wù)上的效果。其中,Pretrain-Finetune(預(yù)訓練+精調(diào))模式是最為常見的一種遷移學習方法。例如NLP中的預(yù)訓練Bert模型,通過在下游任務(wù)上Finetune即可取得比直接使用下游數(shù)據(jù)任務(wù)從零訓練的效果要好得多。
雖然在預(yù)訓練模型上Finetune能取得非常好的效果,我們經(jīng)常使用Finetune方法,但是你是否有想過這種Finetune方法有沒有什么優(yōu)化方法?如何Finetune對最終效果好壞有非常大的影響。例如,在Finetune時我們會考慮要遷移預(yù)訓練網(wǎng)絡(luò)的哪些層,哪些層需要凍結(jié),哪些層需要隨著模型一起Finetune。實際應(yīng)用時,我們往往需要嘗試不同的遷移方法和Finetune策略來達到最優(yōu)效果。目前學術(shù)界也有很多創(chuàng)新性較強的花式Finetune方法研究。本文介紹了來自2018年以來ICML、CVPR等頂會的7篇論文,總結(jié)了Finetune的四種類型招式,通過更科學的Finetune方式,提升遷移學習效果。
招式1:使用Pretrain模型做約束
在Finetune階段,如果我們可用于Finetune的目標任務(wù)數(shù)據(jù)量較少時,很有可能出現(xiàn)過擬合現(xiàn)象,嚴重影響模型效果;或者在Finetune過程中出現(xiàn)知識遺忘問題(catastrophic memory),把Pretrain階段學到的有用知識遺忘,丟了西瓜撿了芝麻。為了解決這種問題,學術(shù)界提出利用Pretrain模型作為約束,指導Finetune的過程,讓Finetune得到的模型更加魯棒。具體包括:直接使用Pretrain模型的參數(shù)作為約束、使用Pretrain模型的中間層表示作為約束、使用Pretrain模型對不同特征注意力強度作為約束。
為了防止模型在Finetune階段過擬合目標任務(wù)數(shù)據(jù),或忘記了Pretrain階段學到的有意義知識,Explicit inductive bias for transfer learning with convolutional networks(ICML 2018)這篇文章介紹了一種使用Pretrain模型參數(shù)約束Finetune過程的方法:通過添加Pretrain模型參數(shù)和Finetune模型參數(shù)之間的某種正則化損失,讓Finetune后的模型參數(shù)和最開始的Pretrain模型參數(shù)更加相似。文章中嘗試了多種正則化方法,通過最終的實驗發(fā)現(xiàn),一個簡單的L2正則效果最好,即對于Pretrain模型和Finetune模型的對應(yīng)層的參數(shù)計算L2距離,作為Finetune過程中損失函數(shù)的一部分,公式如下(w為Finetune參數(shù),w0位Pretrain參數(shù)):
通過L2正則化的方法拉近Pretrain模型和Target模型參數(shù)也存在一定問題,如何設(shè)定正則化的強度直接決定了遷移效果,正則化太弱仍然會導致過擬合和信息遺忘,遷移強度太強會導致Finetune的模型在Target任務(wù)上不是最優(yōu)解。百度的文章DELTA: DEEP LEARNING TRANSFER USING FEATURE MAP WITH ATTENTION FOR CONVOLUTIONAL NET- WORKS(ICLR 2019)提出,通過約束網(wǎng)絡(luò)的behavior,即feature map,而非模型參數(shù),來實現(xiàn)約束目標。具體的,約束項可以表示為如下形式:
其中,Wj表示第j個卷積層的約束強度,F(xiàn)M表示第i個樣本經(jīng)過參數(shù)w提取的feaure map。Wj的計算方法為,使用Pretrain的模型Freeze住底層Feature Extractor參數(shù),F(xiàn)inetune后面Discriminator參數(shù),通過衡量去掉每個channel后效果的損失,的到這個channel的遷移強度。如果去掉Pretrain模型某個channel后效果下降特別明顯,說明Pretrain得到的這個channel的信息對Target任務(wù)是很有效的,這個時候要增大這種channel參數(shù)的遷移強度。
采用Pretrain模型對Finetune模型進行約束需要引入額外的正則化Loss,可以被稱為Transfer Loss。由于Transfer Loss和Target Task Loss的優(yōu)化目標不同,如何平衡兩個Loss的關(guān)系決定了遷移效果。為了統(tǒng)一這兩種Loss,Robust Knowledge Transfer via Hybrid Forward on the Teacher-Student Model(AAAI 2021)提出了一種混合前向網(wǎng)絡(luò)。當一個樣本輸入時,會通過三種不同的路徑得到三種Loss,Loss1和Loss2通過交替進入Student網(wǎng)絡(luò)(Target Task模型)某層和Teachder網(wǎng)絡(luò)(Pretrain模型)某層,最終再通過Target Task Head得到;Loss3只進入Student網(wǎng)絡(luò)通過Target Task Head得到。Loss1和Loss2代表了Student網(wǎng)絡(luò)和Teachder網(wǎng)絡(luò)Transfer Loss,Loss3代表了Target Task的優(yōu)化Loss。與之前方法相比,該方法的三個Loss都是以優(yōu)化Target Task為目標的,因此可以通過直接對比來判斷目前的Transfer強度是否太強。文中設(shè)計了一種簡單的平衡Transfer Loss和Target Loss的方法,讓兩個任務(wù)的Loss同等重要,隨著訓練過程動態(tài)計算Loss1和Loss2的權(quán)重。
招式2:選擇性地對Pretrain模型遷移
Pretrain模型中的參數(shù)不一定都是對下游任務(wù)有幫助的,因此一些研究提出,對Pretrain的模型進行有選擇性的遷移,重點遷移那些對下游任務(wù)幫助大的信息。Learning What and Where to Transfer(ICML 2019)中提出一種基于meta-learning的遷移學習方法。這篇文章的核心思路建立在FITNETS: HINTS FOR THIN DEEP NETS(ICLR 2015)一文提出的遷移方法之上,讓Target模型通過一個回歸任務(wù)擬合Pretrain模型中間層的表示,該優(yōu)化目標可以表示為:
在FitNet中WGuided和WHint分別表示Target模型的Pretrain模型某一對應(yīng)層的參數(shù)。Learning What and Where to Transfer(ICML 2019)對該方法進行了擴展。在What to transfer階段,對每一個channel的遷移做一個權(quán)重學習,每個channel的權(quán)重是通過一個單獨的網(wǎng)絡(luò)輸入圖片在Source模型的輸出計算得到的(T代表Target模型,S代表Source模型,與FitNet中的Guided和Hint相對應(yīng)):
在Where to transfer階段,主要決定Source模型到Target模型的遷移層pair,即Source模型的第i層參數(shù)要遷移到Target模型的哪一層。類似What to transfer,通過一個單獨的網(wǎng)絡(luò)學習(i,j)這組Source模型到Target模型pair對的遷移強度:
最終的Loss由上面兩個階段的Loss,以及任務(wù)本身的Loss共同組成。在訓練階段,文章采用了Meta-learning的方法,內(nèi)循環(huán)階段更新總體Loss,外循環(huán)階段更新三個Loss的總和。Meta-learning原理可以參考歷史文章Meta-learning核心思想及近年頂會3個優(yōu)化方向。
招式3:在Finetune階段調(diào)整網(wǎng)絡(luò)結(jié)構(gòu)
之前介紹的遷移學習方法,大多數(shù)都是通過Finetune對Pretrain模型的參數(shù)進行調(diào)整。然而,下游的Target任務(wù)可能需要和Source任務(wù)采用不同的模型結(jié)構(gòu)來更好的進行學習。因此,TransTailor: Pruning the Pre-trained Model for Improved Transfer Learning(AAAI 2021)提出了一種在Finetune階段動態(tài)剪枝的方法,實現(xiàn)Finetune階段不僅能夠調(diào)整模型參數(shù),還能調(diào)整模型網(wǎng)絡(luò)結(jié)構(gòu)。該方法分為Target-aware Pruning和Importance-aware Finetuning兩個階段。在Target-aware Pruning階段,對于網(wǎng)絡(luò)中每一層的每一個filter,都對應(yīng)一個可學習的權(quán)重,把Pretrain模型的參數(shù)Freeze住,使用Target任務(wù)的數(shù)據(jù)和優(yōu)化目標進行訓練,得到每組參數(shù)最終對應(yīng)的權(quán)重,訓練過程可以表示為:
這個重要性權(quán)重會使用泰勒變換,融合全局各層的打分結(jié)果得到全局的打分,最后將打分較低的網(wǎng)絡(luò)參數(shù)剪枝掉。在Importance-aware Finetuning,會結(jié)合第一階段得到的參數(shù)打分進行Finetune,具體的,通過將每組參數(shù)的打分結(jié)果乘到參數(shù)上,的到參數(shù)的轉(zhuǎn)換結(jié)果進行前向傳播。最終兩個過程交替進行,直到得到最終模型。
招式4:學習每組參數(shù)Transfer的方式
在利用Pretrain模型進行遷移學習時,我們往往需要決定哪些網(wǎng)絡(luò)的參數(shù)要Freeze,哪些網(wǎng)絡(luò)參數(shù)跟隨Target任務(wù)Finetune。例如,在CV領(lǐng)域,一些研究表明底層網(wǎng)絡(luò)能夠提取出更一般的圖像規(guī)律,而接近分類層的參數(shù)對于不同Task差異很大,因此為了不將Pretrain階段學到的知識破壞,將底層參數(shù)Freeze,只Finetune上層參數(shù),會最大限度保留Pretrain階段在大量數(shù)據(jù)學到的知識,提升遷移學習效果。然而,不同任務(wù)需要Freeze的參數(shù)存在差異,人工調(diào)試不同的Transfer方式(哪些層Freeze、哪些層Finetune)效率很低。同時,一般的Finetune假設(shè)每個Target樣本都應(yīng)該使用相同的Finetune方式,這也是不合理的。例如,和source domain更相似的樣本,從source domain遷移更多知識更有幫助。因此,學術(shù)界出現(xiàn)一些相關(guān)工作,自動化學習每層以及每個樣本的遷移策略。
在SpotTune: Transfer Learning through Adaptive Fine-tuning(CVPR 2019)這篇文章中,提出了對于每個樣本學習一個個性化的遷移方式。對于每個樣本,經(jīng)過網(wǎng)絡(luò)的每層可以選擇是使用Pretrain模型的原始參數(shù),還是使用Pretrain模型初始化后Finetune的參數(shù)。模型通過一個Policy Network,輸入每個樣本的特征(一般使用Pretrain模型對樣本的表征向量),輸出模型每組參數(shù)的遷移方式(使用Pretrain模型原始參數(shù),或使用Pretrain模型初始化后Finetune的參數(shù))。這個過程中需要對兩種遷移方式進行采樣,而采樣運算不可導。為了讓該運算可導,本文使用了Gumbel-Max Trick生成采樣結(jié)果。SpotTune的模型結(jié)構(gòu)如下圖所示:
SpotTune實現(xiàn)了每個樣本個性化的Finetune策略學習,但是只能做到layer維度。AdaFilter: Adaptive Filter Fine-tuning for Deep Transfer Learning(AAAI 2020)提出了能夠在filter維度實現(xiàn)每個樣本的Finetune策略學習。與SpotTune類似,F(xiàn)inetune策略仍然為使用Pretrain模型的原始參數(shù),或使用Pretrain模型初始化后Finetune的參數(shù)兩種。與SpotTune不同的是,AdaFilter使用RNN學習每層各個channel的Finetune策略,每層的Finetune策略選擇依賴于上一層輸出的表示(SpotTune則是根據(jù)樣本同時產(chǎn)出所有層的Finetune策略)。
總結(jié)
本文介紹了7篇頂會論文中對Finetune階段進行的改進,包括Finetune過程使用Pretrain模型做約束、選擇性地對Pretrain模型進行遷移、在Finetune階段調(diào)整網(wǎng)絡(luò)結(jié)構(gòu)以及學習每組參數(shù)Transfer的方式4種類型。Pretrain-Finetune的核心問題在于,如何考慮到Target Task的樣本特性,將Pretrain的知識合理遷移到Target Task的模型上。其中每個樣本個性化地進行Finetune策略學習,可能是后續(xù)可以繼續(xù)深入研究的方向。
原文標題:花式Finetune方法大匯總
文章出處:【微信公眾號:深度學習自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
審核編輯:湯梓紅
-
網(wǎng)絡(luò)
+關(guān)注
關(guān)注
14文章
7713瀏覽量
90162 -
模型
+關(guān)注
關(guān)注
1文章
3464瀏覽量
49832 -
遷移學習
+關(guān)注
關(guān)注
0文章
74瀏覽量
5661
原文標題:花式Finetune方法大匯總
文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
C++中的四種類型轉(zhuǎn)換分別是哪些?C++中析構(gòu)函數(shù)的作用是什么
模擬電路網(wǎng)絡(luò)課件 第三十一節(jié):負反饋放大電路的四種類型

LED路燈電源雷擊的四種類型介紹
WebApi之接口返回值的四種類型
四種方式來讓您以簡單模式訪問遷移器
四種類型的 JTAG 數(shù)據(jù)寄存器介紹
四種單相交流電機電容的接法

濾波器的四種基本類型
四種類型的MOSFET的主要區(qū)別

評論