1 簡介
Prompt learning作為近期NLP的新寵,熱度不斷攀升,在接下來的一段日子,大概率還是會處于一個風口的位置。什么是Prompt learing?就是通過引入模版來將原始輸入改造成類似于完形填空的格式,讓語言模型去回答,進而推斷出下游任務的結果。prompt leanring是如何發(fā)展形成的?包括組成?類型?面臨哪些挑戰(zhàn)?帶著這些問題,我們對相關內(nèi)容做了一定的梳理,希望能讓大家對于Prompt learning整個框架有個清晰的認識。
2 NLP發(fā)展的四個階段
要了解一個人的話需要去了解他/她的過去。prompt learning作為NLP發(fā)展的重大產(chǎn)物,又有怎樣的一段過去呢?縱觀整個NLP的發(fā)展,它可以分為以下幾個階段。
a) 第一個階段:feature engineering
對應下圖中的Fully Supervised Learning (Non-Neural Network),這是大家常提的特征工程階段,由于缺乏充分的有監(jiān)督訓練數(shù)據(jù),早期的NLP倚重于前期的特征工程,這需要相關研究人員或者專業(yè)人士利用自己扎實的領域知識從原始數(shù)據(jù)中定義并提取有用的特征供模型學習。這個階段構建特征依賴于大量的人工,特征工程的效果也極大程度影響到模型的最終表現(xiàn)。
b) 第二個階段:architecture engineering
對應下圖中的Fully Supervised Learning (Neural Network),隨著神經(jīng)網(wǎng)絡的到來,NLP逐漸過渡到架構工程這個階段,在這個時期,大家更注重于如何設計一個合理的網(wǎng)絡結果去學習有用的特征,從而減少對人工構建特征的依賴。
c) 第三個階段:objective engineering
對應下圖中的Pre-train, Fine-tune,這也是前幾年常掛在嘴邊的預訓練時代。在這個時期,NLP流行的方法基本都是在大量語料上進行預訓練,然后再在少量的下游任務下完成微調(diào)。在這種范式下,更注重于目標的設計,合理設計預訓練跟微調(diào)階段的目標函數(shù),對最終的效果影響深遠。前面兩個階段都依賴于有監(jiān)督學習,但是這個階段里的預訓練可以不需要有監(jiān)督的數(shù)據(jù),極大的降低了對監(jiān)督語料的依賴。
d) 第四個階段:prompt engineering
對應下圖中的Pre-train, Prompt, Predict,也就是本章節(jié)想要介紹的prompt learning的時期。在這個時期,依舊會在大量語料上進行預訓練,但是在特定下游任務下可以通過引入合適的模版(prompt)去重構下游任務,管控模型的行為,實現(xiàn)zero shot或者few shot。一個合適的模版甚至可以讓模型擺脫對下游特定任務數(shù)據(jù)的要求,所以如何構建一個合理有效的prompt成為了重中之重。
圖2: NLP的發(fā)展歷上的四種范式
3 Prompt learning
傳統(tǒng)的監(jiān)督學習任務,是去訓練一個模型P(y|x),接收x作為輸入,去預測y。Prompt learning則不然,它依賴于預訓練語言模型P(x),通過引入合適的模版template將輸入x調(diào)整為完形填空格式的x’,調(diào)整后的輸入x’里含有某些空槽,利用語言模型P將空槽填充后就可以推斷出對應的y。例如對于情感分析任務,傳統(tǒng)的做法就是訓練一個判別模型,去預測輸入x對應的標簽是positive或者negative,但是如果是prompt learning,則是利用合適模版,將輸入x調(diào)整為 [x], it is [z]。然后作為語言模型的輸入去預測相應z的取值,如果z是positive相關的詞,就表示原始輸入x是positive,反之就是negative的。
Prompt learning包括三個部分,分別是prompt addition,answer search, answer mapping。
a) Prompt addition
選擇合適的模版,定義函數(shù)fprompt(x),可以將原始的輸入x轉化為x‘,即fprompt(x)=x’。經(jīng)過該函數(shù)轉化得到的輸入都是帶有空槽,槽位上的預測值會直接決定最后的結果。另外,這里的模版不僅僅可以是離散化的token,也可以連續(xù)的向量。在不同的下游任務,可以靈活調(diào)整,選擇合適的模版。
b) Answer search
通過prompt函數(shù)后,將x’輸入到語言模型,去預測使得語言模型得分最高的候選槽值。Answer search指的就是從所有可能的候選槽值進行搜索,然后選擇合適的槽值填充到對應的空槽里。這里槽值的所有可能結果的集合為Z,對于生成任務而言,Z包括所有的token,但是對于分類任務而言,Z只包含跟特定分類任務相關的一部分token。例如對于之前那個例子而言,Z={positive相關的詞語,negative相關的詞語}
c) Answer mapping
當通過answer search得到合適的槽值時,需要根據(jù)槽值推斷最終的預測結果。這部分比較直接,假如是生成任務,那么填充的槽值就是最終的結果。但如果是分類任務,就需要根據(jù)相應的槽值歸納到具體的類中。例如情感分類中,如果把跟positive相關的槽值都歸類到positive一類,把跟negative相關的槽值歸類到negative一類中。
圖3: Prompt learning
在了解prompt learning的基本組成后,不容易發(fā)現(xiàn),有以下幾個方面都會影響prompt learning的最終效果,后續(xù)我們再圍繞著這幾點分別展開。
a) Prompt engineering,如何選擇一個合適的模版,也就是設計合適的模版函數(shù),是整個prompt learning的第一個步。
b) 預訓練語言模型的選擇, 如何預測空槽位置上的答案依賴于預訓練語言模型的得分,同時預訓練語言模型又有4大類。(在文本生成系列的文章對這這部分的介紹已經(jīng)很詳細了,這里就不贅述了。)
c) Answer engineering,如何構建一個合適的答案候選集以及一個從答案到最終結果的映射。
d) Expanding the paradigm,如何基于基礎的prompt learning去擴展,包括multi prompt等。
e) Training strategy,如何選擇訓練策略,去訓練一個合適的模型。
4 Prompt engineering
Prompt engineering,如何構建一個合適的模版函數(shù),使得在下游任務能取得最高效的表現(xiàn)。Prompt learning利用預訓練語言模型去預測最終結果,那么如何將輸入x轉化為語言模型擅長處理的樣式就是Prompt engineering的工作。一個不合適的prompt function會導致語言模型不能做出令人滿意的預測。為了最終任務的效果,我們需要根據(jù)語言模型和下游任務的特性,去構建合理的prompt。
如果模版處于輸入x之中,那么稱為cloze prompt,這種情形多應用于使用掩碼語言模型的場景,它能夠緊密的跟掩碼語言模型的預訓練過程相配合。如果輸入x全部位于模版內(nèi)容之前,那么稱為prefix prompt,這種情形多應用于生成任務或者使用使用自回歸的語言模型的場景,它能跟從左往右的回歸模型本質(zhì)更加匹配。
Prompt可以是通過人工構建的,根據(jù)人的經(jīng)驗知識構建合理的prompt,這也是最直接的方式。但是通過人工構建的模版需要耗費時間跟精力, 而且即便是專業(yè)人員也不一定能構建得到最優(yōu)的prompt,為此,衍生了不少自動選擇prompt的方法,其中包括離散的prompt,也包括連續(xù)的prompt。
5 Answer engineering
Answer engineering旨在尋找一個合適的答案空間Z以及一個從答案到最終輸入y的一個映射。Prompt learning之所以能實現(xiàn)few shot甚至zero shot,是依仗于預訓練語言模型強大的泛化能力。但是語言模型在預測時都是針對全詞表的,對于下游任務而言并不一定需要全詞表的,例如情感分析任務下如果預測到人稱代詞時要怎么推斷最終結果的情緒呢?為此,Answer engineering要去尋找一個跟下游任務匹配的答案空間,也就是構建候選集,并定義好答案空間到最終輸出之間的映射,候選詞跟最終輸出的對應關系。
Answer engineering里的答案空間可以是由token,或者片段,或者完整的句子組成。Token跟片段的情形多見于分類相關任務,完整的句子多見于生成相關任務。答案空間同樣也可以通過人工構建,也可以通過模型去搜索查找。大部分的方法構造的候選集都是離散化的,只有很少部分方法是連續(xù)化的。
6 Multi-prompt learning
跟打比賽時經(jīng)常會集成多個模型的思路如出一轍,相對于單個prompt,多個prompt往往能提高prompting methods的有效性。常見的多個prompt的方法有以下幾種類型。
圖4: multi-prompt的類型
a) Ensemble
多個prompt,每個prompt都按照單prompt的方法并行進行,然后再把最終的結果匯總,可以通過加權或者投票的方式匯總多個單prompt的方法的結果。
b) Augmentation
增強的方式其實就是找一個跟當前問題相似的case,然后將這個case跟當前輸入x‘一起輸入,這種模型就可以根據(jù)那個case對x‘做出更精準的預測了。
c) Composition
同時利用多個prompt構建prompt函數(shù),每個prompt負責一個子任務,把多個prompt的內(nèi)容融合到一起,同時進行多個子任務的預測。例如關系抽取任務,有的prompt負責實體識別,有的prompt負責判斷實體間的關系。
d) Decomposition
對于有多個預測值的任務,將原始的任務拆分程多個子任務,引入多個prompt,分別處理子任務,彼此隔離。也就是把多個預測值的任務拆分程多個單prompt任務去分別處理。
7 Training strategy
根據(jù)是否需要在語言模型的基礎上引進新的跟模版相關的參數(shù),以及模型參數(shù)是否凍結可以分為以下4種。(圖中第一種不算是prompt learning)
圖5:訓練策略
a) Prompt fine-tuning
NLP發(fā)展史上第三個階段的先預訓練然后再微調(diào)的方法。
b) Tuning-free Prompting
不需要微調(diào),直接利用一個prompt做zero-shot任務
c) Fixed_LM Prompt Tuning
引進了額外的跟prompt相關的的參數(shù),通過固定語言模型參數(shù),去微調(diào)跟prompt相關的參數(shù)。
d) Fixed-prompt LM Tuning
引進了額外的跟prompt相關的的參數(shù),通過固定prompt相關參數(shù),去微調(diào)語言模型參數(shù)。
f) Prompt+LM Tuning
同時微調(diào)語言模型跟prompt相關的參數(shù)。
8 總結
Propt learnimng,充分利用了預訓練語言模型強大的泛化能力,極大的減少了對下游任務有監(jiān)督數(shù)據(jù)的依賴,能實現(xiàn)few shot甚至zero shot,對于當下數(shù)量眾多的NLP下游任務,有很大的應用前景。但是關于如何構建prompt,如何選擇語言模型,構建候選答案空間,構建答案到最終輸出的映射,如何選擇訓練策略,如何尋找一個最佳配置使得下游任務效果達到最優(yōu),依舊是個需要持續(xù)探索的事情。
原文標題:Prompt learning入門
文章出處:【微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。
審核編輯:湯梓紅
-
網(wǎng)絡
+關注
關注
14文章
7580瀏覽量
88943 -
模型
+關注
關注
1文章
3267瀏覽量
48924 -
nlp
+關注
關注
1文章
489瀏覽量
22057
原文標題:Prompt learning入門
文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論