【Prompt系列】(一) 簡介:NLP又出新正規化?預訓練新寵Prompt有點火
這是我參與2022首次更文挑戰的第20天,活動詳情檢視:2022首次更文挑戰
Prompt 作為 NLP 領域近期出現的新正規化,在近幾個月成為 NLP 研究的大熱門。作為當代年輕人,我也想跟跟風,從掃盲文章看起,從本篇簡介開始逐步深入,結合幾篇經典論文的閱讀,較為系統地入門一下 Prompt,將收穫整理成筆記,積澱下來、分享出來。
本文是【Prompt系列】的開篇,由於 Prompt 已經有很多寫得很好的介紹文章用於入門,部分內容我就直接從這些文章中學習、整理了,其間結合了自己的一些思考,希望對大家有所幫助。
文章推薦:
一文跟進Prompt進展!綜述+15篇最新論文逐一梳理 - 夕小瑤的賣萌屋
一文了解Prompt的基本知識與經典工作 - 知乎
預訓練新正規化!為什麼Prompt會更有效? - 商業新知
論文推薦:
Prompt 簡介
NLP 正規化演進歷程
- 全監督學習(非神經網路): 僅在目標任務的輸入輸出樣本資料集上訓練特定任務模型,嚴重依賴特徵工程。
- 全監督學習(神經網路): 使得特徵學習與模型訓練相結合,於是研究重點轉向了架構工程,即通過設計一個網路架構(如CNN,RNN,Transformer)能夠學習資料特徵。
- Pre-train,Fine-tune: 先在大資料集上預訓練,再根據特定任務對模型進行微調,以適應於不同的下游任務。在這種正規化下,研究重點轉向了目標工程,設計在預訓練和微調階段使用的訓練目標(損失函式)。
- Pre-train,Prompt,Predict: 無需要fine-tune,讓預訓練模型直接適應下游任務。方便省事,不需要每個任務每套引數,突破資料約束。
What’s Prompt
Prompt:將下游任務的輸入輸出形式改造成預訓練任務中的形式,即 MLM (Masked Language Model) 的形式。
原任務:
Input: I love this movie.
Output: ++ (very positive)
改造後:
Prefix prompt 版(prompt 槽在文字末尾,適合生成任務或自迴歸 LM,如 GPT-3):
Input: I love this movie. Overall, the movie is [Z].
Cloze prompt 版(prompt 槽在文字中間或結尾,適合 MLM 任務,如 BERT):
Input: I love this movie. Overall, it was a [Z] movie.
Output: [Z] = ‘good’
之前的預訓練+微調是讓預訓練模型去適應下游任務,而 Prompt 則是調整下游任務來適應預訓練模型。
Why Prompt
為什麼 Prompt 有效
比起微調從零開始學習一個分類器(舉例),建立預訓練模型輸出與分類結果之間的對應,Prompt 的任務形式與預訓練相同,直接可以從輸入中獲取更多的語義資訊,因此即便是少量資料甚至是 zero-shot 也可能取得不錯的效果。
Prompt 的優點
- 如上所述,prompt 的引入使得預訓練模型提取的特徵更自然地用於下游任務的預測,特徵質量更高。
- 不需要為下游任務新增一個分類器,因為任務形式與預訓練模型本身相適應;也不需要從零開始訓練本來要加的這個分類器。只需要建立一個簡單的對映,將 prompt 正規化的輸出再轉變成下游任務需要的輸出形式。
- 在少樣本甚至零樣本場景下表現優秀。
How Prompt
如何構建 Prompt 的 pipeline
- Prompt Addition:在輸入中新增 Prompt;
- Answer Search:根據改造後的輸入預測[Z];
- Answer Mapping:把預測的結果轉變成下游任務所需要的形式。
如何設計自己的 Prompt 模型
- 預訓練模型的選擇;
- Prompt Engineering:選擇合適的 Prompt,包括兩方面:
- prefix prompt 還是 cloze prompt?
- 手動設計還是自動構建(搜尋、優化、生成等)?
- Answer Engineering:選擇合適的方法將預測結果映射回下游任務需要的輸出形式;
- Multi-prompt:設計多個 prompt 以獲取更好的效果(整合學習、資料增強等);
- 訓練策略:Prompt 模型可能會含有除了 LM 模型以外的 Prompt 引數,訓練策略需要考慮的包括:
- 有沒有額外的 Prompt Params?
- 是否更新這些 Prompt 引數?