卷友們好,我是rumor。
之前我學(xué)習(xí)Prompt范式的源起PET后就鴿了很久,相信卷友們已經(jīng)把Prompt的論文都追完了,把我遠(yuǎn)遠(yuǎn)地落在了后面。周末我不甘被卷,奮起直追,連刷三篇paper,希望能趕上大家學(xué)習(xí)的步伐。
Prefix-tuning- Optimizing continuous prompts for generation
P-tuning-GPT Understands, Too
Prompt-tuning-The Power of Scale for Parameter-Efficient Prompt Tuning
自動化Prompt
Prompt范式的第一個階段,就是在輸入上加Prompt文本,再對輸出進行映射。但這種方式怎么想都不是很優(yōu)雅,無法避免人工的介入。即使有方法可以批量挖掘,但也有些復(fù)雜(有這個功夫能標(biāo)不少高質(zhì)量語料),而且模型畢竟是黑盒,對離散文本輸入的魯棒性很差:
怎么辦呢?離散的不行,那就連續(xù)的唄
用固定的token代替prompt,拼接上文本輸入,當(dāng)成特殊的embedding輸入,這樣在訓(xùn)練時也可以對prompt進行優(yōu)化,就減小了prompt挖掘、選擇的成本。
如何加入Prompt
前面的想法非常單純,但實際操作起來還是需要些技巧的。
Prefix-tuning
Prefix-tuning是做生成任務(wù),它根據(jù)不同的模型結(jié)構(gòu)定義了不同的Prompt拼接方式,在GPT類的自回歸模型上采用[PREFIX, x, y],在T5類的encoder-decoder模型上采用[PREFIX, x, PREFIX‘, y]:
值得注意的還有三個改動:
把預(yù)訓(xùn)練大模型freeze住,因為大模型參數(shù)量大,精調(diào)起來效率低,畢竟prompt的出現(xiàn)就是要解決大模型少樣本的適配
作者發(fā)現(xiàn)直接優(yōu)化Prompt參數(shù)不太穩(wěn)定,加了個更大的MLP,訓(xùn)練完只保存MLP變換后的參數(shù)就行了
實驗證實只加到embedding上的效果不太好,因此作者在每層都加了prompt的參數(shù),改動較大
P-tuning
P-tuning是稍晚些的工作,主要針對NLU任務(wù)。對于BERT類雙向語言模型采用模版(P1, x, P2, [MASK], P3),對于單向語言模型采用(P1, x, P2, [MASK]):
同時加了兩個改動:
考慮到預(yù)訓(xùn)練模型本身的embedding就比較離散了(隨機初始化+梯度傳回來小,最后只是小范圍優(yōu)化),同時prompt本身也是互相關(guān)聯(lián)的,所以作者先用LSTM對prompt進行編碼
在輸入上加入了anchor,比如對于RTE任務(wù),加上一個問號變成[PRE][prompt tokens][HYP]?[prompt tokens][MASK]后效果會更好
P-tuning的效果很好,之前的Prompt模型都是主打小樣本效果,而P-tuning終于在整個數(shù)據(jù)集上超越了精調(diào)的效果:
雖然P-tuning效果好,但實驗對比也有些問題,它沒有freeze大模型,而是一起精調(diào)的,相當(dāng)于引入了額外的輸入特征,而平時我們在輸入加個詞法句法信息也會有提升,所以不能完全肯定這個效果是prompt帶來的。同時隨著模型尺寸增大,精調(diào)也會更難。
Prompt-tuning
Prompt-tuning就更加有信服力一些,純憑Prompt撬動了大模型。
Prompt-tuning給每個任務(wù)定義了自己的Prompt,拼接到數(shù)據(jù)上作為輸入,同時freeze預(yù)訓(xùn)練模型進行訓(xùn)練,在沒有加額外層的情況下,可以看到隨著模型體積增大效果越來越好,最終追上了精調(diào)的效果:
同時,Prompt-tuning還提出了Prompt-ensembling,也就是在一個batch里同時訓(xùn)練同一個任務(wù)的不同prompt,這樣相當(dāng)于訓(xùn)練了不同「模型」,比模型集成的成本小多了。
其他Trick
除了怎么加Prompt之外,Prompt向量的初始化和長度也有所講究。
Prompt初始化
Prefix-tuning采用了任務(wù)相關(guān)的文字進行初始化,而Prompt-tuning發(fā)現(xiàn)在NLU任務(wù)上用label文本初始化效果更好。不過隨著模型尺寸的提升,這種gap也會最終消失。
Prompt長度
從Prompt-tuning的實驗可以看到,長度在10-20時的表現(xiàn)已經(jīng)不錯了,同時這個gap也會隨著模型尺寸的提升而減小。
總結(jié)
要說上次看PET時我對Prompt范式還是將信將疑,看完這幾篇之后就比較認(rèn)可了。尤其是Prompt-tuning的一系列實驗,確實證明了增加少量可調(diào)節(jié)參數(shù)可以很好地運用大模型,并且模型能力越強,所需要的prompt人工調(diào)參就越少。
這種參數(shù)化Prompt的方法除了避免「人工」智能外,還有一方面就是省去了Y的映射。因為在精調(diào)的過程中,模型的輸出就被拿捏死了,而且Prompt-tuning還用label初始化Prompt,更加讓模型知道要輸出啥。
Finally,終于追上了前沿,大家的鬼點子可真多啊。
來源:李rumor
編輯:jq
-
PET
+關(guān)注
關(guān)注
1文章
43瀏覽量
18684 -
MLPM
+關(guān)注
關(guān)注
0文章
2瀏覽量
6799 -
prompt
+關(guān)注
關(guān)注
0文章
14瀏覽量
2668
原文標(biāo)題:Prompt范式,真香
文章出處:【微信號:zenRRan,微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論