大語言模型的預訓練[3]之Prompt Learning:Prompt Engineering

大語言模型的預訓練[3]之Prompt Learning:Prompt Engineering、Answer engineering、Multi-prompt learning、Training strategy詳解
1.Prompt Learning
1.1 Prompt Learning 的出現背景
目前學術界一般將 NLP 任務的發(fā)展分為四個階段,即 NLP 四范式::
第一范式:傳統(tǒng)機器學習模型的范式,基于全監(jiān)督學習(fully supervised learning)的方法。通過構建特征工程(feature engineering),利用領域知識從數據中提取好的特征,直接解決下游任務。例如
tf-idf
特征 + 樸素貝葉斯等機器算法。第二范式:基于深度學習模型的范式,通過設計結構工程(architecture engineering),即設計一個合適的網絡結構來把歸納偏置(
inductive bias
)引入模型中,訓練一個端到端的模型,利用學習好的特征,直接解決下游任務。例如word2vec
?特征 +?LSTM
?等深度學習算法,相比于傳統(tǒng)方法,模型準確有所提高,特征工程的工作也有所減少。第三范式:基于預訓練模型 + finetuning 的范式,即預訓練 + 微調(pre-train and fine-tune)。在這個模式中,?先用一個固定的結構預訓練一個語言模型(language model, LM),預訓練的方式就是讓模型補全上下文(比如完形填空)。相比于深度學習模型,模型準確度顯著提高,模型也隨之變得更大,小數據集也可以訓練出效果好的模型。
第四范式:基于預訓練模型 + Prompt + 預測的范式,跟第三范式一樣,先獲得大型語言模型,然后通過引入額外的參數或微調來適應到下游任務上。這就逐漸形成了目標工程(objective engineering),即為預訓練任務和微調任務設計更好的目標函數。如 BERT + Prompt 的范式相比于第三范式,模型訓練所需的訓練數據顯著減少。
NLP 四個范式對比如下所示:

