從BERT(Devlin等人, 2019)開始,在下游任務(wù)中微調(diào)預(yù)訓(xùn)練語言模型 (LM)已成為 NLP 領(lǐng)域的通用做法。然而,擁有 175B 參數(shù)的 GPT-3 模型(Brown等人, 2020)帶來了一種將 LM 用于下游任務(wù)的新方法:通過使用自然語言提示信息(prompt)和任務(wù)示例(demonstration)作為context,GPT-3只需幾個(gè)樣本即可處理很多任務(wù),而不需更新底層模型中的參數(shù)(正如文章標(biāo)題“Language Models are Few-Shot Learners”所示)。GPT-3 龐大的模型規(guī)模是其成功的重要因素,而prompt和demonstration的概念也讓我們對(duì)如何更好地使用語言模型有了新的認(rèn)識(shí)。 那么什么是prompt?prompt是插入到輸入樣本中的一段文本,因此可以將原始任務(wù)轉(zhuǎn)換為(masked)language modeling問題。例如,假設(shè)我們要對(duì)影評(píng)“No reason to watch”進(jìn)行情感分類,我們可以在句子中附加一個(gè)prompt“It was”,得到“No reason to watch. It was”。這樣就可以很自然地認(rèn)為,LM 會(huì)有更高的概率判斷為“terrible”而不是“great”。 GPT-3 發(fā)布后,涌現(xiàn)了很多與prompt相關(guān)的論文,其中很多都討論了中等規(guī)模預(yù)訓(xùn)練模型的prompt-based learning,例如BERT(BERT-base 有 110M 參數(shù),比最大的 GPT-3 小 1000 倍)。在這篇博文中,我將概述最近的prompt-based方法以及我對(duì)prompting的看法。在文章最后,將介紹我們的 ACL'21 論文,“Making Pre-trained Language Models Better Few-shot Learners”。
為什么我們需要Prompt
在標(biāo)準(zhǔn)的“pre-training和fine-tuning”范式中,預(yù)訓(xùn)練階段和下游任務(wù)之間的gap可能很大:它們訓(xùn)練目標(biāo)不同。對(duì)于下游任務(wù),我們通常需要引入新的參數(shù)——例如,對(duì)于 BERT 大小的模型和二分類任務(wù),需要額外的一組 1,024 x 2 的參數(shù)。而prompting使得下游任務(wù)可以采用與預(yù)訓(xùn)練目標(biāo)相同的格式,并且不需要新的參數(shù),如上圖所示。對(duì)于分類任務(wù),我們只需要設(shè)計(jì)一個(gè)template(“It was”)以及預(yù)期的text response(我們稱之為label words,例如,圖中的正標(biāo)簽詞“great”和負(fù)標(biāo)簽詞“terrible”)。通過縮小兩個(gè)階段之間的差距,在特定任務(wù)上部署預(yù)訓(xùn)練模型就變得容易多了,尤其是對(duì)于小樣本(few-shot)的情況——當(dāng)你只有十幾個(gè)訓(xùn)練樣本來完成一項(xiàng)新任務(wù)時(shí),很難有效地fine-tune預(yù)訓(xùn)練模型和新的task-specific 的參數(shù),但prompting使得這個(gè)過程變得順暢很多。Scao 和 Rush (2021)的研究表明一個(gè)prompt 可能值 100 個(gè)常規(guī)數(shù)據(jù)點(diǎn),說明prompts可以帶來樣本效率的巨大提升。 對(duì)prompt的研究有兩種不同的方向:受 PET 論文的啟發(fā)(Schick and Schütze,2021a,b),基于prompt的fine-tuning(關(guān)鍵點(diǎn)是仍然進(jìn)一步優(yōu)化參數(shù))被認(rèn)為是對(duì)小語言模型來說更好的few-shot learner途徑(“小”指的是擁有數(shù)百萬而不是數(shù)十億的參數(shù),如 BERT 或 RoBERTa);對(duì)于像 175B GPT-3 和 11B T5 這樣的超大型模型(Raffel等人, 2020),微調(diào)它們比較困難(只是猜測(cè),沒試過)而且成本很高,因此我們希望固定它們的參數(shù),通過不同的prompt(離散的或soft的,將在后面討論)將它們應(yīng)用到不同任務(wù)上。 Discrete Prompts 在預(yù)訓(xùn)練模型中使用prompt的工作可以追溯到 GPT-1/2(Radford等人, 2018 , 2019),作者表明,通過設(shè)計(jì)適當(dāng)?shù)膒rompt,LM 可以在從情感分類到閱讀理解等零樣本任務(wù)上都取得不錯(cuò)的效果。后來,Petroni等人 (2019); Davison等人(2019); Jiang等人(2020); Talmor等人(2020)探索了利用prompt從 LM中挖掘事實(shí)或常識(shí)知識(shí)。而GPT-3固定了模型參數(shù)并應(yīng)用了prompt,之后基于prompt的方法被進(jìn)一步引入到較小的 LM中(Schick 和 Schütze, 2021a, b; 我們的工作LM-BFF, Gao等人, 2021)。它們與 GPT-3 的不同之處在于它們對(duì)完整模型進(jìn)行了微調(diào),并采用雙向掩碼 LM 而不是單向 LM。最近的幾篇論文延續(xù)了這條路線,通過調(diào)整目標(biāo)函數(shù)(Tam等人, 2021)或以統(tǒng)一任務(wù)形式來改進(jìn),例如在問答(Zhong等人, 2021)或文本蘊(yùn)涵(Wang等人, 2021)任務(wù)中。在所有這些模型中,prompt都是自然語言形式,由詞匯表中離散的token組成。大多數(shù)工作都需要人工設(shè)計(jì)的prompt——prompt engineering非常重要,因?yàn)樾〉臄_動(dòng)就可能會(huì)顯著影響模型的性能,而設(shè)計(jì)完美的prompt需要對(duì) LM 內(nèi)部機(jī)制的理解以及反復(fù)的試驗(yàn)。 和人工設(shè)計(jì)的prompt相反,我們也可以生成或優(yōu)化prompt:Guo等人(2021)表明一種soft Q-learning方法對(duì)于promt generation效果很好;AutoPrompt(Shin等人, 2020)建議采用一種基于梯度的搜索(該想法來自Wallace等人, 2019,旨在搜索通用的對(duì)抗性觸發(fā)器,使模型生成一個(gè)特定的預(yù)測(cè))來找出特定任務(wù)的最佳prompt。AutoPrompt的設(shè)置的不同之處在于它固定了模型:它假設(shè)所有內(nèi)容都在預(yù)訓(xùn)練模型中編碼好,我們需要的只是將它們“prompt”出來;另一個(gè)原因是 AutoPrompt 還被用于 LAMA(Petroni等人, 2019),這是一項(xiàng)knowledge probing任務(wù),要求不觸及模型參數(shù)。以下是一個(gè)用于情感分類的 AutoPrompt 示例。 AutoPrompt 圖解(Shin等人, 2020) 搜索到的模板顯著提高了 LAMA 的性能;它們還在使用完整數(shù)據(jù)集的情感分類和自然語言推理任務(wù)中取得了很高的準(zhǔn)確率(不過仍然低于微調(diào)的結(jié)果)。如果看一下搜索出來的離散(但不再是自然語言形式)prompt,可以找到對(duì)一些“trigger tokens”的解釋,但其他許多只是特例。目前尚不清楚自動(dòng)prompt是否真的能幫助LM回憶內(nèi)部“知識(shí)”,還是只是另一種優(yōu)化方式,是從預(yù)訓(xùn)練模型中的“彩票”中挑選“中獎(jiǎng)彩票”(對(duì)于彩票假設(shè),參見 Frankle和Carbin, 2019)。 Soft Prompts:Prompt里真的需要離散的詞嗎既然 AutoPrompt 已經(jīng)對(duì)prompt進(jìn)行了基于梯度的搜索,為什么不從離散tokens轉(zhuǎn)向連續(xù)的“soft prompt”呢?例如,Zhong等人(2021)以及 Qin和Eisner(2021)提出將“soft prompt”用于knowledge probing任務(wù)(LAMA 等),相對(duì)于離散prompt取得了相當(dāng)大的提升。這個(gè)想法非常簡(jiǎn)單——只需在輸入序列中放入一些隨機(jī)向量(與詞匯表中的特定word embedding無關(guān))并進(jìn)行調(diào)整,同時(shí)固定預(yù)訓(xùn)練模型的其他部分。 除了probing任務(wù)之外,還有一些其他的使用soft prompt的工作:Li和Liang(2021)將這個(gè)想法擴(kuò)展到生成任務(wù),并表明它在僅調(diào)整 0.1% 的參數(shù)的情況下就能與微調(diào)性能相當(dāng)。Han等人(2021)將soft prompt與人工模板相結(jié)合,在關(guān)系抽取方面取得了極佳的性能。迄今為止,我所看到的關(guān)于soft prompt的最全面的研究來自Lester等人(2021):他們?cè)?T5 上應(yīng)用了soft prompt,并表明只需調(diào)整prompt(僅占總參數(shù)的一小部分),T5 在 NLU 任務(wù)上就可以取得與對(duì)整個(gè)模型進(jìn)行微調(diào)相當(dāng)?shù)男阅?。我之所以喜歡這篇論文,還因?yàn)樗M(jìn)行了廣泛的消融實(shí)驗(yàn),并給出了得到好soft prompt的幾個(gè)關(guān)鍵經(jīng)驗(yàn)選擇,包括用word embedding初始化、足夠數(shù)量的soft prompt token和對(duì)齊的預(yù)訓(xùn)練目標(biāo)。除了參數(shù)效率,Lester 等人(2021)還證明soft prompt比完整模型微調(diào)具有更好的可遷移性。 我們回顧一下soft prompt的idea:它效果非常好,并且在不能(probing任務(wù))或不準(zhǔn)備(模型太大或想要適用于所有任務(wù)的通用模型)接觸模型參數(shù)時(shí)特別有效。微調(diào)soft prompt與基于prompt的微調(diào)區(qū)別很大,它允許優(yōu)化整個(gè)模型,更重要的是,它比標(biāo)準(zhǔn)微調(diào)能更好地處理小樣本情況。與人工prompt不同,AutoPrompt 在小樣本情況下效果不佳,而且據(jù)我所知,沒有soft-prompt論文說它們實(shí)現(xiàn)了很好的小樣本性能(盡管Liu 等人(2021)獲得了較為滿意的小樣本結(jié)果,他們是從離散的人工prompt和微調(diào)整個(gè)模型開始做的)。此外,正如Lester等人(2021)所證明的,除非使用超過100 億參數(shù)的預(yù)訓(xùn)練模型,soft prompt永遠(yuǎn)無法達(dá)到與完全微調(diào)SuperGLUE相同的性能!如何進(jìn)一步推動(dòng)soft prompt在小樣本情況和較小的語言模型中更有效地工作,是我認(rèn)為值得研究的地方。
校準(zhǔn)語言模型 prompting很贊,但它也會(huì)從預(yù)訓(xùn)練語料庫帶來bias。例如,在零樣本情感分類設(shè)置中,給定“N/A”作為輸入,GPT-3 傾向于預(yù)測(cè)為“positive”而不是“negative”,而本應(yīng)該分配50/50的概率給這兩個(gè)相反的標(biāo)簽(趙等人,2021 )。另一個(gè)問題是同一對(duì)象的不同表示(例如,“computer”和“PC”)可能會(huì)競(jìng)爭(zhēng)概率質(zhì)量,導(dǎo)致任務(wù)標(biāo)簽上的分布不理想(Holtzman 等,2021)。趙等人(2021)和Holtzman 等人(2021)給出的解決方案是校準(zhǔn)(calibration):對(duì)帶偏token進(jìn)行補(bǔ)償,把他們校準(zhǔn)為無偏狀態(tài)。 介紹 LM-BFF最后介紹一下我們ACL'21的論文,“ Making Pre-trained Language Models Better Few-shot Learners ”,縮寫為 LM-BFF(better few-shot fine-tuning of language models,或者是language models' best friends forever)。LM-BFF 是一套簡(jiǎn)單的技術(shù)組合,用于僅在少量訓(xùn)練樣本上對(duì)預(yù)訓(xùn)練的 LM 進(jìn)行微調(diào),包括:
我們?cè)趪?yán)格的小樣本設(shè)置(如上文所述)中評(píng)估 LM-BFF,實(shí)驗(yàn)表明 LM-BFF 的效果顯著優(yōu)于標(biāo)準(zhǔn)微調(diào)(在 SNLI 上提升30%,平均提升 11%)。代碼見本文開頭處。 基于Prompt的微調(diào)上文已經(jīng)討論過什么是基于prompt的微調(diào)——用模板(templates)將任務(wù)制定為一個(gè) (masked) language modeling 問題,并將每個(gè)類的預(yù)期輸出設(shè)置為標(biāo)簽詞( label words)。我們設(shè)計(jì)了以下模板和標(biāo)簽詞。
然而,人工制作好的prompt可能比較tricky,需要領(lǐng)域知識(shí),而且結(jié)果可能不直觀。在下表中,我們展示了小樣本模型對(duì)prompt中的小擾動(dòng)的敏感度。
我們觀察到,如果模板是固定的,標(biāo)簽詞與“semantic classes”匹配得越好,結(jié)果就越好。例如,對(duì)于 SST-2,great/terrible > good/bad > cat/dog > dot/cat > terrible/good(雖然不清楚為什么 RoBERTa 認(rèn)為?? 比??更積極)。從 SNLI 中,可以看到如果我們將 [MASK] 放在末尾,或交換兩個(gè)句子,可能會(huì)導(dǎo)致性能下降 10% 以上。這促使我們?nèi)ふ乙环N比人工prompt更好的方式——自動(dòng)prompt搜索。自動(dòng)Prompt搜索我們將自動(dòng)prompt搜索分為兩部分——自動(dòng)標(biāo)簽詞搜索和模板搜索。 對(duì)于自動(dòng)標(biāo)簽詞搜索,我們的目標(biāo)是找到一組可以最大化驗(yàn)證集上性能的標(biāo)簽詞,給定一個(gè)人工模板,一種簡(jiǎn)單的方法是暴力搜索所有單詞組合。但這樣不太可行,因?yàn)樗阉骺臻g是類數(shù)量的指數(shù)級(jí)別,并且該方法容易導(dǎo)致偽相關(guān)和過擬合。我們的做法是,首先為每個(gè)類 我們的模板生成方法 對(duì)于自動(dòng)模板搜索,目標(biāo)是相似的:在給定人工標(biāo)簽詞的情況下,找到使驗(yàn)證集上準(zhǔn)確率最高的模板。我們使用 T5 ,開箱即用,生成了許多候選模板,然后通過驗(yàn)證集表現(xiàn)對(duì)它們進(jìn)行rerank。T5 是一個(gè) seq-to-seq 模型,使用完形填空的目標(biāo)進(jìn)行了預(yù)訓(xùn)練,非常適合用來生成模板。以情感分類(上圖)為例,我們將輸入樣本和對(duì)應(yīng)的標(biāo)簽詞連接起來,并在標(biāo)簽詞周圍插入<X>和<Y>(T5的mask tokens)。要注意,我們希望 T5 模型基于所有few-shot訓(xùn)練樣本做條件生成,因此在每個(gè)位置,我們?nèi)∷惺纠?span>log likelihood之和(具體細(xì)節(jié)參考我們的論文)。最后,我們使用大寬度(100)的beam search來獲取大量高質(zhì)量的模板。 下表顯示了我們的自動(dòng)prompt搜索得到的一些例子??梢钥吹剑瑢?duì)于自動(dòng)模板搜索,大多數(shù)模板都非常適應(yīng)上下文和手動(dòng)標(biāo)簽詞,盡管存在一些潛在的bias(例如,SNLI 模板中的“no”)。盡管大部分看起來很直觀,標(biāo)簽詞的結(jié)果還是包含一些奇怪的異常(例如,SNLI 中entailment類里的“Hi”)。 自動(dòng)prompt搜索結(jié)果 引入Demonstration前文已經(jīng)介紹了 GPT-3 如何在上下文中使用demonstration:從訓(xùn)練集中隨機(jī)抽樣并以任意順序連接它們,這樣其實(shí)在很多方面都會(huì)有問題:預(yù)訓(xùn)練的 LM 的輸入長度是有限的,尤其是對(duì)于較小的(通常是512)來說;如果樣本以隨機(jī)順序連接,則很難得到有意義的pattern;與輸入實(shí)例相差太大的demonstration可能會(huì)沒有幫助,甚至?xí)鸹煜?。因此,我們提出了一種動(dòng)態(tài)地、有選擇地方式來引入demonstration:
實(shí)驗(yàn)結(jié)果
上表顯示了我們的主要實(shí)驗(yàn)結(jié)果。主要結(jié)論如下:
我們的論文中還有很多有趣的實(shí)驗(yàn),展示了自動(dòng)prompt生成如何與模型集成相結(jié)合,以及不同的demonstration和自動(dòng)prompt策略如何影響性能。最后,我們展示了隨著訓(xùn)練樣本增加, 標(biāo)準(zhǔn)微調(diào)和 LM-BFF 之間的對(duì)比和變化趨勢(shì)。如圖所示,LM-BFF 在 SST-2 等簡(jiǎn)單任務(wù)上只用 32 個(gè)訓(xùn)練樣例性能就幾乎飽和,而在 SNLI 等更難的任務(wù)上,它相比持續(xù)微調(diào)有明顯的優(yōu)勢(shì),直到接近 1千個(gè)訓(xùn)練樣本時(shí)兩者的表現(xiàn)才相近。
標(biāo)準(zhǔn)微調(diào) vs LM-BFF隨著K增加的表現(xiàn) (# training examples per class). 當(dāng)然,我們的方法也有局限性。準(zhǔn)確率還有很大的提升空間,就像標(biāo)準(zhǔn)的微調(diào)一樣,LM-BFF 受到小樣本訓(xùn)練中variance的影響比較大。雖然自動(dòng)prompt的性能與人工prompt比相當(dāng)甚至更好,但它仍然需要一些人工設(shè)計(jì)(自動(dòng)模板設(shè)計(jì)始于人工標(biāo)簽詞,自動(dòng)標(biāo)簽詞設(shè)計(jì)始于人工模板)。最后,基于prompt的微調(diào)本身偏好某些任務(wù):(1) 可以作為“填空”的問題,(2) 輸入相對(duì)較短,以及 (3) 不包含很多輸出類。這些都是未來工作中可以考慮的問題。 這篇論文于 2020 年底發(fā)布,從那時(shí)起,關(guān)于few-shot或prompting領(lǐng)域出現(xiàn)了許多激動(dòng)人心的進(jìn)展。盡管如此,LM-BFF 在自動(dòng)prompt生成方面和在微調(diào)中引入demonstration的研究是unique的。與最近的soft-prompt方法相比,LM-BFF(以及其他基于自然語言prompt的方法)在較小的語言模型和few-shot場(chǎng)景中具有巨大的優(yōu)勢(shì)。希望我們的工作能夠激發(fā)在這個(gè)方向上的進(jìn)一步探索。 總體來說,這篇文章討論了很多關(guān)于自然語言prompt、soft-prompt和in-context learning的最新進(jìn)展,并介紹了我們的 LM-BFF 論文。我相信prompting會(huì)是未來幾年比較有希望的研究方向。在更大的場(chǎng)景下,基于prompt的方法是關(guān)于如何更好地從自監(jiān)督學(xué)習(xí)(預(yù)訓(xùn)練)中挖掘知識(shí)(關(guān)于事實(shí)、推理、理解情感等)的,在這個(gè)方向上的研究可以更好地挖掘語言模型的潛力,讓他們成為越來越強(qiáng)大的learner。 References1. Devlin et al. 2019. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. AcknowledgmentsThanks Danqi Chen and Adam Fisch for proofreading the article and their helpful comments! |
|
|