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