使用 GPT-Neo 與 Hugging Face Accelerated Inference API 進行少樣本學習 (Few-Shot Learning)

Hugging Face 詳細說明了如何使用 GPT-Neo 與 🤗 Accelerated Inference API 實作少樣本學習,讓開發者能夠以極少的標記數據執行 NLP 任務。這種方法透過在推論時提供少量範例來引導模型預測,從而克服了對大型數據集的需求障礙。

理解 NLP 中的少樣本學習

少樣本學習是指為機器學習模型提供極少量的訓練數據——通常是在推論時提供幾個範例——而不是使用需要大型標記數據集的標準微調 (fine-tuning)。在自然語言處理 (NLP) 中,大型語言模型 (LLMs) 利用其在海量文本數據集上的預訓練,隱含地學習了各種任務,使其能夠在極少引導的情況下泛化到先前未見過的任務。

一個少樣本 NLP 提示詞 (prompt) 由三個主要組成部分組成:

  • 任務描述 (Task Description):對目標的簡潔指令(例如,「將英文翻譯成法文」)。
  • 範例 (Examples):一組展示預期輸出的小型示範集(例如,「sea otter => loutre de mer")。
  • 提示詞 (Prompt):模型需要完成的新範例的開頭(例如,「cheese => ")。

研究指出,隨著模型參數數量的增加,少樣本提示能力通常會隨之提升。

GPT-Neo:開源替代方案

GPT-Neo 是由 EleutherAI 開發的一系列基於 transformer 的語言模型,旨在成為 GPT-3 的開源授權等效版本。這些模型是在 Pile dataset 上進行訓練的,這是一個大型且有詳盡文獻記錄的文本語料庫。由於這種訓練方式,GPT-Neo 預期在與 Pile dataset 分佈一致的文本上表現最為出色。

透過 🤗 Accelerated Inference API 進行部署

🤗 Accelerated Inference API 是一個託管服務,允許用戶在 Hugging Face Model Hub 的 10,000 多個公開模型以及私有模型上執行推論。該 API 在 CPU 和 GPU 上均提供加速,與標準的開箱即用 Transformers 部署相比,可提供高達 100 倍的加速。

要將 GPT-Neo(特別是 2.7B 參數版本)整合到應用程式中,開發者可以使用簡單的 POST 請求發送到推論端點,並使用特定參數來控制生成:

  • max_new_tokens:限制生成的 token 數量。
  • temperature:控制輸出的隨機性;較低的值會產生更具決定性的文本,而較高的值會增加隨機性。
  • end_sequence:一個停止序列(例如,「###"),用於防止模型生成超出預期答案的文本。

實作建議與洞察

由於 GPT-Neo (2.7B) 比 GPT-3 (175B) 小約 60 倍,它在零樣本 (zero-shot) 問題上的泛化能力不如後者有效。為了獲得高品質的結果,GPT-Neo 通常需要在提示詞中提供 3-4 個範例。當提供充足的範例時,模型能更好地理解任務並遵循 end_sequence 以進行受控的文本生成。

負責任的使用與偏見緩解

少樣本學習對預訓練期間習得的關聯性非常敏感,這可能導致自動化歧視。例如,一個情緒分析提示詞可能會因為訓練數據中的固有偏見,而將「I'm a disabled happy person」錯誤地歸類為「Negative"。

為了將傷害風險降至最低,Hugging Face 建議以下最佳實踐:

  • 透明度 (Transparency):告知用戶哪些部分的體驗是由機器學習 (ML) 輸出驅動的。
  • 用戶控制 (User Control):提供退出選項以及讓用戶提供反饋或覆寫模型決策的機制。
  • 監控 (Monitoring):積極追蹤模型失敗的情況,特別是針對可能受到不成比例影響的群體。
  • 人機協作 (Human-in-the-loop):避免在沒有人類監督的情況下使用模型來對用戶做出自動決策,這符合如 GDPR 等要求對自動化決策提供解釋的法規。

Sources

相關

  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch