从4篇最新论文详解NLP新范式——Continuous Prompt
?PaperWeekly 原創(chuàng) ·?作者?|?張一帆
學(xué)校?|?中科院自動化所博士生
研究方向?|?計算機視覺
近幾年,NLP 技術(shù)發(fā)展迅猛,特別是 BERT 的出現(xiàn),開啟了 NLP 領(lǐng)域新一輪的發(fā)展。從 BERT 開始,對預(yù)訓(xùn)練模型進行 finetune 已經(jīng)成為了整個領(lǐng)域的常規(guī)范式。但是從 GPT-3 開始,一種新的范式開始引起大家的關(guān)注并越來越流行:prompting。
首先我們根據(jù)綜述文章 Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing [1] 對 prompt 的來源和大致思想做個介紹。
NLP 中的四種范式。
全監(jiān)督學(xué)習(xí),即僅在目標(biāo)任務(wù)的輸入輸出樣本數(shù)據(jù)集上訓(xùn)練特定任務(wù)模型,長期以來在許多機器學(xué)習(xí)任務(wù)中發(fā)揮著核心作用,同樣的,全監(jiān)督學(xué)習(xí)在 NLP 領(lǐng)域也非常重要。但是全監(jiān)督的數(shù)據(jù)集對于學(xué)習(xí)高質(zhì)量的模型來說是不充足的,早期的 NLP 模型嚴(yán)重依賴特征工程。隨著用于 NLP 任務(wù)的神經(jīng)網(wǎng)絡(luò)出現(xiàn),使得特征學(xué)習(xí)與模型訓(xùn)練相結(jié)合,研究者將研究重點轉(zhuǎn)向了架構(gòu)工程,即通過設(shè)計一個網(wǎng)絡(luò)架構(gòu)能夠?qū)W習(xí)數(shù)據(jù)特征。
從 2017-2019 年開始,NLP 模型發(fā)生了翻天覆地的變化,這種全監(jiān)督范式發(fā)揮的作用越來越小。具體而言,研究重點開始轉(zhuǎn)向預(yù)訓(xùn)練、微調(diào)范式。在這一范式下,一個具有固定架構(gòu)的模型通過預(yù)訓(xùn)練作為語言模型(LM),用來預(yù)測觀測到的文本數(shù)據(jù)的概率。由于訓(xùn)練 LM 所需的原始文本數(shù)據(jù)需要足夠豐富,因此,這些 LM 都是在比較大的數(shù)據(jù)集上訓(xùn)練完成。
之后,通過引入額外的參數(shù),并使用特定任務(wù)的目標(biāo)函數(shù)對模型進行微調(diào),將預(yù)訓(xùn)練 LM 適應(yīng)于不同的下游任務(wù)。在這種范式下,研究重點轉(zhuǎn)向了目標(biāo)工程,設(shè)計在預(yù)訓(xùn)練和微調(diào)階段使用的訓(xùn)練目標(biāo)(損失函數(shù))。
當(dāng)前我們正處于第二次巨變中,「預(yù)訓(xùn)練、微調(diào)」過程被稱為「預(yù)訓(xùn)練、prompt 和預(yù)測」的過程所取代。在這種范式中,不是通過目標(biāo)工程使預(yù)訓(xùn)練的語言模型(LM)適應(yīng)下游任務(wù),而是重新形式化(Reformulate)下游任務(wù),使其看起來更像是在文本 prompt 的幫助下在原始 LM 訓(xùn)練期間解決的任務(wù)。
通過這種方式,選擇適當(dāng)?shù)?prompt,該方法可以操縱模型的行為,以便預(yù)訓(xùn)練的 LM 本身可以用于預(yù)測所需的輸出,有時甚至無需任何額外的特定任務(wù)訓(xùn)練。這種方法的優(yōu)點是給定一組合適的 prompt,以完全無監(jiān)督的方式訓(xùn)練的單個 LM 就能夠用于解決大量任務(wù)。然而該方法也存在一個問題——這種方法引入了 prompt 挖掘工程的必要性,即需要找出最合適的 prompt 來讓 LM 解決面臨的任務(wù)。
目前的 Prompt Engineering 主要分為三種方法:Discrete Prompt,Continuous Prompt 以及 Hybrid Prompt。本文挑選了最新四篇 Continuous Prompt 相關(guān)的文章加以解讀。
WARP: Word-level Adversarial ReProgramming
Prefix-Tuning: Optimizing Continuous Prompts for Generation
The Power of Scale for Parameter-Efficient Prompt Tuning
Multimodal Few-Shot Learning with Frozen Language Models
第一篇文章首次提出了 continuous prompt 的方法(從 adversarial programming 中得到的 insight),本文的輸入需要可學(xué)習(xí)的 embedding,輸出需要任務(wù)特定的輸出層,也可以看作可學(xué)習(xí)的 prompt,第二篇文章中使用類似于 continuous prompt 類似的 prefix 加到 transformer 的每一層。
這個過程能否進一步簡化呢?第三篇文章給出了答案,第三篇文章只對輸入添加額外的 個可學(xué)習(xí)的 prompt,并得到了超越前人的結(jié)果。第四篇文章屬于一篇應(yīng)用,將 continuous prompt 成功的應(yīng)用在了多模態(tài)領(lǐng)域。
WARP
論文標(biāo)題:
WARP: Word-level Adversarial ReProgramming
收錄會議:
ACL 2021
論文鏈接:
https://arxiv.org/abs/2101.00121
代碼鏈接:
https://github.com/YerevaNN/warp
本文最大的貢獻在于,不同于 Discrete Prompt 需要手工尋找或者學(xué)習(xí)離散的 token 作為 prompt,本文直接優(yōu)化 embedding 作為 prompt,這給了我們的模型更多的自由度,并最終在下游任務(wù)中有更好的表現(xiàn)。
文章的思路很簡單,我們需要優(yōu)化的參數(shù)就是兩組 embedding , 代表 prompt, 是對每一類的分類參數(shù),有點類似于全連接層這種感覺。
如上圖所示,具體來說,我們把 prompt tokens 插入到輸入序列中,再經(jīng)過 encoder 和一個 MLM head,然后通過 ,那么我們分類的概率可以通過如下公式計算:
公式中的 是插入了 prompt 的序列, 是所有類別, 是預(yù)訓(xùn)練語言模型的的輸出。
訓(xùn)練過程也很簡單,就是在下游任務(wù)的數(shù)據(jù)集中通過梯度優(yōu)化尋找使得 cross-entropy loss 最小的參數(shù)。
Experiments
實驗過程中所有的 prompt tokens 都被初始化為 [MASK] 的 embedding。
在最常用的 benchmark GLUE上,WARP 取得了非常不錯的效果,并且參數(shù)量少了好多個數(shù)量級。下表中的 # 表示訓(xùn)練的參數(shù)量。
再看一下 ablation, 即模型有 個 prompt 在里面, 表示使用最佳的 MNLI 參數(shù)初始化的 WARP 模型,可以看到當(dāng)我們減少可訓(xùn)練 prompt 參數(shù)的數(shù)量時,性能下降,但模型仍然有效。
在 few-shot learning 的 setting 下,使用 SuperGLUE benchmark,WARP 超過了 PET 和 GPT-3。
在可解釋性方面,作者通過尋找距離 embedding 最近的 token 來進行離散化,我們摘取兩個任務(wù)對應(yīng)的 prompt 來看一看,可以看到基本上沒有啥真實的語義信息。相比之下 就比較好解釋了,對 MNLI 的“contradiction”類的 embedding 接近于 token “unless”。SST-2 任務(wù)中“negative”和“positive”類的 embedding 分別接近于“defective”和“important”。
Prefix-Tuning
論文標(biāo)題:
Prefix-Tuning: Optimizing Continuous Prompts for Generation
論文鏈接:
https://arxiv.org/abs/2101.00190
代碼鏈接:
https://github.com/XiangLi1999/PrefixTuning
將 prompt 用于 NLG 任務(wù)上,比如對一個數(shù)據(jù)表生成描述的任務(wù)上,任務(wù)的輸入是一個數(shù)據(jù)表(比如 【名稱:星巴克|類型:咖啡店】),輸出是一段描述(星巴克出售咖啡)。
Prefix-Tuning 在該任務(wù)的輸入前加上一個任務(wù)特定的連續(xù)序列(prefix),即下圖下方紅色的部分。與 prompt 相比,這里不再是真實的 token,而是連續(xù)序列。和 finetune 相比,finetune 優(yōu)化的是整體的參數(shù),而這里只對每個任務(wù)優(yōu)化對應(yīng)的 prefix。
Problem Statement:考慮一個條件生成任務(wù),其中輸入是一個 context,輸出是一個標(biāo)記序列。我們關(guān)注兩個任務(wù),如下圖右側(cè)所示:在 table-to-text 中, 對應(yīng)于線性化的數(shù)據(jù)表, 是文本描述;在 summarization 中, 是一篇文章, 是一個簡短的總結(jié)。
我們的預(yù)訓(xùn)練生成模型記作 ,如下圖頂部所示記 是 的 concatenation, 是輸入 的序列號。記 第 個 step 的激活值, 是所有時間點上所有層的激活值, 是 層 transformer 在 step 時的激活值。一個自回歸的語言模型的激活值按照如下方式進行生成:
最后一層 被用來計算 next token 的概率 。
接下來進入 prefix 的方法介紹,首先 highlevel 的說一下 intuition,然后仔細說說方法。
Intuition:本文的 intuition 在于:相信有一個合適的上下文可以在不改變參數(shù)的情況下引導(dǎo) LM。例如,如果我們想讓 LM 生成一個單詞(例如,Obama),我們可以將其常見的搭配作為上下文(例如,Barack)的前綴,LM 將為所需的單詞分配更高的概率。這是對于一個單詞的引導(dǎo),那么是否存在一個 context 可以引導(dǎo)整個句子的生成呢?這是本文要回答的關(guān)鍵問題。
Method:本文對 LM 每一層的輸入添加一個 prefix ,或者對 source,target 端添加不同的 prefix ,這里使用 表示 prefix 的索引, 表示 prefix 的長度。prefix-tuning 初始化一個前綴矩陣 ,如果索引值屬于 prefix 的 ids,那就從 prefix 矩陣中拿出該 id 對應(yīng)的 embedding,如果不是,那么 就是上一步計算出來的 embedding。值得注意的是,即使是第二種情況, 也是和 相關(guān)的,因為在其左側(cè)的文本里依然存在 prefix。
確定了隱變量,其實模型的訓(xùn)練方式就和之前的工作一樣了,只不過這里只更新 prefix 的參數(shù)。但是實際實現(xiàn)的時候發(fā)現(xiàn)直接更新 的參數(shù)非常的不穩(wěn)定,因此本文采取了一種方式重參數(shù)化的方式 ,將一個較小的矩陣 參數(shù)化到 。
Experiments:簡單看看實驗結(jié)果,對于 table-to-text 生成的實驗,使用如下三個數(shù)據(jù)集,Prefix-tuning 以較少的參數(shù)量得到了大多數(shù) metric 上較好的性能。
值得注意的是,數(shù)據(jù)量少的時候,在初始化方面 prefix-tunning 有獨到的 trick,隨機初始化的性能往往不是很好,將 prefix 初始化為一些真實 word 對應(yīng)的激活值會比較有效。特別是將 prefix 用一些任務(wù)相關(guān)的詞的激活值進行初始化,效果最好。
Prompt Tuning
論文標(biāo)題:
The Power of Scale for Parameter-Efficient Prompt Tuning
收錄會議:
EMNLP 2021
論文鏈接:
https://arxiv.org/abs/2104.08691
本文有一個非常有意思的地方,如下圖所示。prompt-tuning 作為 prompt-design 和 model tuning 之間一個折中的方法,隨著模型大小的增大,一度趕上了 model tuning 的性能。使用很少的參數(shù)做 tuning 性能大大超出手工設(shè)計的? prompt。
回憶一下,第一篇文章中輸入需要可學(xué)習(xí)的 embedding,輸出需要任務(wù)特定的輸出層,第二篇文章中 prefix 加到 transformer 的每一層,這個過程能否進一步簡化呢?本文給出了答案,本文只對輸入添加額外的 個可學(xué)習(xí)的 token。除此之外,本文還提出了 prompt ensembling 的方法,即為一個 task 學(xué)習(xí)多個 prompt。
同樣的,本文 follow 預(yù)訓(xùn)練模型 text-to-text 的方法,將 中的 定義為可以表示某一類標(biāo)簽的 token 序列, 是輸入的一系列 token,加上 prompt 和它的參數(shù),任務(wù)又可以寫為 。模型訓(xùn)練的時候就是最大化 的概率,但是只有 可以被更新。
Design Decisions. 三種方法進行 prompt 初始化:(i) 隨機,效果一般不好。(ii) 在詞表中找?guī)讉€,讓 prompt 的參數(shù)接近真實 embedding。(iii) 根據(jù) task 來決定,比如情感分析,我們可以將 prompt 初始化為“negative, positive, happy”等。
這里比較有意思的實驗是關(guān)于 zero-shot learning 的,本文有個觀點:因為我們限制了模型參數(shù)不被調(diào)整,prompt-tuning 阻止模型對數(shù)據(jù)集進行過擬合,畢竟幾個 prompt 并不是 over-parameterized 的,所以 prompt-tuning 也許對domain shift 更加魯棒。
文章在一個 source domain 上訓(xùn)練出 prompt,然后將他直接用于 target 數(shù)據(jù)集進行 evaluation。結(jié)果如下所示,prompt-tuning 顯示出了比 model fine-tuneing 更魯棒的結(jié)果。
Frozen
論文標(biāo)題:
Multimodal Few-Shot Learning with Frozen Language Models
論文鏈接:
https://arxiv.org/abs/2106.13884
prefix 或 prompt 已在文本領(lǐng)域“勢不可擋”,那能不能將其應(yīng)用到多模態(tài)領(lǐng)域呢?
本文提出一種叫做“Frozen”的模型結(jié)構(gòu),它的主要思想是:利用圖像編碼器把圖像作為一種動態(tài)的 prefix,與文本一起送入 LM 中,從而更好地獲得 LM 中的先驗知識,此外,為了將 LM 中的知識遷移到多模態(tài)領(lǐng)域,在訓(xùn)練時選擇凍結(jié) LM 的參數(shù),僅優(yōu)化圖像編碼器有關(guān)參數(shù),模型結(jié)構(gòu)如下圖所示:
主要包括兩個部分:
預(yù)訓(xùn)練自回歸語言模型:使用了 7billion 參數(shù) transformer 模型,在公開數(shù)據(jù)集 C4 上進行訓(xùn)練。
視覺編碼器:以 NF-ResNet-50 為 backbone,目標(biāo)是將輸入的原生圖像轉(zhuǎn)化為連續(xù)的序列,以便與文本一起送入語言模型中。
視覺前綴的構(gòu)造方式:將視覺編碼器的輸出映射為 的矩陣, 為嵌入維度, 可以看作 token 的個數(shù),經(jīng)過測試, 時效果最佳。
訓(xùn)練過程稍微有點特殊,訓(xùn)練時統(tǒng)一使用 Conceptual Captions 作為訓(xùn)練集,Conceptual Captions 的輸入是一張圖片,輸出是關(guān)于此圖片的描述,所以在訓(xùn)練時語言模型是在做生成任務(wù)。訓(xùn)練時還固定了 LM 的所有參數(shù),僅優(yōu)化視覺編碼器的參數(shù)。這是因為 few-shot 場景下數(shù)據(jù)較少,若不固定 LM 的話,反而會破壞 LM 原有的信息,甚至使模型產(chǎn)生災(zāi)難性遺忘。
訓(xùn)練時的輸入是形如(image, text)的一堆 pair,但是 few-shot 場景下可能會輸入多個(image, text)pair,所以在位置編碼上使用了相對位置編碼,從而保證 image 相對于 text 是在其前面的。
總的來說 本文將文本中的 Prefix 應(yīng)用到了圖片、文本多模態(tài)領(lǐng)域,將圖片作為 prefix,與文本一起送入語言模型中,利用 Image Caption 數(shù)據(jù)集訓(xùn)練了一個生成式語言模型。在 VQA、OKVQA、miniImageNet 等多個數(shù)據(jù)集驗證了遷移學(xué)習(xí)的效果,在 few-shot 場景下驗證了 prefix 對模型的提升。
通過將圖片作為prefix,從而將文本中的靜態(tài) prefix 轉(zhuǎn)化為動態(tài) prefix,能更好的適應(yīng)不同的任務(wù)。但是,由于 Visiual Encoder 和文本的處理比較簡單,模型效果離 SOTA 有一定的距離。
Conclusion
總的來說,discrete prompt 和 continuous prompt 各有優(yōu)劣,discrete 學(xué)到的 prompt 自然帶有解釋性,但是離散的 token 本身就比較難優(yōu)化,目前的方法也是近似的挑選而已。continuous prompt 最近的結(jié)果表現(xiàn)得更好,不需要考慮映射回離散的詞空間,有更大的自由度。這部分也能和 CV,多模態(tài)更緊密地結(jié)合。
參考文獻
[1] https://arxiv.org/abs/2107.13586
更多閱讀
#投 稿?通 道#
?讓你的文字被更多人看到?
如何才能讓更多的優(yōu)質(zhì)內(nèi)容以更短路徑到達讀者群體,縮短讀者尋找優(yōu)質(zhì)內(nèi)容的成本呢?答案就是:你不認(rèn)識的人。
總有一些你不認(rèn)識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學(xué)者和學(xué)術(shù)靈感相互碰撞,迸發(fā)出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優(yōu)質(zhì)內(nèi)容,可以是最新論文解讀,也可以是學(xué)術(shù)熱點剖析、科研心得或競賽經(jīng)驗講解等。我們的目的只有一個,讓知識真正流動起來。
?????稿件基本要求:
? 文章確系個人原創(chuàng)作品,未曾在公開渠道發(fā)表,如為其他平臺已發(fā)表或待發(fā)表的文章,請明確標(biāo)注?
? 稿件建議以?markdown?格式撰寫,文中配圖以附件形式發(fā)送,要求圖片清晰,無版權(quán)問題
? PaperWeekly 尊重原作者署名權(quán),并將為每篇被采納的原創(chuàng)首發(fā)稿件,提供業(yè)內(nèi)具有競爭力稿酬,具體依據(jù)文章閱讀量和文章質(zhì)量階梯制結(jié)算
?????投稿通道:
? 投稿郵箱:hr@paperweekly.site?
? 來稿請備注即時聯(lián)系方式(微信),以便我們在稿件選用的第一時間聯(lián)系作者
? 您也可以直接添加小編微信(pwbot02)快速投稿,備注:姓名-投稿
△長按添加PaperWeekly小編
????
現(xiàn)在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關(guān)注」訂閱我們的專欄吧
·
總結(jié)
以上是生活随笔為你收集整理的从4篇最新论文详解NLP新范式——Continuous Prompt的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bios怎么电脑检查 BIOS如何进行电
- 下一篇: 零样本性能超越GPT-3!谷歌提出137