**一句话结论:上下文学习(In-Context Learning,ICL)就是把几个示例直接写进提示词,让模型在一次前向传播里「临时学会」一个新任务——权重一个都没动。**它不是玄学:主流解释要么把 ICL 看作模型在推断「这些示例背后是哪个任务」(隐式贝叶斯推断),要么把注意力机制看作一种隐式的梯度下降(隐式微调)。而对这个现象最反直觉的实验发现,直接改写了写提示词的正确姿势:示例的格式和分布比标签本身对不对更重要。
现象:2020 年,GPT-3 把「不训练」变成了能力
在 GPT-3 之前,让模型干新任务的标准流程是:收集标注数据 → 微调 → 部署。2020 年 5 月 OpenAI 的论文《Language Models are Few-Shot Learners》(arXiv:2005.14165)换了个问法:如果完全不更新参数呢?
他们训练了 1750 亿参数的自回归语言模型 GPT-3,在翻译、问答、算术等任务上不做任何梯度更新,只在输入文本里给几个示例(few-shot),结果部分任务上竟能与当时微调过的最优方法竞争。论文把提示词里的示例数量分成三档,这个分法沿用至今:
| 模式 | 提示词里有什么 | 代价 |
|---|---|---|
| Zero-shot | 只有一句任务描述 | 最省 token,效果最差 |
| One-shot | 1 个示例 | 折中 |
| Few-shot | 若干个示例(典型 10~100 个) | 吃上下文窗口,效果最好 |
| (对比)Fine-tuning | 标注数据集 + 梯度更新 | 要训练管线,但任务性能上限最高 |
两个关键观察值得记住:示例越多性能总体越好,但边际收益递减;模型规模是 ICL 的放大器——小模型上这个现象几乎不存在。这也是「规模涌现能力」争论的代表案例之一。
反直觉实验:把标签全改成错的,性能几乎不掉
2022 年,Min 等人的《Rethinking the Role of Demonstrations》(arXiv:2202.12837,EMNLP 2022)做了一组刺瞎眼的实验:把提示里示例的标签随机替换成错的,在 12 个分类和多选任务上,性能几乎不下降。
这说明什么?说明模型并没有像我们直觉里那样「看着正确答案学映射」。真正起作用的是另外三样东西(论文原话):
- 标签空间(label space):输出有哪些类别、长什么样;
- 输入文本的分布(distribution of the input text):示例的输入长什么样、来自什么领域;
- 序列的整体格式(the overall format of the sequence):「输入 → 分隔 → 输出」这个结构本身。
换句话说,示例更像是把任务的「界面规格说明书」讲给模型听,而不是在教它「输入 A 对应输出 B」这个知识。这直接推出一条工程铁律:写 few-shot 提示,先花力气把格式写对,标签正确性反而次要(当然,在生成类任务和复杂推理任务上,正确标签依然有额外收益,这项研究的结论域是分类与多选)。
两种主流解释:模型在 ICL 时到底在干什么
解释一:隐式贝叶斯推断(Stanford,ICLR 2022)
Xie 等人(arXiv:2111.02080)的出发点是预训练数据本身:一篇文档内部有长程一致性——术语、风格、任务模式会贯穿全文。语言模型为了预测下一篇段,必须隐式推断「这篇文档背后的潜在概念」。
ICL 就是把这个预训练时练出来的能力重用了一遍:提示里的几个示例共享同一个「任务概念」,模型在内部的表示里对「这是什么任务」做贝叶斯推断,再用推断出的概念去生成答案。
这个理论还顺手解释了几个实测现象:模型对示例顺序敏感;有时零样本反而比少样本好——如果示例属于错误的「任务概念」,后验反而被带偏。
解释二:隐式微调(清华 + 微软,ACL 2023 Findings)
Dai 等人(arXiv:2212.10559)从机制上证明了一件事:Transformer 的注意力与梯度下降存在对偶形式(attention has a dual form of gradient descent)。在这个视角下,ICL 等价于一种隐式微调:示例信息通过注意力机制产生「元梯度」,临时修整了前向计算的行为——只是这些「梯度」从没写回权重。
这个解释把 ICL 和微调放到了同一根数轴上:都是「用示例信息调整模型行为」,差别只在于是临时的(提示词)还是持久的(权重)。实验上 ICL 与显式微调在多个角度表现相似,也支持了这个类比。
flowchart LR
E[提示中的示例] --> B1|解释一|C1[隐式贝叶斯推断<br>推断示例背后共享的任务概念]
E --> B2|解释二|C2[隐式微调<br>注意力 ≡ 梯度下降的元梯度]
C1 --> O[一次前向传播,输出答案<br>权重不变]
C2 --> O
两种解释并不互斥——一个从「模型见过什么数据」出发,一个从「注意力算的是什么」出发,可能描述的是同一个机制的两面。学界目前没有定论(截至 2026-10)。
落到实用:写提示词的四条推论
把上面的研究翻译成日常写提示词的守则:
- 格式是第一优先级:统一的输入-输出结构、清晰的分隔符、稳定的标签措辞——这些「界面细节」对性能的贡献常常超过示例的「答案正确性」(Min et al.)。
- 示例要覆盖标签空间和真实输入分布:分类任务里每个类别都出现,输入文本要像线上真实的脏数据,而不是教科书式的干净样本。
- 3~5 个高质量示例是常见甜点位:收益递减,示例太多吃上下文、拖成本(token 按量计费,每个示例都在花钱)。
- 示例顺序值得测:对顺序敏感是理论研究明确预言、实验反复观察到的现象——别假设随便排排就行,把最强的示例放近输出位置是常见的经验做法。
另外两条边界:ICL 的「学习」随上下文消失而消失,不会沉淀成能力——要持久就得走微调(见本站 《一篇读懂 LoRA》);上下文窗口本身有长度与「中间遗忘」的代价(见本站 《上下文窗口不是越长越好》)。还有,对新一代推理模型,官方指南已普遍建议少用手写的分步示例、把思考交给模型——这是提示工程正在发生的范式迁移,本站方法论文会单独展开。
小结
上下文学习是大模型时代最优雅的能力:它把「适应新任务」从一趟训练工程,压缩成了一段提示词。研究的结论也很干脆——模型不是在抄示例的答案,而是在读示例的格式、分布与任务概念。下次写 few-shot 提示的时候,别再纠结那个标签写得对不对,先把界面规格写清楚。
参考资料
- Brown et al., Language Models are Few-Shot Learners(arXiv:2005.14165)(2020-05,GPT-3 论文,ICL 现象的奠基之作)
- Min et al., Rethinking the Role of Demonstrations: What Makes In-Context Learning Work?(arXiv:2202.12837)(2022-02,EMNLP 2022,「随机标签不掉点」实验)
- Xie et al., An Explanation of In-context Learning as Implicit Bayesian Inference(arXiv:2111.02080)(2021-11,ICLR 2022,隐式贝叶斯解释)
- Dai et al., Why Can GPT Learn In-Context?(arXiv:2212.10559)(2022-12,ACL 2023 Findings,注意力与梯度下降的对偶形式)
读者留言
COMMENTS 暂无还没有留言,来说第一句?