In-Context Learning/zh
| Article | |
|---|---|
| Topic area | Large Language Models |
| Prerequisites | Transformer, Large Language Model, Attention Mechanism |
概述
上下文學習(ICL)是預訓練大型語言模型的一種能力,它通過在提示中放入少量輸入-輸出示例進行條件化,在推理時執行新任務,無需對其參數進行任何更新。模型將這些示例當作普通詞元讀取,並生成以相同格式解決保留查詢的補全。ICL 由 GPT-3 論文推廣,該論文表明,將自回歸transformer擴展到數千億參數後,這種能力會陡然湧現,使單個凍結的模型成為通用的少樣本學習器。[1] 由於在 ICL 期間沒有梯度流動,它在操作上不同於微調和經典的元學習:唯一的適應通道就是前向傳播。
ICL 之所以重要,是因為它改變了下游系統的構建方式。從業者不再為每個任務訓練一個模型,而是部署一個基礎模型,並通過編寫提示來引導其行為。這一轉變是現代提示工程、檢索增強生成以及使用工具的智能體的基礎,並支撐着大多數前沿 LLM 的生產部署。
機制與直覺
典型的 ICL 提示由三部分組成:可選的自然語言指令、$ k $ 個形如(輸入,輸出)的演示序列,以及一個最終的查詢輸入,模型必須為其生成輸出。標準命名遵循演示的數量:$ k=0 $ 為零樣本(zero-shot),$ k=1 $ 為單樣本(one-shot),$ k>1 $ 為少樣本(few-shot)。模型從未看到獨立的"訓練"信號;它只是在給定提示的條件下續寫最可能的序列。
直觀上,演示同時扮演兩個角色。它們通過展示輸入分布、輸出空間和標籤格式來指定任務,並提供模型可用於模式匹配的具體範例。經驗上,令人意外的是,性能提升中很少來自於實際輸入-標籤配對的正確性:打亂標籤往往只會適度降低準確率,而破壞輸入分布或標籤空間則會嚴重損害性能。[2] 這表明 ICL 主要激活了預訓練模型中已潛在的能力,而非從提示中學習新能力。
形式化
設 $ p_\theta $ 表示參數為 $ \theta $ 的凍結自回歸語言模型。給定一個提示上下文
$ {\displaystyle C_k = (x_1, y_1, x_2, y_2, \ldots, x_k, y_k, x_{\text{query}})} $
模型按以下方式預測答案
$ {\displaystyle \hat{y} = \arg\max_y p_\theta(y \mid C_k).} $
條件分布 $ p_\theta(\cdot \mid C_k) $ 完全通過在拼接的詞元序列上運行 Transformer 的前向傳播來計算;$ \theta $ 保持不變。所謂的"學習"完全表現為上下文和模型預訓練權重的函數。
一個有用的視角是將 ICL 視為隱式貝葉斯推斷:模型的行為就像它對由預訓練誘導的潛在任務持有一個先驗,而演示會銳化它關於正在請求哪個任務的後驗。[3] 在這一視角下,即使模型從未顯式存儲這些演示,它們仍然有效;它們更新的是後驗,而不是參數。
推理行為
ICL 在推理時具有幾個獨特的特徵,使其有別於其他適應方法。
- 無狀態:每次新查詢都是獨立的前向傳播;模型不會發生持久變化。兩個並行用戶可以使用同一模型搭配完全不同的 ICL 提示。
- 計算量隨上下文長度增長:由於自注意力在序列長度上是二次的,將 $ k $ 翻倍會使推理成本(在 prefill 階段)大致按二次方增長,而在解碼時則線性增長。KV 緩存和共享前綴技巧可在重複使用同一組演示時降低成本。
- 順序敏感:性能會隨演示順序顯著波動,尤其當模型存在近因偏差時。選擇與排序策略(例如基於檢索、按與查詢的相似度排序)是實踐中的活躍方向。
- 格式敏感:分隔符的選擇、標籤的措辭以及空白字符都可能使準確率變動數個百分點。ICL 在微調通常不會出錯的方面表現脆弱。
變體
若干常見變體擴展了基本方案。
- 零樣本提示
- 沒有演示,僅有指令。現代指令微調模型在零樣本下的表現通常幾乎與少樣本一樣好,因為指令微調已經將格式內化。
- 少樣本提示
- 含 $ k $ 個演示的標準 ICL 設置。由於上下文長度限制和收益遞減,$ k $ 通常較小(4-32)。
- 思維鏈(CoT)
- 演示包含中間推理步驟,而不僅是最終答案。CoT 大幅改善多步算術、符號推理和常識推理,目前已是分析性任務的默認做法。[4]
- 檢索增強 ICL
- 演示按查詢從更大的語料庫中動態選擇,通常使用嵌入相似度。這將 ICL 與檢索增強生成結合起來。
- 多樣本(many-shot)ICL
- 在百萬詞元級上下文窗口下,提示可攜帶數百乃至數千個演示,在窄任務上有時接近微調的質量。
- 代碼與工具 ICL
- 演示展示如何調用工具、編寫代碼或遵循結構化輸出模式;模型從這些示例中學習協議。
理論視角
為什麼一個凍結的 Transformer 在其前向傳播中能表現出類似學習的行為,是一個活躍的研究問題,目前已湧現出多種互補的解釋。
歸納頭(induction-head)解釋識別出特定的注意力頭電路,這些電路在經過充分的預訓練後會實現"回看,然後帶偏移地複製"的模式。這些頭能夠補全 $ [A][B] \ldots [A] \to [B] $ 序列,並且與訓練過程中 ICL 的湧現高度相關。[5]
隱式優化器解釋認為,在某些假設下,transformer在 ICL 輸入上的前向傳播可以在由演示定義的隱式線性或核回歸目標上實現梯度下降。構造性證明表明,transformer 可在單次前向傳播中模擬一次或多次梯度步驟,為上下文回歸提供了機制性解釋。[6]
貝葉斯解釋將 ICL 視為對預訓練分布中編碼的潛在任務的後驗推斷,在沒有顯式元訓練循環的情況下復現類似元學習的行為。這三種視角並不互斥:歸納頭可以實現隱式梯度步驟或貝葉斯更新所需的查找。
與微調和元學習的比較
ICL 用提示設計換取參數更新。與微調或參數高效微調(如 LoRA)相比,ICL 幾乎沒有配置成本,不需要數據流水線,也不會產生每個任務的工件,但在數據豐富的任務上其準確率上限通常較低,且每次推理的計算成本更高。微調將適應一次性攤銷到權重中;而 ICL 在每次調用時都要付出代價。
與經典元學習(如 MAML)相比,ICL 是免費湧現的元學習:元訓練目標只是對多樣化語料的標準下一詞元預測,而內循環是一次前向傳播而非顯式的梯度步驟。因此 ICL 訓練成本低得多,但更難控制或分析。
在實踐中,混合方法十分常見:先對一個指令微調模型在廣泛的任務格式上進行微調,再通過 ICL 按任務進行引導。檢索式流水線將 ICL 與動態示例庫結合,使其與非參數化學習之間的界限趨於模糊。
局限性
ICL 繼承了底層模型的局限,並增加了一些自身的局限。性能在超過某個任務特定的演示數量後會趨於平穩甚至下降;長上下文會帶來二次方的注意力成本;行為對演示的選擇、順序和格式都很敏感。由於參數不會變化,ICL 無法可靠地向模型教授未在預訓練中體現的真正全新的事實內容;演示只能引導已有的能力。魯棒性研究表明,當任務與演示分布稍有偏離時,ICL 的準確率往往只是覆蓋在幻覺上的一層薄殼。
此外還存在安全相關的失效模式。對抗性演示可被用於引出不期望的行為(提示注入),而使 ICL 有用的那種靈活性,也使其難以加以約束。生產系統通常將 ICL 與輸出驗證、檢索式接地以及偏好微調的基礎模型相結合,以限制這些風險。
參考文獻
- ↑ Brown et al., "Language Models are Few-Shot Learners," 2020. Template:Cite arxiv
- ↑ Min et al., "Rethinking the Role of Demonstrations," 2022. Template:Cite arxiv
- ↑ Xie et al., "An Explanation of In-context Learning as Implicit Bayesian Inference," 2021. Template:Cite arxiv
- ↑ Wei et al., "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models," 2022. Template:Cite arxiv
- ↑ Olsson et al., "In-context Learning and Induction Heads," 2022. Template:Cite arxiv
- ↑ von Oswald et al., "Transformers Learn In-Context by Gradient Descent," 2022. Template:Cite arxiv