通俗易懂地理解Prompt
“Prompt:NLP 新正規化”
最近類似heading的文章和新聞層出不窮,prompt顯然已經成為了現代NLP領域的新寵方法。隨著組裡越來越多的小夥伴也開始做一些prompt相關的research,我決定寫一篇關於prompt的介紹,讓還沒有“真香”的小夥伴們嚐嚐鮮。
文章有些部分是從我的personal notes裡面copy過來的,夾帶了點私貨,若有不嚴謹的地方敬請見諒。
若你想每天學一點新理論,可以
關注
一下本賬號,以方便讀到之後的文章。
Cheers~
Overview
Definition
:
Prompt是給input加的一段文字或一組向量,讓模型根據input和外加的prompt做masked language modeling (MLM)。
For example,
{
我們想對影評“
No reason to watch。
”做sentiment classification,如果是常規的pretrain-finetune做法,pretrain的model和下游任務的model有不一樣的objective,並需要增加一組新的引數。比如,在本例子中,要把pretrain的model應用在下游任務sentiment analysis上,常規的pretrain-finetune正規化要加一個sentiment classification的objective,並加一個對映到2維的linear layer並做softmax來做sentiment二分類。
然而,在使用prompt時,我們依舊保持pretrain時的objective和architecture不變,只是在原句子後面加一個prompt “It was”,那原句子就變成了“
No reason to watch。 It was ____
”, 這樣模型透過對這個填空處詞彙的預測來試圖將pretrain的知識遷移到當前這個任務上來。注意,這時候原模型預測的vocabulary set變成了一個label word set; 比如在這個sentiment analysis的下游任務,我們的label word set就可以是{great,terrible},將great當成positive的分類,terrible當成negative的分類,以此把在pretrain中學到的語義資訊利用過來,用在下游任務的sentiment classification上。
}
這種prompt的形式可以基於pretrain的model來做few-shot learning,尤其是當你的task只有很少的training sample時,你可以很快地把從pretrain model中學到的知識遷移到你的target down stream task上。
通常來說,prompt有兩種形式:discrete prompt和soft prompt。
Discrete prompt
Discrete prompt分為兩種,
一種
是上面舉例中的human-designed prompt,也就是人類手工設計prompt來將pretrain的知識和down stream task的知識聯絡起來。這種情況下我們不知道PTM學到的知識和我們人類的認知是否高度吻合,而這種prompt也極有可能並非最佳。
於是,
另一種
是找一組trigger tokens來當作prompt。這種方法假設所有的知識透過pretrain已經被encode在encoder裡了,我們只要用適當的trigger來把它prompt出來。一個示例如下:
Auto-prompt示例
可以看到,儘管trigger tokens和人類設計的prompt相比沒有那麼make sense,但它們可能才是對應pretrain models最優的prompts。
Soft/continuous prompts
既然都已經自動生成token-level的prompt了,那我們再大膽一點,直接用continuous的vectors來代替由token representation組成的token-level prompt,然後不finetune model,而是訓練這些continuous的vectors,以尋找一組最優的vectors來代替顯性的discrete prompt。
注意,soft prompts使用時freeze住model的引數,而只訓練soft prompt vectors,這種正規化在使用一些大的pretrain models,比如GPT-3,難以finetune整個model時,非常好用。
然而,只做prompt tuning(freeze住model,只訓練prompt)和model tuning(model跟著prompt一起finetune)的performance有差異。
如下圖所示(論文The Power of Scale for Parameter-Efficient Prompt Tuning),只有在model的引數大於10 billion時,prompt tuning的表現才會趕上model tuning。
GPT-3 (blue) vs full model fine-tuning (orange) vs soft-prompt tuning (green)。
本文簡潔,通俗地介紹了prompt的兩種形式(離散和連續),以及兩種訓練的策略(只訓練prompt和讓model跟著一起finetune),希望你在心中對prompt的概念,分支,以及各自特點有了初步的理解,這也是本文的宗旨。
少年,你的功力又增強了!:-D
如果你覺得本文對你有所啟發,歡迎左下角
點贊
,你們的分享與支援是我不斷輸出的動力(
full-time Ph.D.,搬磚不易!
)。我會不定期update一些新的思考與前沿技術,我update的內容一定也是對我自己的research有所啟發的。若你想跟我一起進步,可以
關注
一下本賬號,以方便讀到之後的文章。
Peace
推薦閱讀:
你真的理解transformer了嗎(一)- review and rethink
為什麼訓練的時候warm up這麼重要?一文理解warm up原理
矽谷谷主:Seq2seq, autoregressive, autoencoding的區別,三百字講清楚
矽谷谷主:一文搞懂Language Modeling三大評估標準
矽谷谷主:一文掌握Byte Pair Encoding(BPE) — NLP最重要的編碼方式之一
矽谷谷主:一文理解強化學習中policy-gradient 和Q-learning的區別
矽谷谷主:所有你想知道的-關於python import
矽谷谷主:徹底搞懂Python中生成器,迭代器,和可迭代物件(一):迭代器和可迭代物件
作者:矽谷谷主
參考:
https://
thegradient。pub/prompti
ng/
Lester, Brian, Rami Al-Rfou, and Noah Constant。 “The power of scale for parameter-efficient prompt tuning。”
上一篇:把印象最深的景物寫具體
下一篇:汽車雨刮日常要怎麼養護清洗!