1.2 Prompt Learning 的定義
Prompt Learning 就是期望預訓練語言模型在下游任務中,在不顯著改變預訓練語言模型結構和參數的情況下,通過向模型輸入增加 “提示信息”,只需要模型本身就能夠解決問題。即通過為輸入內容添加額外的文本 (重新定義任務) 的方式,來更好的挖掘預訓練語言模型本身能力的一種方法。
傳統(tǒng)的監(jiān)督學習任務,是去訓練一個模型 P(y|x),接收 x 作為輸入,去預測 y。Prompt learning 是依賴于預訓練語言模型 P(x),通過引入合適的模版將輸入 x 調整為完形填空格式的 x’,調整后的輸入 x’里含有空槽,利用語言模型 P 將空槽填充后就可以推斷出對應的 y。例如,對于情感分析任務,傳統(tǒng)的做法就是訓練一個判別模型,去預測輸入 x 對應的標簽是 positive 或者 negative,但是如果是 prompt learning,則是利用合適模版,將輸入 x 調整為 [x], it is [z]。然后作為語言模型的輸入去預測相應 z 的取值,如果 z 是 positive 相關的詞,就表示原始輸入 x 是 positive,反之就是 negative 的。
Prompt learning 包括三個部分,分別是 prompt addition,answer search, answer mapping。
Prompt addition
選擇合適的模版,定義函數 fprompt(x),可以將原始的輸入 x 轉化為 x‘,即 fprompt(x)=x’。經過該函數轉化得到的輸入都是帶有空槽,這個位置一般在句中或者句末,位置以及數量都可能對結果造成影響,需要人工構造,空槽上的預測值會直接決定最后的結果。
模板是:【X】Overall,it was a 【Z】 course。
【Z】在句中,這種 prompt 稱為 cloze prompt。 如果在句末,則這種 prompt 稱為 prefix prompt。另外,這里的模版不僅僅可以是離散化的 token,也可以連續(xù)的向量。在不同的下游任務,可以靈活調整,選擇合適的模版。
Answer search
Answer search 指的是從所有可能的候選槽值進行搜索,然后選擇合適的槽值填充到對應的空槽里。這里槽值的所有可能結果的集合為 Z,對于生成任務而言,Z 包括所有的 token,但是對于分類任務而言,Z 只包含跟特定分類任務相關的一部分 token。例如對于之前那個例子而言,Z={positive 相關的詞語,negative 相關的詞語}
Answer mapping
當通過 answer search 得到合適的槽值時,需要根據槽值推斷最終的預測結果。這部分比較直接,假如是生成任務,那么填充的槽值就是最終的結果。但如果是分類任務,就需要根據相應的槽值歸納到具體的類中。例如情感分類中,如果把跟 positive 相關的槽值都歸類到 positive 一類,把跟 negative 相關的槽值歸類到 negative 一類中。
Prompt Engineering 的核心思想,主要就是將已有的下游 NLP 任務重構成 token 級的預測任務,在不改變原有的 pre-trained LM 的前提下(也就是說不進行 fine tuning)直接將 LM 應用的過程,換言之,是在用下游任務適配 LM。融入了 Prompt 的模式大致可以歸納成 “Pre-train, Prompt, and Predict”,在該模式中 下游任務被重新調整成類似預訓練任務的形式。
1.3 Prompt Learning的方法
在了解 prompt learning 的基本組成后,有以下幾個方面都會影響 prompt learning 的最終效果。
Prompt engineering,設計合適的模版函數,是整個 prompt learning 的第一個步。
預訓練語言模型的選擇,預測空槽位置上的答案依賴于預訓練語言模型的得分,同時預訓練語言模型又有 4 大類。
Answer engineering,構建一個合適的答案候選集以及一個從答案到最終結果的映射。
Expanding the paradigm,基于基礎的 prompt learning 去擴展,包括 multi prompt 等。
Training strategy,選擇訓練策略,去訓練一個合適的模型。
1.4 Prompt engineering
Prompt engineering 是創(chuàng)建 prompting 函數 $fprompt(x)$ 的過程,即構建一個合適的模版函數,使下游任務能取得最高效的表現。Prompt learning 利用預訓練語言模型去預測最終結果,那么如何將輸入 x 轉化為語言模型擅長處理的樣式就是 Prompt engineering 的工作。一個不合適的 prompt function 會導致語言模型不能做出令人滿意的預測。
根據【Y】的位置 Promp shape 可以分為填充文字字符串空白的完形填空(cloze prompt)和用于延續(xù)字符串前綴的前綴(prefix prompt)。
對于有關生成任務或使用標準自回歸 LM 解決的任務,使用 prefix prompt,因為與模型從左到右的性質吻合。PS:“I'm not sure I understand this point。Please continue to write:【Y】”
對于使用掩碼(Mask)LM 解決的任務(ps.BERT),cloze prompt 更合適,因為與預訓練任務的形式匹配。PS:“The course taught by the teacher is easy to understand. Overall it was a 【Y】course“
為了最終任務的效果,需要根據語言模型和下游任務的特性,去構建合理的 prompt。構建 prompt 方式有三種:
1) 人工構建
Prompt learning 最直接的方式是通過專業(yè)人士的經驗知識構建合理的 prompt,給模型增加合適的提示。通過人工構建的 prompt,由于附帶人的專業(yè)知識,非常直觀理解,過程簡單,效果相對可控,可供快速嘗試。能支持強大預訓練模型實現 few shot 甚至 zero shot,媲美那些有監(jiān)督學習的方法。同時,人工構建 prompt 的方式有很廣泛的應用,可以直接去支持下游任務,也可以輔助半監(jiān)督學習方法去構建數據集,做數據增強等等。人工構建 prompt 的方式,作為一種簡單有效的方式,也驗證了 prompt learning 的價值,減輕了對有監(jiān)督數據的依賴,提供了一個將龐大的預訓練模型應用到眾多下游任務的方向。雖然這種方式直觀,但是人工構建 prompt 的方式有兩個弊端,一方面人工構建 prompt 和測試 prompt 效果耗費時間跟精力,另一方面是即便是專業(yè)人士也不一定能通過人工的方式構建最優(yōu)的 prompt。為了解決這個問題,自然而然就衍生自動構建 prompt 的方式,自動構建 prompt 可以分為離散型的 prompt(prompt 可以用具體的字符表示)和連續(xù)型的 prompt(prompt 由向量替代)。
2) 離散型 prompt
離散 Prompts 指的是自動生成由自然語言的詞組成的 Prompt,因此其搜索空間是離散的。通常是先由人工構建,然后可以通過種子 prompt 去擴充,也可以通過生成方式去獲取。在構建得到 prompt 候選集后,可以在下游任務上評估,也可以通過語言模型去打分。最終可以只選擇最合適的一種 prompt,也可以集成多個 prompt。離散的主要包括 Prompt Mining, Prompt Paraphrasing, Gradient-based Search, Prompt Generation 和 Prompt Scoring。
Prompt Mining. 該方法需要一個大的文本庫支持,例如 Wikipedia。給定輸入 x 和輸出 y,要找到 x 和 y 之間的中間詞或者依賴路徑,然后選取出現頻繁的中間詞或依賴路徑作為模板,即 “[X] middle words [Z]”。
Prompt Paraphrasing. Paraphrasing-based 方法是基于釋義的,主要采用現有的種子 prompts(例如手動構造),并將其轉述成一組其他候選 prompts,然后選擇一個在目標任務上達到最好效果的。一般的做法有:將提示符翻譯成另一種語言,然后再翻譯回來;使用同義或近義短語來替換等。
Gradient-based Search. 梯度下降搜索的方法是在單詞候選集里選擇詞并組合成 prompt,利用梯度下降的方式不斷嘗試組合,從而達到讓 PLM 生成需要的詞的目的。
Prompt Generation. 既然 Prompt 也是一段文本,那是否可以用文本生成的方式來生成 Prompt 呢?該類方法就是將標準的自然語言生成的模型用于生成 prompts 了。例如,Gao 等人將 T5 引入了模板搜索的過程,讓 T5 生成模板詞;Ben-David 等人提出了一種域自適應算法,訓練 T5 為每個輸入生成一種唯一的域相關特征,然后把輸入和特征連接起來組成模板再用到下游任務中。
Prompt Scoring. Davison 等人在研究知識圖譜補全任務的時候為三元組輸入(頭實體,關系,尾實體)設計了一種模板。首先人工制造一組模板候選,然后把相應的 [X] 和[Z]都填上成為 prompts,并使用一個雙向 LM 給這些 prompts 打分,最后選取其中的高分 prompt。
3) 連續(xù)型 prompt
構造 Prompt 的初衷是能夠找到一個合適的方法 讓 Pre-trained Language Model(PLM)更好地輸出我們想要的結果,但其實并不一定要將 Prompt 的形式設計成人類可以理解的自然語言, 只要機器理解就行了。連續(xù)性 prompt 可以擺脫人類理解的自然語言,直接作用到模型的 Embedding 空間,通過梯度更新優(yōu)化。由于可以進行梯度優(yōu)化,它的效果通常優(yōu)于離散型 prompt,而離散型 prompt 由于不可導只能采用近似梯度或其他方式去優(yōu)化 。連續(xù)型 prompt 的初始化很重要,一般會采用合理的 token 進行初始化,這些 token 可以是手工設計的離散型 prompt。模版中詞語的 Embedding 可以是整個自然語言的 Embedding,不再只是有限的一些 Embedding 模版的參數不再直接取 PLM 的參數,而是有自己獨立的參數,可以通過下游任務的訓練數據進行調整。
連續(xù) Prompts 相比于離散 Prompts 來說不再拘泥于人類可以理解的語言,會將機器可以理解的向量 embedding 也作為 Prompt 模板。目前的連續(xù) prompts 方法大致可以分為下面三種:
Prefix Tuning. 在輸入前添加一串連續(xù)的向量的方法,該方法保持 PLM 的參數不動,僅訓練合適的前綴(prefix)。freeze 預訓練參數,單純調參每一層前綴提示向量參數。它的形式化定義是,在給定一個可訓練的前綴矩陣
Mφ
和一個固定的參數化為θ
的 PLM 的對數似然目標上進行優(yōu)化,即:max?logP(y∣x;θ;?)=max?ΣyilogP(yi∣h<i;θ;?)
?其中?h<i=[h<i(1);...;h<i(n)]
指的是所有神經網絡層在第 i 個時間步的連接。如果對應的時間步在前綴中,即hiisM?[i]
, 則它可以直接從前綴矩陣中復制過來;否則需要使用 PLM 進行計算。類似地,輸入序列前面加上特殊的 token 來組成一個模板,然后直接調整這些 token 的 embedding。 和上面的 Prefix Tuning 的方法相比,他們的方法相對來說參數較少,因為沒有在每一層網絡中引入額外的參數。Tuing Initialized with Discrete Prompts. 這類方法中連續(xù) prompts 是用已有的 prompts 初始化的,已有的 prompts 可以是手工設計的,也可以是之前搜索發(fā)現的離散 prompts。先用一個離散 prompt 搜索方法定義了一個模板,然后基于該模板初始化虛擬的 token,最后微調這些 token 的 embedding 以提高準確率。
Hard-Soft Prompt Hybrid Tuning. 這類方法可以說是手工設計和自動學習的結合,它通常不單純使用可學習的 prompt 模板,而是在手工設計的模板中插入一些可學習的 embedding。Liu 等人提出了 “P-Tuning” 方法,通過在 input embedding 中插入可訓練的變量來學習連續(xù)的 prompts。并且,該方法使用 BiLSTM 的輸出來表示 prompt embeddings,以便讓 prompt tokens 之間有一定的交互。P-tuning 還引入了任務相關的 anchor tokens(例如關系提取中的 “capital”)來進一步提高效果,這些 anchor tokens 不參與后續(xù)的調優(yōu)。Han 等人提出了?Prompt?Tunning with?Rules(PTR)方法,使用手工指定的子模板按照邏輯規(guī)則組裝成完整的模板。為了增強生成的模板的表示能力,該方法還插入了幾個虛擬 token,這些虛擬 token 的 embeddings 可以和 PLM 的參數一起被調整,PTR 的模板 token 既有實際 token 也有虛擬 token 。實驗結果證明了該方法在關系分類任務中的有效性。
2. 預訓練語言模型的選擇
Left-to-Right LM: GPT, GPT-2, GPT-3
Masked LM: BERT, RoBERTa
Prefix LM: UniLM1, UniLM2
Encoder-Decoder: T5, MASS, BART
3.Answer engineering
Answer engineering 旨在尋找一個合適的答案空間 Z 以及一個從答案到最終輸入 y 的一個映射,從而得到一個有效的預測模型。Prompt learning 之所以能實現 few shot 甚至 zero shot,是依仗于預訓練語言模型強大的泛化能力。但是語言模型在預測時都是針對全詞表的,對于下游任務而言并不一定需要全詞表的,例如情感分析任務下如果預測到人稱代詞時要怎么推斷最終結果的情緒呢?為此,Answer engineering 要去尋找一個跟下游任務匹配的答案空間,也就是構建候選集,并定義好答案空間到最終輸出之間的映射,候選詞跟最終輸出的對應關系。
Answer 的形式決定了它的任務,常見的選擇包括:
Token:預訓練 LM 詞匯表中的一個 token,或者詞匯子集;
Span:短的 multi-token span,這些通常與 cloze prompt 一起使用;
句子或文檔:通常與前綴 prompt 一起使用。
Token 跟 Span 的情形多見于分類相關任務,句子或文檔多見于生成相關任務。答案空間同樣可以通過人工構建,也可以通過模型去搜索查找。大部分的方法構造的候選集都是離散化的,只有很少部分方法是連續(xù)化的。與 prompt engineering 相同,answer engineering 同樣有人工設計與自動獲取兩種方法。
人工設計答案: 人工設計分為兩類 空間。Unconstrained spaces 中的空間包含了輸出空間的所有結果,token 級的話則是全部詞表中的詞 (比如 W2V 的輸出層),其余類型相同。這類方法可以直接找到 Z 與 y 的映射關系。Constrained spaces,這類方法通常輸出是在一個限定范圍內 (比如 positive 和 negative),這類方法就需要一個映射關系來映射 Z 與 y。特點: 直觀,自然,費力,經驗。
自動學習答案: 人工設計 answer 的方式最終很有可能在獲得一個次最優(yōu)的語言模型,通過人工設計 answer 的方式依舊依賴于專業(yè)人士的知識,不容易遷移到更多場景?;诖?,出現了一些自動設計 answer 的工作。
1)Answer paraphrasing:首先初始化一個答案空間然后用這些答案的釋義去擴充答案空間直至收斂。這種擴充 answer 的方式可以理解為單個的答案候選可能不太穩(wěn)定,如果語言模型對它理解不到位會導致最后結果偏差較大,所以通過回譯的方式擴充答案空間從而獲得每個類別的多個候選表達,綜合考慮模型對多個候選表達的預測結果會得到更加魯棒的結果。最終實驗也證明了通過這種方式得到的多樣化的表示可以有效提高語言模型在多選 QA 問題的表現。
2)Prune-then-search:先對答案候選空間進行裁剪,然后再通過算法去搜索得到最終合適的答案候選。
3)Label Decomposition:由于類別標簽已經包含了很多真實的語義信息,所以 Adaprompt 直接將類別標簽分解為多個 token 作為該類別的候選答案,例如一個類別是”per: cityofdeath”,把這里一些沒有語義的連接詞 (例如 of) 去掉后,從而得到對應的候選答案是{person, city, death}。
4) 連續(xù)型答案自動搜索:這類工作較有代表性的 WRAP 在詞嵌入部分為每個類別指定了一個連續(xù)的變量去表征這個類別,然后通過梯度回傳去更新這個表征類別的詞嵌入。
4.Multi-prompt learning
以上的 prompt 工程方法主要集中于為輸入構建單個 prompt。相對于單個 prompt,多個 prompt 往往能提高 prompting methods 的有效性。常見的多個 prompt 的方法有以下幾種類型。
a) Ensemble
多個 prompt,每個 prompt 都按照單 prompt 的方法并行進行,然后再把最終的結果匯總,可以通過加權或者投票的方式匯總多個單 prompt 的方法的結果。可以利用不同 prompt 的優(yōu)勢實現互補。
可以緩解 prompt engineering 中尋找一個最優(yōu) prompt 的繁重工作。
可以在下游任務表現得更加穩(wěn)定。
b) Augmentation
又稱為模仿學習,它的思路跟 GPT2 的 few shot 做法極為相似,就是給出一些完整的樣例([MASK]位置被正確預測了的完形填空格式,也稱 answered prompt),跟當前的完形填空格式一同輸入語言模型,這樣語言模型就會按照完整的樣例,舉一反三,對當前問題的 [MASK] 位置做出更加準確的預測。增強的方式其實就是找一個跟當前問題相似的 case,然后將這個 case 跟當前輸入 x‘一起輸入,這種模型就可以根據那個 case 對 x‘做出更精準的預測了。c) Composition
所有可組合的語言任務可以由多個基本的子任務組成,prompt composition 利用多個子 prompt 構建 prompt 函數,每個子 prompt 針對一個子任務,把多個 prompt 的內容融合到一起,可以定義更加復雜的 prompt,同時進行多個子任務的預測。例如關系抽取任務,有的 prompt 負責實體識別,有的 prompt 負責判斷實體間的關系。
d) Decomposition
跟 prompt composition 剛好反過來,對于有些問題,想通過定義一個完整的 prompt 去解決會非常具有挑戰(zhàn),于是一個直觀的做法就是將這個問題分解為多個問題,分別定義多個子 prompt 去分別處理。例如命名實體問題,可以將文本劃分為多個片段,然后用各個子 prompt 分別去識別這些片段是否是實體或者對應的是實體類型,最后匯總所有片段的結果即可。prompt composition 跟 prompt decomposition 都是需要明確問題是由哪些子任務組成的,設計完相應的子 prompt 后再根據具體場景決定是用分解還是組合的方式解決。
5.Training strategy
在大部分情況下,prompt learning 可以在不經過任何語言模型的顯示訓練下直接應用到下游任務中。如同典型的 zero shot,通過跟下游任務相關的 prompt,將原始文本轉化為帶 [MASK] 標記的完形填空問題,用語言模型直接去預測 [MASK] 位置的 token。整個過程不涉及訓練,也不需要另外的訓練數據。
然而,有一定訓練數據的加持能進一步提升模型的效果,所以也衍生跟 prompt learning 相關的一些訓練策略,尤其是對于 few shot learning,加入一點點相關訓練數據的訓練可以驅使模型往正確的方向演變,從而更加有效。對于 prompt learning 相關的方法一般有兩部分參數,一部分是預訓練語言模型自身的參數,另一部分是跟 prompt 相關的參數,那類參數應該更新是一項重要的設計決策。
研究者基于底層語言模型的參數是否需要調整、是否有額外的 prompt 參數和這些額外的 prompt 參數是否需要調整這三個方面總結以下調整策略, 把可能的參數更新方法分為 5 種類型。
a)Prompt fine-tuning
首先亂入的是跟 prompt learning 沒有任何關系的方法,也是常見的 finetune,這種類型的方法不涉及 prompt,不需要 prompt 相關設計,也沒有 prompt 相關的參數。這種類型的方法最大的短板在于對訓練數據量有一定要求,這就限制了它在低資源場景下的廣泛應用。優(yōu)勢:簡單,不需要另外設計 prompt,直接在訓練數據上調整語言模型的參數即可。
劣勢:訓練數據不足時容易過擬合或者不穩(wěn)定。
b)Tuning-free Prompting
這種類型的方法其實就是 GPT 中的 zero shot,不需要訓練數據,沒有訓練過程,基于 prompt 直接生成答案,無需調參。之前提及的離散型 prompt 自動構建或者人工構建 prompt 的方法多屬于這種類型。
優(yōu)勢:高效,不需要參數更新過程,固定語言模型參數,可以在下游任務直接 zero shot。
劣勢:需要準確的 prompt 設計。
c)Fixed_LM Prompt Tuning
引進了額外的跟 prompt 相關的的參數,通過固定語言模型參數,去微調跟 prompt 相關的參數,使下游任務更好作用于 prompt 的產生。之前介紹過的連續(xù)型 prompt 的自動構造相關的方法基本都屬于這種類型。
優(yōu)勢:適合小樣本學習,跟 tuning-free prompting 類似,能夠保留語言模型的知識,并且適用于 few shot 場景,效果也會比 tuning-free prompting 好。
劣勢:不適用于零樣本學習,prompt engineering 相關工作很重要,微調得到的 prompt 也基本不是人能理解和掌握的。
d)Fixed-prompt LM Tuning
跟 Fixed-LM Prompt Tuning 相反,同樣會引入額外的跟 prompt 相關的參數,但是會固定跟 prompt 相關的參數,只微調語言模型自身的參數。如果使用離散型 prompt 并據此進一步優(yōu)化語言模型參數的話就屬于這種類型的方法。
優(yōu)勢:prompt engineering 跟 answer engineering 更完整的說明了任務,更適用于 few shot 場景。
劣勢:嚴重依賴于 prompt engineering 和 answer engineering 的效果,最終效果可能不及沒有使用 prompt 的方法。
e)Prompt+LM Tuning
Prompt 相關參數跟語言模型自身參數都進行微調,跟常規(guī)的預訓練語言模型微調很像,新增的 prompt 可以在模型的訓練開始時提供一種增強策略,適合大數據集,小數據集易過擬合。
優(yōu)勢:最具表達能力的模型,適用于有充足數據的場景。
劣勢:需要一定的訓練,對數據量有一定要求,需要存儲所有模型的參數,包括語言模型自身的參數和跟 prompt 相關的參數。
在訓練條件充足的條件下,prompt learning 相對于常規(guī)的 finetune 沒有明顯優(yōu)勢,prompt learning 的價值還是體現在 few shot 甚至 zero shot 場景下。同時可以看到對于不微調 prompt 相關參數的方法,模型效果都嚴重依賴于 prompt engineering 和 answer engineering。對于那些可以微調 prompt 相關參數的方法,又對于訓練數據量有一定要求,如果連語言模型的參數也要調整的話,那么就需要更多的訓練數據。所以對于 few shot 場景,由于訓練數據量限制,選擇固定語言模型參數只微調 prompt 相關參數的方法更受青睞,對于每一個具體下游任務只需要保存 prompt 相關的參數即可,也為 prompt learning 的大范圍應用提供了可能。
6.小結
Prompt learning,充分利用了預訓練語言模型強大的泛化能力,極大的減少了對下游任務有監(jiān)督數據的依賴,能實現 few shot 甚至 zero shot,對于當下數量眾多的 NLP 下游任務,有很大的應用前景。但是關于如何構建 prompt,如何選擇語言模型,構建候選答案空間,構建答案到最終輸出的映射,如何選擇訓練策略,如何尋找一個最佳配置使得下游任務效果達到最優(yōu),依舊是個需要持續(xù)探索的事情。Prompt learning 是包括眾多環(huán)節(jié)的一個學習任務,包括 prompt engineering, answer engineering, tuning strategy, pretrain language model, multi prompt learning 等,每個環(huán)節(jié)都有若干種不同的選擇,如何在如此繁多的可能性中搜索一個最優(yōu)的組合確實是需要持續(xù)探索的事情。
6.1 Prompt Learning 使得所有的 NLP 任務成為一個語言模型的問題
Prompt Learning 可以將所有的任務歸一化預訓練語言模型的任務
避免了預訓練和 fine-tuning 之間的 gap,幾乎所有 NLP 任務都可以直接使用,不需要訓練數據。
在少樣本的數據集上,能取得超過 fine-tuning 的效果。
使得所有的任務在方法上變得一致
6.2 Prompt Learning 和 Fine-tuning 的范式區(qū)別
Fine-tuning 是使得預訓練語言模型適配下游任務
Prompting 是將下游任務進行任務重定義,使得其利用預訓練語言模型的能力,即適配語言模型
6.3 挑戰(zhàn)與展望
Prompt 的設計問題。目前使用 Prompt 的工作大多集中育分類任務和生成任務,其它任務則較少,因為如何有效地將預訓練任務和 prompt 聯系起來還是一個值得探討的問題。另外,模板和答案的聯系也函待解決。模型的表現同時依賴于使用的模板和答案的轉化,如何同時搜索或者學習出兩者聯合的最好效果仍然很具挑戰(zhàn)性。
Prompt 的理論分析和可解釋性。盡管 Prompt 方法在很多情況下都取得了成功,但是目前 prompt-based learning 的理論分析和保證還很少,使得人們很難了解 Prompt 為什么能達到好的效果,又為什么在自然語言中意義相近的 Prompt 有時效果卻相差很大。
Prompt 在 PLM debias 方面的應用。由于 PLM 在預訓練過程中見過了大量的人類世界的自然語言,所以很自然地受到了影響。在應用的過程中,Prompt 暴露了 PLM 學習到的很多偏見,比如種族歧視、恐怖主義、性別對立等等。已有相關研究關注是否可以利用 Prompt 來對這些偏見進行修正,但還處在比較初級的階段,這也會是一個值得研究的方向。
更多優(yōu)質內容請關注公號&知乎:汀丶人工智能;會提供一些相關的資源和優(yōu)質文章,免費獲取閱讀。
