跳到主要內容
Zubnet AI學習Wiki › In-Context Learning
基礎

In-Context Learning

別名:ICL、上下文學習
大型語言模型從提示詞中的範例或指示學會一項任務,卻完全不更新模型權重的能力。只要給它看幾組輸入與輸出,它便能在新輸入上延續模式,相當於在收到請求時以純文字為模型編寫程式。OpenAI 於 2020 年發表的 GPT-3 論文使這個概念廣為人知,而提示之所以能成為介面,根本原因也在於此。

為什麼重要

上下文學習將一個凍結模型變成通用工具:不必為每項任務訓練專用模型,只要用文字描述任務,幾秒後即可獲得可用答案。它促成了提示詞工程這項技能,也讓沒有 ML 訓練管線的團隊能推出 AI 功能。問題在於,這種學習是租來的,而非真正擁有——它只存在於上下文視窗內,而且每次呼叫都必須再次為這些範例付費。

深度解析

從運作機制來看,上下文學習其實只是推論。提示詞——包括指示、少量示範和新輸入——在一次前向傳播中經由 Transformer,由注意力層完成工作:將新輸入與上下文中的示範比對,再產生符合隱含模式的續文。過程中不會計算梯度,也不會更動權重,儲存在磁碟上的模型在前後兩個時間點逐位元組完全相同。看似學習的現象,其實是模型運用預訓練期間所吸收的模式,判斷以文字寫下的任務通常是什麼樣子。讓這項能力一舉成名的示範,是 OpenAI 介紹 1,750 億參數 GPT-3 的論文「Language Models are Few-Shot Learners」(2020):同一個凍結模型僅憑提示詞文字,便能完成翻譯、問答與算術,表現達到當時較小模型無法企及的水準。

零樣本、單樣本與少樣本

這些術語描述提示詞內含多少項示範。零樣本只有指示,例如「將這則評論分類為正面或負面」;單樣本則加入一個完整範例。Few-Shot Learning(少樣本學習)會加入少數幾個示範——聊天模型通常使用 2–10 個,研究環境中則可能多達數十個。用於判斷情緒的少樣本提示詞,可以列出三則短評並在每則後方附上標籤,再提供第四則評論與「情緒:」——模型會模仿看過的格式補上標籤。格式一致性比新手預期的更重要:相同的分隔符號、相同的標籤詞彙,以及相同的欄位順序。當輸出契約難以說明、卻容易透過範例展示時,少樣本在分類、擷取及格式化任務上的表現通常穩定勝過零樣本。

問題在於,模型對範例的選擇和排列方式出奇敏感。一個已有充分記錄的失敗模式是多數標籤偏誤:若四個範例中有三個標為「正面」,無論實際輸入為何,模型都會偏向正面。近因偏誤,也就是過度重視最後一個範例,以及範例順序效應,也確實存在——僅將相同範例重新排列,就可能讓準確率相差數個百分點。實務人員會以標籤均衡的集合、困難而具代表性的範例取代簡單範例,有時也會重新校準輸出機率。這種脆弱性,是 2020 年後業界大力推動指令微調的部分原因:能遵循純文字指示的模型,需要用範例反覆引導的程度較低。

它究竟為什麼有效

目前仍沒有定論,但有兩項主流理論。第一項來自Mechanistic Interpretability(機制可解釋性):研究人員逆向解析注意力時,發現了稱為歸納頭的迴路,這些迴路會執行一種簡單演算法——在上下文中找出目前模式上一次出現的位置,查看其後接續的內容,再次預測相同內容。這種複製模式的動作幾乎正是少樣本學習所需;而歸納頭往往在訓練進展到上下文學習能力陡升的時間點形成,即使這並非完整解釋,也相當值得注意。第二項理論將 ICL 視為隱式貝氏推論:預訓練文字混合了各種潛在任務與格式,而連貫的提示詞可讓模型推斷自己身處哪一類文件,再據此接續內容。兩種觀點可以並存——一種描述迴路,另一種描述統計——而且都能解釋整潔、自洽的提示詞為何勝過雜亂的提示詞。

無可爭議的是,這項能力高度依賴規模。小型模型的少樣本能力很弱,甚至完全不存在,卻會隨參數量和訓練資料增加而大幅改善,是湧現能力最明確的例子之一。這正是 GPT-3 結果如此震撼的原因:對 10 億參數模型毫無作用的提示詞,放到 1,750 億參數模型上卻能奏效。也因此,上下文學習品質至今仍是區分各代模型的一項低調指標——較大的模型需要較少範例,也更能容忍不夠工整的範例。

任何內容都不會儲存

一個根深蒂固的誤解,是模型會像訓練期間一樣從你的範例中「學習」——一次成功的少樣本對話,會讓模型為下一位使用者提供更好的表現。事實並非如此。推論期間權重保持凍結;表面上的學習只是上下文視窗內的活化狀態,一旦捨棄上下文便立即消失。開始新的對話後,精心挑選的範例不會留下任何痕跡。這就是它與微調的根本差異:微調會以梯度下降改寫權重,並持續影響日後每項請求。如果聊天產品似乎能跨工作階段記住你,那是一項記憶功能——將已儲存的筆記重新注入後續提示詞——而非上下文學習。

這種短暫性也有成本:由於不會儲存任何內容,每項需要相同行為的請求都必須再次帶上範例;若 10 個示範都有充實內容,一段 10-shot 提示詞可能會讓每次呼叫多出數千個 token。提示快取可減輕這項負擔——供應商會以折扣價格重複使用處理過的前綴——但對流量高、範圍窄的任務而言,經過微調的小型模型通常有更好的單位經濟效益。常見的經驗法則是:先以上下文學習製作原型,只有在提示詞成本或錯誤率高得難以接受時,才採用微調。

提示如何成為介面

2020 年以前,要讓語言模型適應一項任務,意味著採用遷移學習:取得預訓練模型、以標記資料微調,再部署成專用模型。GPT-3 的少樣本成果翻轉了這套經濟模式——如果凍結模型能以自然語言編寫程式,一個 API 就能服務所有任務,使用者也能帶來自己的需求。這項逆轉催生提示詞工程這門專業,使系統提示詞成為標準控制介面,並為後來許多實質上是 ICL 變體的技術奠定基礎:思維鏈提示之所以有效,部分原因是它向模型展示完整的推理軌跡;檢索增強生成則相信模型會運用進入上下文的任何文字。較新的「上下文工程」一詞,是相同洞見發展成熟後的版本:上下文視窗是程式設計介面,而上下文學習是執行它的解譯器。

← 所有術語
ESC