1 簡(jiǎn)介
NLP一個(gè)重要的范式包括在通用領(lǐng)域數(shù)據(jù)上的大規(guī)模預(yù)訓(xùn)練和在特定任務(wù)或者領(lǐng)域上的微調(diào)。目前大規(guī)模語(yǔ)言模型在諸多任務(wù)上取得sota效果,F(xiàn)inetune全模型參數(shù)以適配下游任務(wù)雖然能取得不錯(cuò)的效果,但是卻是一種低效的參數(shù)更新方式,歸因于模型的龐大模型參數(shù)量帶來(lái)的訓(xùn)練成本,從而限制了在諸多下游任務(wù)的應(yīng)用。
在這個(gè)章節(jié)我們介紹另外兩種高效的參數(shù)更新方式,LoRA與BitFit,一種通過(guò)在transformer結(jié)構(gòu)中固定原本的模型參數(shù)同時(shí)引入可訓(xùn)練的分解矩陣,另一種通過(guò)只更新模型中的bias參數(shù),都能極大程度的減少下游任務(wù)需要訓(xùn)練的參數(shù)數(shù)量,提高訓(xùn)練速度并且取得不錯(cuò)的效果。
2 LoRA
神經(jīng)網(wǎng)絡(luò)包含很多全連接層,借助于矩陣乘法得以實(shí)現(xiàn),很多全連接層的權(quán)重矩陣都是滿秩的。當(dāng)針對(duì)特定任務(wù)訓(xùn)練時(shí),預(yù)訓(xùn)練模型具有l(wèi)ow intrinsic dimension,盡管隨機(jī)投影到較小的子空間,仍然可以有效的學(xué)習(xí),可以理解為針對(duì)特定任務(wù)這些權(quán)重矩陣就不要求滿秩。
基于此,LoRA(Low-Rank Adaptaion)被提出,它的想法也很樸素直觀。在原始的PLM旁邊增加一個(gè)新的通路,通過(guò)前后兩個(gè)矩陣A,B相乘,第一個(gè)矩陣A負(fù)責(zé)降維,第二個(gè)矩陣B負(fù)責(zé)升維,中間層維度為r,從而來(lái)模擬所謂的intrinsic rank。在下游任務(wù)訓(xùn)練時(shí),固定模型的其他參數(shù),只優(yōu)化新增的兩個(gè)矩陣的權(quán)重參數(shù),將PLM跟新增的通路兩部分的結(jié)果加起來(lái)作為最終的結(jié)果(兩邊通路的輸入跟輸出維度是一致的),即h=Wx+BAx。
通常第一個(gè)矩陣的A的權(quán)重參數(shù)會(huì)通過(guò)高斯函數(shù)得到,而第二個(gè)矩陣的B的參數(shù)則是零矩陣,這樣能保證訓(xùn)練開(kāi)始時(shí)新增的通路BA=0從而對(duì)mo xing 結(jié)果沒(méi)有影響。在推理時(shí),將左右兩部分的結(jié)果加到一起即可,h=Wx+BAx=(W+BA)x,所以只要將訓(xùn)練完成的矩陣乘積BA跟原本的權(quán)重矩陣W加到一起作為新權(quán)重參數(shù)替換原本PLM的W即可,不會(huì)增加額外的計(jì)算資源。
圖1:LoRA框架
一般情況下,r會(huì)遠(yuǎn)小于模型原本的維度m,所以LoRA訓(xùn)練的模型參數(shù)相比于模型原本的參數(shù)而言非常輕量,對(duì)于下游任務(wù)而言,原本的模型參數(shù)可以公攤到多個(gè)下游任務(wù)中去,每個(gè)下游任務(wù)只獨(dú)立維護(hù)自身的LoRA的矩陣BA參數(shù),從而省下了大量?jī)?nèi)存跟存儲(chǔ)資源。同時(shí),凍結(jié)語(yǔ)言模型原本的參數(shù),只更新新增通路的少量參數(shù)也能節(jié)省大量計(jì)算資源跟IO成本,從而提升模型訓(xùn)練速度。
通過(guò)實(shí)驗(yàn)也發(fā)現(xiàn),在眾多數(shù)據(jù)集上LoRA在只訓(xùn)練極少量參數(shù)的前提下,達(dá)到了匹配訓(xùn)練全部參數(shù)的finetune方式,是一種高效的參數(shù)更新方法。相比其他高效的參數(shù)訓(xùn)練方式,類似Adapter, BitFit,LoRA在較少訓(xùn)練參數(shù)時(shí)就能保證比較穩(wěn)定的效果。而prefix等方式則會(huì)由于插入了更多token導(dǎo)致輸入的分布偏離預(yù)訓(xùn)練數(shù)據(jù)分布,從而導(dǎo)致精度下降。
圖2:LoRA的效果
圖3:各種參數(shù)更新方法下模型效果跟可訓(xùn)練參數(shù)量的關(guān)系
此外,Transformer的權(quán)重矩陣包括attention模塊里用于計(jì)算query, key, value的Wq,Wk,Wv以及多頭attention的Wo,以及MLP層的權(quán)重矩陣,LoRA只應(yīng)用于attention模塊中的4種權(quán)重矩陣,而且通過(guò)消融實(shí)驗(yàn)發(fā)現(xiàn)其中Wq,Wk兩者不可缺失。同時(shí),保證權(quán)重矩陣的種類的數(shù)量比起增加隱藏層維度r更為重要,增加r并不一定能覆蓋更加有意義的子空間,這也顯示了低秩的中間矩陣A跟B對(duì)于LoRA已經(jīng)足夠了。
3 BitFit
這是一種稀疏的finetune方法,它只在訓(xùn)練時(shí)更新bias的參數(shù)(或者部分bias參數(shù))。對(duì)于transformer模型而言,凍結(jié)大部分模型參數(shù),只訓(xùn)練更新bias參數(shù)跟特定任務(wù)的分類層參數(shù)。涉及到的bias參數(shù)有attention模塊中計(jì)算query,key,value跟合并多個(gè)attention結(jié)果的涉及到的bias,MLP層中的bias,Layernormalization層的bias參數(shù)。像Bert base跟Bert large這種模型里的bias參數(shù)占模型全部參數(shù)量的0.08%~0.09%。
通過(guò)實(shí)驗(yàn)可以看出,Bitfit在只更新極少量參數(shù)下在多個(gè)數(shù)據(jù)集上都達(dá)到了不錯(cuò)的效果,雖不及訓(xùn)練全部參數(shù)的finetune,但是遠(yuǎn)超固定全部模型參數(shù)的Frozen方式。同時(shí),通過(guò)比起B(yǎng)itfit訓(xùn)練前后的參數(shù)對(duì)比,發(fā)現(xiàn)很多bias參數(shù)沒(méi)有太多變化,例如跟計(jì)算key所涉及到的bias參數(shù)。發(fā)現(xiàn)其中計(jì)算query與將特征維度從N放大到4N的FFN層的bias參數(shù)變化最為明顯,只更新這兩類bias參數(shù)也能達(dá)到不錯(cuò)的效果,反之,固定其中任何一者,模型的效果都有較大損失。
圖4:BitFit效果
4 總結(jié)
上述這兩種參數(shù)優(yōu)化方法都是在Adapter之后提出的,相比adapter需要在原模型基礎(chǔ)上加入了額外模塊,雖然減少了訓(xùn)練成本跟存儲(chǔ)資源,但在推理時(shí)卻也不可避免的增加了計(jì)算資源從而增加了耗時(shí)。但LoRA跟Biffit在推理時(shí)跟原語(yǔ)言模型結(jié)果保持一致,沒(méi)有額外的計(jì)算資源。
審核編輯:劉清
-
PLM
+關(guān)注
關(guān)注
2文章
124瀏覽量
20891 -
LoRa技術(shù)
+關(guān)注
關(guān)注
3文章
101瀏覽量
16360 -
nlp
+關(guān)注
關(guān)注
1文章
489瀏覽量
22066 -
MLP
+關(guān)注
關(guān)注
0文章
57瀏覽量
4260
原文標(biāo)題:Parameter-efficient transfer learning系列之LoRA與BitFit
文章出處:【微信號(hào):zenRRan,微信公眾號(hào):深度學(xué)習(xí)自然語(yǔ)言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論