您當前的位置:首頁 > 攝影

通俗易懂地理解Prompt

作者:由 矽谷谷主 發表于 攝影時間:2021-11-22

“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出來。一個示例如下:

通俗易懂地理解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。

通俗易懂地理解Prompt

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。”

標簽: prompt  Model  pretrain  tuning  谷主