零樣本和小樣本學習
本文說明 .NET 中提示工程的零樣本和小樣本學習,包括其主要使用案例。
GPT 模型效能受益於提示工程,這是提供指示和範例給模型以精簡其輸出的做法。 零樣本和小樣本學習是您在提供範例時可以使用的技術。
透過零樣本學習,您會包含提示,但不會包含逐字完成。 您可以包含只由提示組成的完成。零樣本學習完全依賴模型的現有知識來產生回應,從而減少建立的語彙基元數目,並協助您控制成本。 不過,零樣本學習不會新增至模型的知識。
以下是範例零樣本提示,其會告訴模型評估使用者輸入,以判斷輸入代表四個可能意圖中的哪一個,然後在其回應前面加上 "Intent: "。
prompt = $"""
Instructions: What is the intent of this request?
If you don't know the intent, don't guess; instead respond with "Unknown".
Choices: SendEmail, SendMessage, CompleteTask, CreateDocument, Unknown.
User Input: {request}
Intent:
""";
透過小樣本學習,您會包含與逐字完成配對的提示。 相較於零樣本學習,這表示小樣本學習會產生更多的語彙基元,並導致模型更新其知識,這會使小樣本學習更加資源密集。 不過,基於相同原因,小樣本學習也可協助模型產生更相關的回應。
prompt = $"""
Instructions: What is the intent of this request?
If you don't know the intent, don't guess; instead respond with "Unknown".
Choices: SendEmail, SendMessage, CompleteTask, CreateDocument, Unknown.
User Input: Can you send a very quick approval to the marketing team?
Intent: SendMessage
User Input: Can you send the full update to the marketing team?
Intent: SendEmail
User Input: {request}
Intent:
""";
零樣本學習使用案例
零樣本學習是傳遞提示的做法,這些提示不與逐字完成配對,但其可與提示配對。 零樣本學習有兩個主要使用案例:
- 使用微調的 LLM - 因為其依賴模型的現有知識,所以零樣本學習不像小樣本學習需要大量資源,而且其適用於已對指示資料集進行微調的 LLM。 您也許能夠只依賴零樣本學習,並保持相對低的成本。
- 建立效能基準 - 零樣本學習可協助您模擬應用程式對實際使用者執行的方式。 這可讓您評估模型目前效能的各種層面,例如正確性或精確度。 在此情況下,您通常會使用零樣本學習來建立效能基準,然後試驗小樣本學習來改善效能。
小樣本學習使用案例
小樣本學習是傳遞提示的做法,這些提示與逐字完成配對 (小樣本提示),以顯示您的模型如何回應。 與零樣本學習不同,小樣本學習可以新增至模型的知識。 您甚至可以使用自己的資料集,藉由執行擷取擴增世代來自動產生小樣本提示。
小樣本學習有兩個主要使用案例:
- 調整 LLM - 因為其可以新增至模型的知識,所以小樣本學習可以改善模型的效能。 其還會導致模型比零樣本學習建立更多的語彙基元,這最終可能會變得極其昂貴,甚至不可行。 不過,如果您的 LLM 尚未進行微調,則您將無法透過零樣本提示取得良好的效能,並且需要小樣本學習。
- 修正效能問題 - 您可以使用小樣本學習作為零樣本學習的後續學習。 在此情況下,您會使用零樣本學習來建立效能基準,然後根據您使用的零樣本學習試驗小樣本學習。 這可讓您在查看模型目前回應方式之後新增至模型的知識,以便您可以逐一查看並改善效能,同時將您引進的語彙基元數目降至最低。
警示
- 範例型學習並不適用於複雜的推理工作。 不過,新增指示可以協助解決此問題。
- 小樣本學習需要建立冗長的提示。 具有大量語彙基元的提示可能會增加計算和延遲。 這通常表示成本增加。 提示的長度也有限制。
- 當您使用數個範例時,模型可以學習錯誤模式,例如「正面情緒的可能性是負面情緒的兩倍。」