上下文学习:prompt 里的"免费学习
本文基于模型知识整理(生成时未联网核对),ICL 理论建议对照 Dai et al. 2023 与 von Oswald et al. 2023 复核。
一句话定义
上下文学习(ICL)是大模型的"无梯度学习":把几个示例写进 prompt,模型就能照做新任务——没有任何参数更新,"学习"发生在前向传播的激活里。GPT-3 的发现(kp-019)、机制候选是"隐式贝叶斯推断"或"注意力实现的隐式梯度下降"——它是大模型最神秘的涌现能力之一。
为什么重要
ICL 把 NLP 从"一任务一微调"(kp-018 BERT 范式)改写为"一个模型+prompt"——通用接口的革命。同时它是理解大模型行为的核心谜题:模型在上下文中"学到"的到底是什么?答案关系着 prompt 工程、上下文排列敏感度、以及"模型是否会从你的对话中学习"的用户误解澄清。
前置知识
kp-002(注意力)、kp-015(涌现)、kp-019(GPT-3 的 ICL 发现)。
核心概念
- 现象:prompt 格式"任务描述+示例₁+示例₂+…+新输入"→ 模型按示例隐含的模式完成新输入;示例数量/质量/顺序都影响效果(且顺序敏感性强——同内容不同排列性能波动大)。
- 两类"学习"的严格区分:
- 参数更新学习(训练):改变权重(kp-016 微调)——持久、需要数据与算力; - ICL(激活内学习):权重不动,"学习"存在于本次前向的计算状态——上下文结束即"忘记"。 用户问"你会记住这次对话吗"——不会(除非开发者把数据写回训练);这是 ICL 科普的最高频澄清。
- 机制候选一:隐式贝叶斯(Xie 2022):预训练时模型见过无数"概念+实例"的文档结构(主题-句模式)——ICL 是在上下文中做"概念定位"的贝叶斯推断:示例帮助定位"该用哪个隐含概念/任务分布",再按该分布生成。
- 机制候选二:隐式梯度下降(von Oswald 2023):构造特殊的线性注意力层可以精确实现梯度下降一步的计算——即"transformer 的前向可以内嵌 GD 算法";实证发现训练后的模型确实涌现出此类电路(induction head 的推广,kp-003)。
- 涌现与规模:ICL 能力在 GPT-2 小、GPT-3 大时跃升(kp-019)——小模型 prompt 里放例子反而降低性能(模仿示例的表面而不会抽取任务);大规模后 ICL 出现——kp-015 涌现之争的主案例。
- 实践杠杆:示例的选择(与测试样本相似的高质量示例)、顺序(近因效应)、格式一致性、示例数量(边际收益递减 3~5 个常够)——"prompt 工程"的 ICL 理论面。
原理与机制
隐式梯度下降的构造思路(von Oswald 的漂亮实验):先"反向设计"一个线性自注意力层——使其前向恰好实现"对上下文示例做一步 GD"(在某种回归任务族上);训练带此类层的小模型做 ICL 任务后,解析发现学到的权重与理论构造高度一致——"transformer 可以内嵌 GD"有了构造+实证的双重证据(完整模型的机制是否如此仍是开放问题)。
贝叶斯视角为什么互补:隐式 GD 解释"如何算"(注意力电路做更新),隐式贝叶斯解释"在算什么"(对隐含任务概念做后验推断)——两者在不同任务族/模型上各有实证;可能为混合真身(kp-031 的机制研究前沿)。
为什么示例顺序敏感:注意力的 recency bias(近因增强,kp-014 讨论的窗口衰减)+上下文作为"条件分布"的顺序依赖——排列敏感暴露了 ICL 并非"真正的学习"(真正学习的算法对示例顺序更鲁棒)——这一"缺陷"反而是诊断 ICL 机制的探针。
图示
prompt = 指令 + 示例₁…ₖ + 新输入 → 预测 (无梯度!)
区分: ICL(激活内,一次性) vs 微调(权重,持久)
机制候选:
A 隐式贝叶斯: 示例→定位隐含概念→按概念生成
B 隐式GD: 注意力电路=一步梯度下降 (构造+实证)
涌现: 小模型ICL失效→大模型跃升 (kp-019)
杠杆: 示例质量/顺序/数量/格式 (prompt工程的理论面)
澄清: 对话不会被"记住" (无参数更新)
直观类比
ICL 像"临场模仿":给他看三份别人填好的同类表格(示例),他就照着表格的样式填新表——没有上课(无梯度),只是"照猫画虎"的即时对齐;示例排版一乱(顺序变),画虎就画歪(顺序敏感)。真学习(微调)则是"上完课长本事"——回房间还能用。
实例或案例
- GPT-3 的 few-shot 曲线:示例数增加 → 性能上升(各任务)——ICL 的原始定量证据(kp-019)。
- 指示向量头(induction head):两层电路"找上文 pattern 然后复制"——ICL 电路的已解析单元(kp-003)。
- prompt 排列 A/B 测试:同一组示例换顺序,答案正确率波动 ±10% 量级——ICL 脆弱性的日常展示。
常见误区
- 误区一:"模型从我的对话中持续学习了"。除非厂商用你的数据再训练,ICL 的"学习"只活在当前上下文——新会话全忘(隐私澄清的重要一课)。
- 误区二:"ICL 的例子越多越好"。边际递减+长上下文成本(kp-023)+干扰噪声;3~5 个精选示例常是甜点。
- 误区三:"ICL=少样本学习的同义词"。少样本学习通常含梯度更新;ICL 特指无更新的前向内学习——术语纪律。
与其他知识点的关系
自测题
- ICL 与微调的本质区别?
答:ICL 在前向激活内"学习"(权重不变、上下文结束即忘);微调更新权重(持久)——一个一次性、一个持久化。
- 两个 ICL 机制候选分别是什么?各自解释什么?
答:隐式贝叶斯(示例定位隐含任务概念——解释内容侧);隐式梯度下降(注意力电路实现 GD 步——解释计算侧);可能混合。
- 为什么"模型会记住我们的对话"是误解?
答:ICL 无参数更新,上下文结束状态即丢;持久记忆需开发者显式存储并再次注入上下文(或写回训练)。
延伸阅读
- Brown 等, "Language Models are Few-Shot Learners"(2020,ICL 现象原文)。
- Xie 等, "An Explanation of In-context Learning as Implicit Bayesian Inference"(2022)。
- von Oswald 等, "Transformers Learn In-Context by Gradient Descent"(2023)。