🎯 什麼情境該想到我
當你「要在 prompt 裡放範例讓模型照著做,卻不知道該挑哪幾個、放幾個、怎麼排,換個範例結果就不一樣」的時候。
⚙️ 怎麼用(步驟 / 公式)
上下文學習(ICL):在 prompt 裡放任務說明和幾個示範,模型從上下文學到任務的規則,不需要額外訓練。
1. 先選形式
| 形式 | 做法 | 優點 | 代價 |
|---|---|---|---|
| 零樣本 | 只給任務說明 | 泛化最廣 | 效果完全看模型本身能力 |
| 單樣本 | 給 1 個示範 | 像「舉一反三」 | 效果強烈依賴那一個示範夠不夠代表性 |
| 少樣本 | 給幾個到十幾個 | 特定任務明顯變好 | 示範越多推理越貴;示範的代表性和多樣性決定效果 |
2. 挑示範:相似性 vs 多樣性
兩個原則:相似性(跟眼前問題越像越好)、多樣性(涵蓋不同面向,讓模型從多角度理解任務)。書整理三種做法:
| 做法 | 代表 | 怎麼挑 | 缺點 |
|---|---|---|---|
| 直接檢索 | KATE | 用編碼器把問題和候選示範(拿掉標籤)轉成向量,取 cosine 最高的前 K 個 | 不管多樣性,示範容易同質化 |
| 聚類檢索 | Self-Prompting | 先用 K-Means 把候選分成 K 群,每群挑一個跟問題最像的 | 有些群跟問題根本不像,相似性不夠 |
| 迭代檢索 | RetICL | 每挑一個,就依「問題+已挑的示範」更新狀態再挑下一個 | 計算比較複雜 |
書的判斷:前兩種常在相似性與多樣性之間顧此失彼;迭代檢索兼顧兩者,複雜任務上較好。
實務起點(我的整理):先用直接檢索,發現示範都長得一樣、模型只會照抄某一類時,再換聚類或迭代。
3. 示範本身的五個坑
- 格式:簡單分類只要「輸入 → 輸出」;算術、程式這類推理任務,示範要寫出中間推理步驟(CoT 形式),只給答案不夠(見 工具-思維鏈的變體怎麼選)。
- 標籤要對:標錯的示範會讓模型學到錯的對應。★ 越大的模型對錯誤標籤越敏感,小模型反而不太受影響。
- 數量:多放通常會變好,但邊際效益遞減;生成任務比分類任務更吃示範數量。
- 順序:不同順序表現會顯著不同,而且最佳順序依模型而定:對 A 模型有效的順序,換到 B 模型不一定有效,也跟資料集特性有關。所以換模型就要重新驗證順序。
- 任務說明:寫清楚的任務說明本身就能提升 ICL。
4. ICL 為什麼有效、什麼時候沒用
- 書給的解釋(Xie et al. 2022,仍是開放研究問題):把 ICL 看成隱式貝葉斯推理。模型在預訓練時學到很多潛在「概念」,示範的作用是把模型錨定到其中相關的概念上。
- 推論:預訓練裡沒什麼相關資料的垂直領域,光靠 prompt 做不到領域適配(書在第 4 章開頭也這樣說),這時要考慮微調或 RAG。
- 模型要夠大:ICL 是規模夠大才出現的能力,書說通常要億級參數以上,舉出最小有 ICL 能力的是 Qwen2-0.5B。
- 預訓練資料跨領域、任務多樣、含罕見類別與「突發性」分佈時,ICL 比較穩。即使單一領域語料跟目標任務高度相關,也不保證 ICL 最好。
5. 檢查清單
- 示範的標籤都正確(大模型會被錯標帶偏)
- 示範之間夠多樣,不是同一類的重複
- 推理型任務的示範有寫中間步驟
- 換模型時重測示範順序
- 示範用分隔符和輸入清楚隔開:書的消融實驗中拿掉分隔符後,模型把示範也當成待分類的句子
🧪 我實際套用的紀錄
- (尚無)
⚠️ 注意 / 什麼時候不適用
- 書對這些因素幾乎沒給實驗數字,都是方向性結論;實際影響要在自己的評估集上量(見 工具-AI系統評估)。
- 示範很長時成本會疊上去,要跟效益一起算。書提到 LLMLingua 壓縮 prompt 可壓到原長的 1/20、幾乎不掉效能,不過這是論文宣稱的數字。
- 做過指令微調的對話模型零樣本就很強,未必需要示範;先試零樣本當基準線。
🔗 相關工具
- 大模型基礎 —— 3.2 節上下文學習
- 工具-提示工程 —— prompt 寫法的整體原則;這張只管示範怎麼挑怎麼排
- 工具-思維鏈的變體怎麼選 —— 推理任務的示範要用思維鏈形式
- 稀疏與密集檢索 —— 直接檢索示範用的就是密集檢索那一套