1 簡介
目前在大規(guī)模預(yù)訓(xùn)練模型上進(jìn)行finetune是NLP中一種高效的遷移方法,但是對(duì)于眾多的下游任務(wù)而言,finetune是一種低效的參數(shù)更新方式,對(duì)于每一個(gè)下游任務(wù),都需要去更新語言模型的全部參數(shù),這需要龐大的訓(xùn)練資源。進(jìn)而,人們會(huì)嘗試固定語言預(yù)訓(xùn)練模型大部分網(wǎng)絡(luò)的參數(shù),針對(duì)下游任務(wù)只更新一部分語言模型參數(shù)。大部分情況下都是只更新模型最后幾層的參數(shù),但是我們知道語言模型的不同位置的網(wǎng)絡(luò)聚焦于不同的特征,針對(duì)具體任務(wù)中只更新高層網(wǎng)絡(luò)參數(shù)的方式在不少情形遭遇到精度的急劇下降。
在這個(gè)篇章介紹的Adapter會(huì)針對(duì)每個(gè)下游任務(wù)在語言模型的每層transformer中新增2個(gè)帶有少量參數(shù)的模塊,稱之為adapter,針對(duì)下游任務(wù)訓(xùn)練時(shí)只更新adapter模塊參數(shù),而凍結(jié)原有語言模型的參數(shù),從而實(shí)現(xiàn)將強(qiáng)大的大規(guī)模語言模型的能力高效遷移到諸多下游任務(wù)中去,同時(shí)保證模型在下游任務(wù)的性能。
2 Adapter
Adapter的結(jié)構(gòu)一目了然,transformer的每層網(wǎng)絡(luò)包含兩個(gè)主要的子模塊,一個(gè)attention多頭注意力層跟一個(gè)feedforward層,這兩個(gè)子模塊后續(xù)都緊隨一個(gè)projection操作,將特征大小映射回原本的輸入的維度,然后連同skip connection的結(jié)果一同輸入layer normalization層。而adapter直接應(yīng)用到這兩個(gè)子模塊的輸出經(jīng)過projection操作后,并在skip-connection操作之前,進(jìn)而可以將adapter的輸入跟輸出保持同樣的維度,所以輸出結(jié)果直接傳遞到后續(xù)的網(wǎng)絡(luò)層,不需要做更多的修改。每層transformer都會(huì)被插入兩個(gè)adapter模塊。
圖1: Adapter框架
下面我們來看看adapter的具體結(jié)構(gòu),首先通過一個(gè)feedforward down-project的矩陣乘法將特征維度降到一個(gè)更低的水平,然后通過一個(gè)非線形層,再利用一個(gè)feedforward up-project層將特征維度升到跟輸入一樣的水平,同時(shí)通過一個(gè)skip connection來將adpter的輸入重新加到最終的輸出中去,這樣可以保證保證即便adapter一開始的參數(shù)初始化接近0,adapter也有由于skip connection的設(shè)置而初始化接近于一個(gè)恒等映射,從而保證訓(xùn)練的有效性。
至于adapter引進(jìn)的模型參數(shù),假設(shè)adapter的輸入的特征維度是d,而中間的特征維度是m,那么新增的模型參數(shù)有:down-project的參數(shù)d*m+m,up_project的參數(shù)m*d+d,總共2md+m+d,由于m遠(yuǎn)小于d,所以真實(shí)情況下,一般新增的模型參數(shù)都只占語言模型全部參數(shù)量的0.5%~8%。同時(shí)要注意到,針對(duì)下游任務(wù)訓(xùn)練需要更新的參數(shù)除了adapter引入的模型參數(shù)外,還有adapter層后面緊隨著的layer normalization層參數(shù)需要更新,每個(gè)layer normalization層只有均值跟方差需要更新,所以需要更新的參數(shù)是2d。(由于插入了具體任務(wù)的adapter模塊,所以輸入的均值跟方差發(fā)生了變化,就需要重新訓(xùn)練)
通過實(shí)驗(yàn),可以發(fā)現(xiàn)只訓(xùn)練少量參數(shù)的adapter方法的效果可以媲美finetune語言模型全部參數(shù)的傳統(tǒng)做法,這也驗(yàn)證了adapter是一種高效的參數(shù)訓(xùn)練方法,可以快速將語言模型的能力遷移到下游任務(wù)中去。同時(shí),可以看到不同數(shù)據(jù)集上adapter最佳的中間層特征維度m不盡相同。
圖2: adapter跟finetune的效果對(duì)比
為了進(jìn)一步探究adapter的參數(shù)效率跟模型性能的關(guān)系,論文做了進(jìn)一步的實(shí)驗(yàn),同時(shí)比對(duì)了finetune的方式(只更新最后幾層的參數(shù)或者只更新layer normalization的參數(shù)),從結(jié)果可以看出adapter是一種更加高效的參數(shù)更新方式,同時(shí)效果也非??捎^,通過引入0.5%~5%的模型參數(shù)可以達(dá)到不落后先進(jìn)模型1%的性能。
圖3:adapter跟finetune的效率對(duì)比
3Adapter fusion
這是一種融合多任務(wù)信息的adapter的變種,首先看下它的任務(wù)背景。假設(shè)C是N個(gè)分類任務(wù)的集合,這些分類任務(wù)的監(jiān)督數(shù)據(jù)的大小跟損失函數(shù)不盡相同。C={(D1, L1), …, (DN, LN)},其中D是標(biāo)注數(shù)據(jù),L是損失函數(shù),我們的任務(wù)是通過這N個(gè)任務(wù)加上某個(gè)任務(wù)m的數(shù)據(jù)跟損失函數(shù)(Dm, Lm)去提升這個(gè)特定任務(wù)m的效果。如圖所示,就是期望先從N個(gè)任務(wù)中學(xué)到一個(gè)模型參數(shù)(最右邊參數(shù)),然后利用該參數(shù)來學(xué)習(xí)特定任務(wù)m下的一個(gè)模型參數(shù)(最左邊參數(shù))。
圖4:學(xué)習(xí)目標(biāo)
為了實(shí)現(xiàn)這個(gè)目標(biāo),adapter fusion提出一個(gè)兩階段的學(xué)習(xí)策略,其中第一階段是knowledge extraction stage,在不同任務(wù)下引入各自的adapter模塊,用于學(xué)習(xí)特定任務(wù)的信息,而第二階段是knowledge composition step,用于學(xué)習(xí)聚合多個(gè)任務(wù)的adapter。
對(duì)于第一階段有兩種訓(xùn)練方式,分別如下:
a)Single-Task Adapters(ST-A)
對(duì)于N個(gè)任務(wù),模型都分別獨(dú)立進(jìn)行優(yōu)化,各個(gè)任務(wù)之間互不干擾,互不影響。對(duì)于其中第n個(gè)任務(wù)而言,相應(yīng)的目標(biāo)函數(shù)如下圖所示,其中最右邊兩個(gè)參數(shù)分別代表語言模型的模型參數(shù)跟特定任務(wù)需要引入的adapter參數(shù)。
圖5:ST-A目標(biāo)函數(shù)
b)Multi-Task Adapters(MT-A)
N個(gè)任務(wù)通過多任務(wù)學(xué)習(xí)的方式,進(jìn)行聯(lián)合優(yōu)化,相應(yīng)的目標(biāo)函數(shù)如下。
圖6:MT-A目標(biāo)函數(shù)
對(duì)于第二階段,就是adapter fusion大展身手的時(shí)候了。為了避免通過引入特定任務(wù)參數(shù)而帶來的災(zāi)難性遺忘問題,adapter fusion提出了一個(gè)共享多任務(wù)信息的結(jié)構(gòu)。針對(duì)特定任務(wù)m,adapter fusion聯(lián)合了第一階段訓(xùn)練的到的N個(gè)adapter信息。固定語言模型的參數(shù)跟N個(gè)adapter的參數(shù),新引入adapter fusion的參數(shù),目標(biāo)函數(shù)也是學(xué)習(xí)針對(duì)特定任務(wù)m的adapter fusion的參數(shù)。
圖7:adapter fusion的目標(biāo)函數(shù)
Adapter fusion的具體結(jié)構(gòu)就是一個(gè)attention,它的參數(shù)包括query,key, value的矩陣參數(shù),在transformer的每一層都存在,它的query是transformer每個(gè)子模塊的輸出結(jié)果,它的key跟value則是N個(gè)任務(wù)的adapter的輸出。通過adapter fusion,模型可以為不同的任務(wù)對(duì)應(yīng)的adapter分配不同的權(quán)重,聚合N個(gè)任務(wù)的信息,從而為特定任務(wù)輸出更合適的結(jié)果。
圖8:adapter fusion結(jié)構(gòu)
通過實(shí)驗(yàn),可以看到第一階段采用ST-A+第二階段adapter fusion是最有效的方法,在多個(gè)數(shù)據(jù)集上的平均效果達(dá)到了最佳。關(guān)于MT-A+adapter fusion沒有取得最佳的效果,在于第一階段其實(shí)已經(jīng)聯(lián)合了多個(gè)任務(wù)的信息了,所以adapter fusion的作用沒有那么明顯,同時(shí)MT-A這種多任務(wù)聯(lián)合訓(xùn)練的方式需要投入較多的成本,并不算一種高效的參數(shù)更新方式。另外,ST-A的方法在多個(gè)任務(wù)上都有提升,但是MT-A的方法則不然,這也表明了MT-A雖然可以學(xué)習(xí)到一個(gè)通用的表征,但是由于不同任務(wù)的差異性,很難保證在所有任務(wù)上都取得最優(yōu)的效果。
圖9:adapter fusion實(shí)驗(yàn)結(jié)果
4 總結(jié)
Fusion是一種高效的參數(shù)更新方式,能在引入少量參數(shù),只訓(xùn)練少量參數(shù)的情況下達(dá)到媲美finetune全模型參數(shù)的效果,只訓(xùn)練少量參數(shù)也意味著對(duì)訓(xùn)練數(shù)據(jù)量更低的要求以及更快的訓(xùn)練速度,是一種將大規(guī)模預(yù)訓(xùn)練語言模型能力遷移到下游任務(wù)的高效方案,跟目前火熱的prompt learning有異曲同工之妙。而adapter fusion則跟MOE很像,可以聯(lián)合多個(gè)任務(wù)的信息,從而提升特定任務(wù)的性能。但相比于其他的parameter-efficient的方法,adapter是在原語言模型上加入了新的模塊,在推理時(shí)會(huì)進(jìn)一步增加延遲。
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4344瀏覽量
62813 -
Adapter
+關(guān)注
關(guān)注
0文章
16瀏覽量
7663 -
訓(xùn)練模型
+關(guān)注
關(guān)注
1文章
36瀏覽量
3874
原文標(biāo)題:Parameter-efficient transfer learning系列之Adapter
文章出處:【微信號(hào):zenRRan,微信公眾號(hào):深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論