【Prompt系列】(一) 簡介:NLP又出新範式?預訓練新寵Prompt有點火

語言: CN / TW / HK

這是我參與2022首次更文挑戰的第20天,活動詳情查看:2022首次更文挑戰

Prompt 作為 NLP 領域近期出現的新範式,在近幾個月成為 NLP 研究的大熱門。作為當代年輕人,我也想跟跟風,從掃盲文章看起,從本篇簡介開始逐步深入,結合幾篇經典論文的閲讀,較為系統地入門一下 Prompt,將收穫整理成筆記,積澱下來、分享出來。

本文是【Prompt系列】的開篇,由於 Prompt 已經有很多寫得很好的介紹文章用於入門,部分內容我就直接從這些文章中學習、整理了,其間結合了自己的一些思考,希望對大家有所幫助。

文章推薦:

一文跟進Prompt進展!綜述+15篇最新論文逐一梳理 - 夕小瑤的賣萌屋
一文了解Prompt的基本知識與經典工作 - 知乎
預訓練新範式!為什麼Prompt會更有效? - 商業新知

論文推薦:

Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing

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’

image.png

之前的預訓練+微調是讓預訓練模型去適應下游任務,而 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 參數?