在深度學(xué)習(xí)的應(yīng)用中酿炸,模型微調(diào)(fine-tuning)是一個(gè)非常重要的過程,它是指在一個(gè)預(yù)先訓(xùn)練好的模型上針對(duì)特定的任務(wù)進(jìn)行參數(shù)調(diào)整。常見的微調(diào)方法有:Adapter Tuning重付、LORA、Prefix-Tuning凫乖、Prompt Tuning确垫、P-tuning、P-tuning v2帽芽,文章將分兩次介紹這幾種微調(diào)方法删掀。
一、Adapter Tuning
1.1 原理
設(shè)計(jì)了Adapter 結(jié)構(gòu)导街,將其嵌入 Transformer 的結(jié)構(gòu)里面披泪,在訓(xùn)練時(shí),固定住原來預(yù)訓(xùn)練模型的參數(shù)不變搬瑰,只對(duì)新增的 Adapter 結(jié)構(gòu)進(jìn)行微調(diào)款票。同時(shí)為了保證訓(xùn)練的高效性(也就是盡可能少的引入更多參數(shù)),他們將 Adapter 設(shè)計(jì)為這樣的結(jié)構(gòu):
首先是一個(gè) down-project 層將高維度特征映射到低維特征
然后過一個(gè)非線形層之后泽论,再用一個(gè) up-project 結(jié)構(gòu)將低維特征映射回原來的高維特征
同時(shí)也設(shè)計(jì)了 skip-connection 結(jié)構(gòu)艾少,確保了在最差的情況下能夠退化為identity(類似殘差結(jié)構(gòu))
1.2 效果
能夠在只額外對(duì)增加的 3.6% 參數(shù)規(guī)模(相比原來預(yù)訓(xùn)練模型的參數(shù)量)的情況下取得和Full-Finetuning 接近的效果(GLUE指標(biāo)在0.4%以內(nèi))。
1.3意義與遺留問題
首次提出針對(duì) BERT 的 PEFT微調(diào)方式翼悴,拉開了 PEFT 研究的序幕姆钉。
遺留問題:增加了模型層數(shù),引入了額外的推理延遲抄瓦。
二潮瓶、LORA
2.1 原理
LoRA 允許我們通過優(yōu)化適應(yīng)過程中密集層變化的秩分解矩陣,來間接訓(xùn)練神經(jīng)網(wǎng)絡(luò)中的一些密集層钙姊,同時(shí)保持預(yù)先訓(xùn)練的權(quán)重不變毯辅。
在原始 PLM (Pre-trained Language Model) 旁邊增加一個(gè)旁路,做一個(gè)降維再升維的操作煞额,來模擬所謂的
intrinsic rank
思恐。訓(xùn)練的時(shí)候固定 PLM 的參數(shù),只訓(xùn)練降維矩陣 A 與升維矩陣 B 膊毁。而模型的輸入輸出維度不變胀莹,輸出時(shí)將 BA 與 PLM 的參數(shù)疊加。
用隨機(jī)高斯分布初始化 A 婚温,用 0 矩陣初始化 B 描焰,保證訓(xùn)練的開始此旁路矩陣依然是 0 矩陣。
2.2效果
LORA 相比其它微調(diào)方法,增加參數(shù)量不會(huì)導(dǎo)致性能的下降荆秦。
性能上與全參數(shù)微調(diào)持平甚至超過篱竭。
2.3意義與遺留問題
基于大模型的內(nèi)在低秩特性,增加旁路矩陣來模擬全參數(shù)微調(diào)步绸,LoRA 將現(xiàn)在的各種大模型通過輕量微調(diào)變成各個(gè)不同領(lǐng)域的專業(yè)模型掺逼。
GPT 的本質(zhì)是對(duì)訓(xùn)練數(shù)據(jù)的有效壓縮,從而發(fā)現(xiàn)數(shù)據(jù)內(nèi)部的邏輯與聯(lián)系瓤介,LoRA 的思想與之有相通之處吕喘,原模型雖大,但起核心作用的參數(shù)是低秩的刑桑,通過增加旁路氯质,達(dá)到四兩撥千斤的效果。
LORA 已經(jīng)被 HuggingFace 集成在了 PEFT 代碼庫(kù)里漾月。
三病梢、Prefix-Tuning
3.1原理
與Full-finetuning 更新所有參數(shù)的方式不同胃珍,該方法是在輸入 token 之前構(gòu)造一段任務(wù)相關(guān)的 virtual tokens 作為 Prefix梁肿,然后訓(xùn)練的時(shí)候只更新 Prefix 部分的參數(shù),而 Transformer 中的其他部分參數(shù)固定觅彰。
同時(shí)吩蔑,為了防止直接更新 Prefix 的參數(shù)導(dǎo)致訓(xùn)練不穩(wěn)定的情況,他們?cè)?Prefix 層前面加了 MLP 結(jié)構(gòu)(相當(dāng)于將Prefix 分解為更小維度的 Input 與 MLP 的組合后輸出的結(jié)果)填抬,訓(xùn)練完成后烛芬,只保留 Prefix 的參數(shù)趟脂。
3.2 效果
表明Prefix-tuning能用更少的參數(shù)達(dá)到較有競(jìng)爭(zhēng)力的結(jié)果卖局。在Low-data階段(訓(xùn)練樣本數(shù)較少)加派, prefix-tuning相比較fine-tuning更有優(yōu)勢(shì)枯跑。
3.3 意義與遺留問題
遺留問題:難于訓(xùn)練愧哟,且預(yù)留給 Prompt 的序列擠占了下游任務(wù)的輸入序列空間须床,影響模型性能翘单。
Prompt Tuning
原理
Prefix Tuning 的簡(jiǎn)化版本场晶,只在輸入層加入 prompt tokens拾并,并不需要加入 MLP 進(jìn)行調(diào)整來解決難訓(xùn)練的問題揍堰,主要在 T5 預(yù)訓(xùn)練模型上做實(shí)驗(yàn)。
固定預(yù)訓(xùn)練參數(shù)嗅义,為每一個(gè)任務(wù)額外添加一個(gè)或多個(gè) embedding屏歹,之后拼接 query 正常輸入 LLM,并只訓(xùn)練這些 embedding之碗。左圖為單任務(wù)全參數(shù)微調(diào)蝙眶,右圖為 Prompt tuning。
效果
似乎只要預(yù)訓(xùn)練模型足夠強(qiáng)大褪那,其他的一切都不是問題械馆。作者也做實(shí)驗(yàn)說明隨著預(yù)訓(xùn)練模型參數(shù)量的增加胖眷,Prompt Tuning的方法會(huì)逼近 Fine-tune 的結(jié)果。
意義與遺留問題
該方法可以看作是 Prefix Tuning 的簡(jiǎn)化版本霹崎,Prompt 是人為構(gòu)造的“顯式”的提示珊搀,并且無法更新參數(shù),而Prefix 則是可以學(xué)習(xí)的“隱式”的提示尾菇。
遺留問題:由人工設(shè)計(jì)Prompt境析,自然語(yǔ)言提示本身十分脆弱(如下圖所示,選擇不同的Prompt對(duì)下游任務(wù)的性能影響較大)派诬,而且從優(yōu)化角度無法達(dá)到最優(yōu)劳淆。
P-tuning
原理
Prefix Tuning 的簡(jiǎn)化版本,只在輸入層加入 prompt tokens默赂,并不需要加入 MLP 進(jìn)行調(diào)整來解決難訓(xùn)練的問題沛鸵,主要在 T5 預(yù)訓(xùn)練模型上做實(shí)驗(yàn)。
固定預(yù)訓(xùn)練參數(shù)缆八,為每一個(gè)任務(wù)額外添加一個(gè)或多個(gè) embedding曲掰,之后拼接 query 正常輸入 LLM,并只訓(xùn)練這些 embedding奈辰。左圖為單任務(wù)全參數(shù)微調(diào)栏妖,右圖為 Prompt tuning。
效果
使用P-tuning奖恰,可以讓相似代銷的GPT2實(shí)現(xiàn)比bert模型相當(dāng)?shù)纳踔粮玫慕Y(jié)果吊趾,這個(gè)發(fā)現(xiàn)顛覆普遍認(rèn)為的——雙向模型比單向模型在NLU任務(wù)中表現(xiàn)的更好。
P-tuning給了一種在有限算力下調(diào)用大型預(yù)訓(xùn)練模型的思路瑟啃。
意義與遺留問題
遺留問題:Prompt Tuning和P-tuning這兩種方法都是在預(yù)訓(xùn)練模型參數(shù)規(guī)模夠足夠大時(shí)论泛,才能達(dá)到和Fine-tuning類似的效果,而參數(shù)規(guī)模較小時(shí)效果則很差蛹屿,且在sequence tagging任務(wù)上表現(xiàn)都很差屁奏。
P-tuning v2
原理
相比 Prompt Tuning 和 P-tuning 的方法, P-tuning v2 方法在多層加入了 Prompts tokens 作為輸入蜡峰,帶來兩個(gè)方面的好處:帶來更多可學(xué)習(xí)的參數(shù)了袁、足夠 parameter-efficient,同時(shí)加入到更深層結(jié)構(gòu)中的 Prompt 能給模型預(yù)測(cè)帶來更直接的影響湿颅。
v1 到 v2 的可視化:藍(lán)色部分為參數(shù)凍結(jié)载绿,橙色部分為可訓(xùn)練部分。
效果
不同預(yù)訓(xùn)練模型大小下的表現(xiàn)油航,在小模型下取得與 Full-finetuning 相近的結(jié)果崭庸,并遠(yuǎn)遠(yuǎn)優(yōu)于 P-Tuning。
不同任務(wù)下的 P-Tuning v2 效果都很好,而 P-Tuning 和 Prompt Learning 效果不好怕享;同時(shí)执赡,采用多任務(wù)學(xué)習(xí)的方式能在多數(shù)任務(wù)上取得最好的結(jié)果。
遺留問題
很容易導(dǎo)致舊知識(shí)遺忘函筋,微調(diào)之后的模型沙合,在之前的問題上表現(xiàn)明顯變差。