导语
大模型(如 GPT3、Instruction GPT、ChatGPT)的崛起,让人机交互的方式发生了巨大变化。如何通过“提示”让模型输出更准确的结果,成为学术界与工业界的热点。其中,In-Context Learning(上下文学习) 凭借“无需微调、直接预测”的特性,迅速成为 NLP 领域的前沿技术。本文基于一篇代表性论文《Rethinking the Role of Demonstrations: What Makes In-Context Learning Work?》进行解析,帮助你理清 ICL 的核心机制与影响因素。
什么是 In-Context Learning

In-Context Learning(ICL)的关键思想是 从类比中学习。上图展示了一个典型的 ICL 决策流程:
- 首先,你需要准备一些示例,它们被组织成演示上下文(Demonstrations),通常使用自然语言模板编写。
- 然后,将查询的问题(即你需要预测标签的输入)与这些演示拼接在一起,形成带提示的输入。
- 最后,将拼接后的输入直接送入语言模型进行预测,不需要任何参数更新。
注意:与传统的监督学习(需要反向传播更新模型参数)不同,ICL 不需要梯度更新,它直接利用预训练语言模型的已有能力进行推理。这也是它与 Prompt Learning、传统 Demonstration Learning 的关键区别——ICL 不需要下游的 P-tuning 或 Fine-tuning。
小提示:ICL 的核心在于“演示”(Demonstrations)的设计。演示的格式、顺序、内容都会显著影响模型的表现。
论文核心研究:Rethinking the Role of Demonstrations
这篇论文通过大量实验,探究了演示的哪些方面影响了 ICL 的最终效果。下面我们逐一拆解实验设置和关键结论。
实验设置
作者使用了 12 个模型 进行实验,包括 6 种仅解码器的密集语言模型(Dense LM),模型大小从 774M 到 175B 不等。下表展示了所用模型:

每个模型采用两种应用方式:
- Direct(直接):直接计算给定输入
x条件下,标签y的概率P(y|x)。 - Channel(通道):反过来,计算给定标签
y条件下输入x的概率,即P(x,y)∝P(x|y)。

实验覆盖了多种任务,包括情感分析、段落检测、自然语言推理、仇恨言语检测、问答、句子补全等。数据集概览如下:

结论 1:ICL 中 Ground Truth 信息无关紧要
作者设置了三种对比条件:
- No Demos:零样本预测,无任何演示。
- Demos w gold:使用 K 个标注正确的示例作为演示。
- Demos w random labels:同样选取 K 个示例,但将示例的标签随机替换为标签集中的任意值(非真实标签)。

实验结果令人意外:将黄金标签换成随机标签,模型性能仅轻微下降(0-5% 绝对范围)。在多选任务中平均下降 1.7%,在分类任务中平均下降 2.6%。这表明 地面真实标签与输入的正确配对并不是 ICL 性能提升的必要条件——这与传统监督学习截然不同。
为了进一步验证,作者在三个维度上做了消融实验:
- 正确演示占总的百分比(下图 1)
- 演示样本数量 K(下图 2)
- 演示模板样式(下图 3)



结论一致:演示是否正确对性能影响不大。
小提示:既然标签正确性不重要,那什么才是真正重要的?请看结论 2。
结论 2:ICL 的性能收益主要来自独立规范的输入空间和标签空间,以及正确一致的演示格式
作者从四个维度分析了 ICL 的效果增益来源:
- The input-label mapping:每个输入
xi是否与正确的标签yi配对。 - The distribution of the input text:输入文本
x1...xk的分布是否一致(是否来自相同数据分布)。 - The label space:标签
y1...yk所覆盖的标签空间(是否保持相同语义类别)。 - The format:输入-标签配对的展示格式(如“输入:... 标签:...”)。

输入文本分布实验
下图中,青绿色柱子表示用从外部语料中随机采样的句子替换输入句子的设置(即输入文本分布不一致)。可以看到模型表现明显下降。这表明:演示中的分布内输入(In-Distribution)极大地有助于提高性能。原因可能是:当输入文本与训练数据分布一致时,模型更容易将推理任务回归到语言建模的本质。

标签空间实验
下图中,青绿色柱子表示用随机英语词汇替代演示样本中的标签。模型表现明显下降。这表明:标签空间的一致性显著有助于提高性能。即演示中的标签应该是同一类别体系内的(例如都是正面/负面,而不是随机单词)。

演示格式实验
下图中,分别用 labels only(深紫,仅显示标签)和 no labels(深绿,不显示标签)来测试。可以看到模型性能比前面两个 OOD 设置进一步下降。这表明:ICL 中保持输入-标签对的格式是关键。缺少格式或改变格式都会导致效果大幅下滑。

有意思的讨论:模型是否在 Test 阶段学习到了知识?
作者提出了一个值得思考的问题:模型在测试时真的在“学习”吗?
如果对“学习”进行严格定义——学习是指从训练数据中获取输入-标签对关系——那么模型在测试时并没有学习新任务。但如果我们把“学习”更宽泛地理解为:适应特定的输入分布、标签分布和演示格式,最终更准确地做出预测,那么模型确实从演示中“学习”了。
实验证明,模型利用了演示的各个方面(输入分布、标签空间、格式)来实现性能提升。这解释了为什么 ICL 即使在不更新参数的情况下,也能取得显著效果。
常见问题与解答
- Q:ICL 与 Fine-tuning 相比,优势是什么?
A:ICL 不需要任何参数更新,节省了计算资源和时间,同时保留了大模型的泛化能力。而 Fine-tuning 可能引入过拟合或丧失部分泛化性。 - Q:演示中的标签如果全错,还能有效果吗?
A:根据结论1,即使标签随机,性能也只下降几个百分点。但注意,这要求演示的输入分布和标签空间保持一致,并且格式正确。 - Q:演示样本数量 K 越大越好吗?
A:不一定。实验显示,K 增大能带来一定提升,但收益会饱和。更重要的是保持输入分布一致和正确的格式。 - Q:如何为实际任务设计高效的演示?
A:优先保证:① 输入文本来自目标任务的真实分布;② 标签使用任务本身的类别标签;③ 每对演示都保持统一的格式(如“输入:... 输出:...”)。标签是否完全正确反而不那么关键。
结语
本文通过剖析一篇代表性论文,揭示了 In-Context Learning 工作中真正重要的因素:输入分布、标签空间和演示格式,而非标签的正确性。随着大模型规模的持续增长,Fine-tuning 阶段的“黑盒化”问题日益突出,而 ICL 这种无需微调、即插即用的方式,既能节省资源又能维持甚至提升效果,将在大模型应用中扮演越来越重要的角色。希望这篇教程能帮助你更好地理解和使用 ICL 技术。
编辑:黄飞
