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