Prompt-based Language Models:模版增强语言模型小结
?PaperWeekly 原創 ·?作者?|?李濼秋
學校?|?浙江大學碩士生
研究方向?|?自然語言處理、知識圖譜
最近注意到 NLP 社區中興起了一陣基于 Prompt(模版)增強模型預測的潮流:
從蘇劍林大佬近期的幾篇文章《必須要 GPT3 嗎?不,BERT 的 MLM 模型也能小樣本學習》,《P-tuning:自動構建模版,釋放語言模型潛能》,到智源社區在 3 月 20 日舉辦的《智源悟道 1.0 AI 研究成果發布會 暨大規模預訓練模型交流論壇》[1] 中楊植麟大佬關于“預訓練與微調新范式”的報告,都指出了 Prompt 在少樣本學習等場景下對模型效果的巨大提升作用。
本文根據上述資料以及相關論文,嘗試梳理一下 Prompt 這一系列方法的前世今生。
不知道哪里來的圖……
本文目錄:
追本溯源:從GPT、MLM到Pattern-Exploiting Training
Pattern-Exploiting?Training
解放雙手:自動構建Prompt
LM?Prompt And?Query?Archive
AUTOPROMPT
Better?Few-shot?Fine-tuning?of Language Models
異想天開:構建連續Prompt
P-tuning
小結
追本溯源:從GPT、MLM到Pattern-Exploiting Training
要說明 Prompt 是什么,一切還要從 OpenAI 推出的 GPT 模型說起。
GPT 是一系列生成模型,在 2020 年 5 月推出了第三代即 GPT-3。具有 1750 億參數的它,可以不經微調(當然,幾乎沒有人可以輕易訓練它)而生成各式各樣的文本,從常規任務(如對話、摘要)到一些稀奇古怪的場景(生成 UI、SQL 代碼?)等等。
在這里,我們關注到 GPT 模型在零樣本場景下的運行方式——基于一定的任務描述(task description),按這一描述的指定生成文本:
▲ 嘿,注意:圖中的 Prompt 不是本文的 Prompt
僅僅幾個單詞組成的任務描述,就可以為語言模型的預測提供指導,這啟發了一些少樣本領域的工作——在缺少訓練數據的場景下,利用任務描述能很好地提升模型的效果。
另一個靈感來自預訓練語言模型的 Masked Language Model/MLM 任務:
在 BERT 的訓練中,有 15% 的輸入詞被選中,其中的絕大部分又被替換為 [MASK] 標簽或者隨機的其他詞,并在最終的 hidden states 中對被遮蓋的詞進行預測,通過還原遮蓋詞讓模型學習單詞級別的上下文信息。
將這兩個靈感融合,就得到了以下將介紹的 Pattern-Exploiting Training,或 PET 方法。
補充:從這里就可以提出一個問題,Mask 和 Prompt,具體而言是哪一部分對模型預測起了作用?
1.1 Pattern-Exploiting Training
PET 來自 2020 年的論文(已發表在 EACL 2021)《Exploiting Cloze Questions for Few Shot Text Classi?cation and Natural Language Inference》,其中介紹了一種基于模版和詞遮蓋將文本分類任務轉換為完形填空(cloze)任務的半監督訓練方法,僅使用 RoBERTa-base 模型就在多個半監督場景下取得了 SOTA:
1. 首先,針對少量樣本設計描述的模版(pattern),如下圖中對 “Best pizza ever!” 的情感分類任務,生成一個 “It was ___” 的句子并拼接在原始輸入后作為補充;
對模版中遮蓋的詞(即下劃線部分),設計候選詞對應不同的情感極性(圖中 great 對應 positive,bad 對應 negative),然后將模型預測 “great” 的概率作為原來預測 “positive” 的概率,從而將情感分類任務轉換為完形填空任務。
當然,原文中對 NLI 任務也進行了模版構建,其操作有所不同,在此不展開;
注意,完形填空和 MLM 不是一個任務,雖然二者都是詞分類任務,但是類別一個是候選詞集,一個是模型中全部的詞集;
2. 對有標簽樣本集設計不同的模版,然后對每一個模版,分別訓練模型;
因為有標簽樣本比較少,所以訓練成本低于全量數據訓練一個完整的模型;
這里的訓練因為是有監督的,所以結合了完形填空的詞分類 loss 和 MLM Loss 進行訓練:?,其中 MLM loss 占較小比重(1e-4);
3. 使用上面訓練得到的一堆模型,在無標簽數據上進行預測,按不同 pattern 的模型 acc 對應權重對所有的預測進行歸一化,作為 soft label 蒸餾一個最終模型;
這里最終模型并不進行 pattern 的學習;
在這里的訓練中,不涉及 MLM loss。
在 PET 的基礎上,為了讓不同模版訓練出的模型互相學習,文中還提出了一種迭代式的 PET 訓練(Iterative PET,iPET):
其實就是進行多代交叉的蒸餾,隨機選取每一代的模型為無標簽數據進行標記,并基于此進一步訓練下一代模型;
最終和 PET 一樣,用不同模型標注的無標簽數據進行預測,蒸餾一個統一的模型。
說完了訓練過程,我們看看這里的模版(pattern):
情感分類(Yelp):
文本蘊含(MNLI):
可以看出,人工構建的模板比較簡單,語義上也和任務具有較好的關聯。
在這一半監督場景工作的基礎上,本文作者進一步在 NAACL 2021 上發表了《It’s Not Just Size That Matters: Small Language Models Are Also Few-Shot Learners》,通過將“小模型”(ALBERT)和 GPT-3 這一巨無霸在 SuperGLUE benchmark 上進行對比,進一步挖掘 PET 訓練在少樣本場景下的潛力。
由于使用的基本是同一個方法(補充了實際訓練中 multi-token 的 mask 預測),所以不再重復,在此貼出論文的實驗結果:
除了這一個震撼的結果以外,蘇神的文章中也有一些中文的少樣本實驗(包括零樣本、小樣本、半監督等場景)證明了 MLM 預測在中文情感分析中的作用。
解放雙手:自動構建Prompt
有了 PET,人們顯然是不滿足的——類比機器學習的不同時期的話,人工構建 pattern/prompt 就像在進行手工的特征工程,對輸入特征進行人工的選擇和組合,所謂“有多少人工,就有多少智能”,需要不斷嘗試和調整才能取得一個比較好的模版。
而依賴特征工程的方法,如今很大程度上被深度學習為主的自動選擇特征的方法取代了——換言之,取代手工選取模版的方法自然會被自動選取特征的方法取代。
不同 pattern 對效果影響巨大(來自 GPT Understands, Too)
2.1 LM Prompt And Query Archive
最早提出自動構建模版的工作應該是發表在 TACL 2020 的《How Can We Know What Language Models Know?》,其中提出了一個 LPAQA(LM Prompt And Query Archive)方法以進行模版的自動搜索。
不過,這篇文章并不應用在前述的少樣本場景,而是針對一個檢測語言模型是否具有某些知識的探針任務(Language Models as Knowledge,LAMA Probe)——而這一任務的形式也是完形填空。
LPAQA 旨在改進 LAMA 的模版(換言之,讓語言模型在這些新的 queries 上具有更好的預測表現),以為檢測 LM 中的知識提供一個更嚴格的下界:
▲ LAMA 部分問題模版
可以看到,LAMA 數據集中包含的句子用于描述兩個實體之間的關系,而其中一個實體被遮蓋,需要語言模型來預測,如果預測正確則說明模型學會了這一關系。然而,很多時候其實從這些 query 中是看不出這種關系的,或者說,即便模型沒有回答正確,也不能說明模型不懂這個關系(比如存在一對多的情形,或者模型未見過的實體等)。
具體而言,LPAQA 包含兩部分生成方法:
1. Mining-based Generation:基于遠程監督的假設(即,出現相同實體對的句子表達相同的關系),在 Wikipedia sentence 中尋找包含頭尾實體 h、t 的句子,然后進一步提出了兩種 prompt 抽取方法:
Middle-word Prompts:對于 h、t 中間包含文本的句子形式,將 h、t 中間的文本當作 prompt;
Dependency-based Prompts:對于其他句子,使用句法依賴解析來提取 h 和 t 最短的路徑,并將路徑上的詞作為 prompt。
2.?Paraphrasing-based Generation:類似查詢拓展技術,在保持原 prompt 語義同時增加詞匯的多樣性。這種方法依賴反向翻譯(back-translation),即翻譯到另一種語言再翻譯回來,構成多個樣本后根據往返概率(round-trip probability)篩選 prompt。
顯然,第一種方法會引入噪音,而第二種也具有不穩定性。
因此,需要進一步篩選高質量的生成語句,為此本文提出了 selection 和 ensemble 的方法:
Top-1 Prompt Selection:就是用 LM 測一測看看效果,取 acc 最高的 prompt;
Rank-based Ensemble:除了 Top-1 方案,有時候需要保持多個模版來增強效果,即選取前 K 個模版;
Optimized Ensemble:通過 LM 的預測為不同的 prompt 賦權。
這篇文章看起來很復雜,實際上提出了一個比較 basic 的方案。
簡單、可控,沒有什么 fancy 操作,不需要調整什么模型參數(幾乎是 parameter-free 的),實際操作和落地都很有價值,這大概就是 LPAQA 的優點……
2.2 AUTOPROMPT
這是來自 EMNLP 2020 的文章《AUTOPROMPT: Eliciting Knowledge from Language Models with Automatically Generated Prompts》,提出了一種基于梯度的模版搜索方案,如下圖:
方法很直觀,將通過梯度找出的 trigger word 和 mask 拼接在文本中,形成一個語義上不通順、但是對模型而言卻具有合理提示的樣本,并且將 label 預測轉換為 masked token 的預測(即完形填空問題)。
方法的核心在于選取 trigger word,這一方法基于本文作者之一的 Wallace 在 EMNLP 2019 發表的對抗攻擊文章《Universal Adversarial Triggers for Attacking and Analyzing NLP》:
1. 將所有 trigger token 初始化為 mask token;
2. 對某個 trigger 進行替換,找出前 k 個最大化輸入與其梯度乘積的詞:
?
3. 對每個候選詞,評估其加入 prompt 后的模型預測概率:
??
4. 通過形如 的模版,加入上面選出的詞構造 prompt。
補充:這里的步驟說的不是很清楚,不過大致應該就是梯度粗篩+代入模版精篩。具體參考:http://ucinlp.github.io/autoprompt,而且這里用 5 個詞的 template,估計也是效果試出來的……
此外,這里標簽詞也是自動化的方式選出來的:
1. 將 mask token 的 hidden states 過一個線性層,用這一輸出對應真實 label 的預測,進行訓練得到線性層的權重;
2. 將 MLM 的輸出 word embedding 過上面這個線性層(這里應該是說,將候選詞代替 mask token 后輸出的 hidden states)并預測 label,這個分數越高說明候選詞與 label 的關聯越強,那么就取分數最高的候選詞作為 label 對應的token:。
這一工作不但在 SST-2 和 SICK-E(一個 NLI 數據集,不知道為什么不用 MNLI 呢?)上進行實驗,還在 LAMA 與 LPAQA 進行了比較。
以下是不同任務找出的 trigger token 和 label token:
在 LAMA 數據集上,和 LPAQA 相比,AUTOPROMPT 生成的 prompt 對 LM 效果提升更明顯:即便每個關系只用一個 prompt,也比 LPAQA 集成了 30 句 prompt 的提升效果要好……
實驗中發現一些有趣的結論:
AUTOPROMPT 中,更容易用語言表達的 label 對應的 prompt 提升比其他?label 的明顯(例如 NLI 的 contradiction > entailment / neutral);
在 LAMA 中,越容易具體說明的關系對應的 prompt 對模型提升越大,這個和上一點相似;
在 LAMA 中,RoBERTa 比 BERT 表現差,因為它在 prompt 中加入了一些無關的 token,然而這一點依然有待未來工作探究(當然,LAMA 僅僅表明了語言模型能力的下界)。
進一步,本文中進行了 RE 實驗,看看 AUTOPROMPT 在 RE 任務(T-Rex 數據集)上的效果。實驗發現 LM 比常規 RE 大幅度勝出,在對尾實體進行隨機替換實驗后依然如此——后一實驗用于探究 LM 是否因為記憶了實體才具有更好的效果。
補充:值得注意的是,這里的實驗忽略 NA 即無關系標簽,使用 precision 作為指標,和常規的 F1 指標有較大區別;這里的設置我不是很理解(也許單純為了效果更好)
總體而言,AUTOPROMPT 雖然效果不錯,但相對而言具有更差的解釋性,其搜索方式也比較簡單——這一點是否是缺點則見仁見智。
2.3 Better Few-shot Fine-tuning of Language Models
這一工作來自 Danqi Chen 大佬的小組:《Making Pre-trained Language Models Better Few-shot Learners》,探究少樣本場景下 Prompt 的作用,基于谷歌的 T5 模型構建了一個自動化的 pipeline:
補充:LM-BFF 也可以是 language models’ best friends forever
????
同樣注意到 PET 方法的低效,這一工作提出了一種名為 LM-BFF 的架構,引入了T5(Text-to-Text Transfer Transformer)生成模型用于自動化生成 Prompt,同時也指出 LPAQA 只能應用在有限場景(表達 relation 等),而 AUTOPROMPT 需要大量樣本進行基于梯度搜索,總而言之目前的方案都不完美……
本文探究的是少樣本場景,包括 single-sentence tasks 和 sentence-pair tasks。此前的工作局限于分類,本文還涉及 STS-B 這一回歸任務。
此外還加入了 demonstrations(示例)與 prompt 一并輸入以為預測提供指導。這一靈感來自于 GPT 在少樣本場景的工作方式,即將示例樣本與任務描述一并輸入模型:
具體方案包括標簽詞的自動搜索、模版的搜索和樣本實例的搜索,以下分別介紹:
1. 標簽詞搜索。用預訓練模型為每個 label 找到預測最高的 k 個詞,綜合每個類的詞進行訓練找到效果最好的 n 個組合(嘿,這里我也沒弄明白怎么找的,不會是暴力試一遍吧),再在 dev 微調找出最佳的一組;
2. 模板搜索。用 T5 進行不指定 token 數量的生成,這一點比普通的固定數量 mask 要自然;
3. 實力搜索。考慮到 GPT-3 方案對樣本長度的限制和不同樣本不好訓練,使用 Sentence-BERT 為輸入樣本在每一個類別尋找相似的樣本作為 demonstration。
使用 T5 搜索模版
實驗結果如下:
可以看出 prompt FT(auto) + demonstrations > prompt FT(auto) > prompt FT(man) > FT;
但是全量數據 FT 還是比不過(差別不算大?也有超過的,不過 CoLA 低的不行),這也合情合理。
關于詳細解讀,可以參考這篇文章:
https://zhuanlan.zhihu.com/p/341609647
異想天開:構建連續Prompt
看到這 idea,我腦海里第一個念頭就是:
你的下一句prompt,何必是自然語言?
好吧,這一塊是關于唐杰老師的《GPT Understands, Too》,首次提出了用連續空間搜索的 embedding 做 prompt。
這拓展倒是合情合理,畢竟自然語言是給人看的,而模型只會看到一堆向量……
3.1 P-tuning
和之前的工作不太一樣,這篇文章用的是 GPT 這個生成模型而不是 BERT 這些 MLM 模型。
同樣注意到離散化表達的搜索困難,但是這一工作接著自動搜索還提出了連續空間的搜索。
這一操作可就相當于去掉了鐐銬,但是也帶來了搜索空間過大的問題(同時,也模糊了 prompt 原本的含義)。
那么 p-tuning 是怎么搜索 prompt 的呢?請看:
為了(1)保持語義的關聯、(2)保持 token 間的上下文依賴關系,作者使用一個可訓練 LSTM 模型——即上圖(b)中的 Prompt Encoder——生成的 embedding 替換模版中的詞。
在這一基礎上,對某些和任務相關的 token 進行保留(task-related anchors),比將它們也隨機訓練帶來的效果更好。——anchors是怎么選的?好像論文沒說……
然后在少樣本場景,只訓練 LSTM(即只進行尋找 prompt);
在全量數據場景,全部參數進行 fine-tuning(即尋找 prompt 和 fine-tuning 共同進行)。
在 LAMA 和 SuperGLUE 上進行測試:
LAMA 上的結果表明:
PT > MP + FT > FT > MP
PT > AUTOPROMPT > LPAQA > MP
然后是 SuperGLUE,對比 BERT-large 和 GPT2-medium(和 base 結果類似,這里只貼一個):
除了和 LAMA 類似的結論,GPT2 雖然還是有一些任務比不過 BERT,但是還是很不錯的。
然后,這里又拿出前輩 PET 進行比較:
相比起來,iPET 使用了數據增強、模型集成、蒸餾技術,然而還是比不過 P-Tuning(讀出了作者的小驕傲哈哈);
這張表上半部分除了使用 32 個 train 以外,還用挑選的 32 個 dev 進行驗證,大部分任務的效果依然超過了 GPT-3 和 PET,說明了 P-Tuning 的有效性。
補充1:問題來了,連續的 prompt 和離散的有多接近呢?文章中沒有提及……補充2:用 LSTM 這一操作多少有點迷惑和不自然……可以參考蘇神的版本,不加 LSTM 直接訓練的討論。
補充:又看到一篇 NLG 上的 Prefix-Tuning 方法《Prefix-Tuning: Optimizing Continuous Prompts for Generation》,有興趣的讀者可以去了解一下:
Prefix-Tuning: Optimizing Continuous Prompts for Generation [2]
小結
在低資源場景(半監督、少樣本以至于零樣本)下,Prompt 對 LM 的直接預測以及 fine-tuning 具有明顯的增益(甚至,是否可以考慮不做 tune 只加 prompt 的方法);
目前而言,不確定 prompt 對 LM 的增益主要來源于完形填空這一任務設置與其預訓練 MLM 流程保持了形式的一致性,還是搜索到的提示詞為預測帶來的幫助;
現在有這么多種 prompt(或者叫額外輸入):GPT-3 的 task description、完形填空的 prompt、甚至連續的 prompt 以及額外樣本 demonstration,從本質上是不一樣的,對模型效果的提升的相同之處和不同方面還有待研究——為什么這個 prompt 效果好,為什么那個不好,是否有一種統一的最優方案,也是值得探索的問題;
目前來看 prompt 的優化搜索空間很大,但是它主要提升的少樣本場景本身就缺少訓練數據,自然需要人工的先驗來幫助模型,這人工先驗又不一定有效,是一個矛盾的點。
參考文獻
[1] https://hub.baai.ac.cn/activity/details/141
[2]?https://arxiv.org/abs/2101.00190
更多閱讀
#投 稿?通 道#
?讓你的文字被更多人看到?
如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學術熱點剖析、科研心得或競賽經驗講解等。我們的目的只有一個,讓知識真正流動起來。
?????稿件基本要求:
? 文章確系個人原創作品,未曾在公開渠道發表,如為其他平臺已發表或待發表的文章,請明確標注?
? 稿件建議以?markdown?格式撰寫,文中配圖以附件形式發送,要求圖片清晰,無版權問題
? PaperWeekly 尊重原作者署名權,并將為每篇被采納的原創首發稿件,提供業內具有競爭力稿酬,具體依據文章閱讀量和文章質量階梯制結算
?????投稿通道:
? 投稿郵箱:hr@paperweekly.site?
? 來稿請備注即時聯系方式(微信),以便我們在稿件選用的第一時間聯系作者
? 您也可以直接添加小編微信(pwbot02)快速投稿,備注:姓名-投稿
△長按添加PaperWeekly小編
????
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
關于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
總結
以上是生活随笔為你收集整理的Prompt-based Language Models:模版增强语言模型小结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 成都火车东站四川科创技工学校怎么走
- 下一篇: 智能马桶不自动冲水了怎么办?