引言

近年来,自然语言处理 (NLP) 领域经历了一场范式转变。我们已经从为特定任务训练特定模型,转向利用像 GPT-4 和 Llama 这样的大规模、通用型大语言模型 (LLMs) 。这些模型真正的革命性之处不仅在于其规模,更在于它们仅通过观察少量示例就能学习新任务的能力,且无需更新其内部参数。这种现象被称为上下文学习 (In-Context Learning, ICL)

想象一下,你想教一个模型对电影评论的情感进行分类。在传统的监督学习时代,你需要在数千条带标签的评论上微调模型,通过反向传播更新神经网络的权重。而有了 ICL,过程截然不同。你只需给模型提供一个包含少量示例的提示——“这就电影太棒了! (正面) ”,“我睡着了。 (负面) ”——随后附上你的新查询。模型识别出这种模式后,便能预测新查询的情感。

这种通过类比学习的能力是 ICL 的核心。它将大语言模型转变为通用的问题解决者,能够即时适应新任务。

图 1: 上下文学习示意图。ICL 需要一个提示上下文,其中包含几个以自然语言模板编写的演示示例。将此提示和一个查询作为输入,大语言模型负责进行预测。

如上图 1 所示,其工作流程非常直观。我们使用 \(k\) 个演示示例构建一个“提示上下文”。这些示例与新查询拼接在一起,并输入到 LLM 中。模型在保持其预训练状态 (冻结参数) 的情况下,输出预测结果。

在这篇博文中,我们将剖析一份关于上下文学习的综合综述。我们将探讨如何训练模型以获得这种能力,如何设计提示以最大化性能,这背后的数学机制,以及未来面临的挑战。

上下文学习的全貌

要在 ICL 相关的复杂文献中导航,拥有一张地图会很有帮助。该研究论文将这一领域分为三个主要分支: 模型训练推理分析

  1. 训练: 我们如何预训练或热身模型,使其能够进行上下文学习?
  2. 推理: 一旦我们拥有了一个有能力的模型,我们该如何格式化演示、选择示例以及对输出进行打分,以获得最佳结果?
  3. 分析: 为什么这会奏效?Transformer 内部有什么底层机制允许在不更新权重的情况下进行学习?

图 2: 上下文学习的分类体系。

图 2 提供了这些领域的层级分类体系。我们将利用这一结构来指导我们的深入探索,首先从形式化定义开始,然后深入探讨训练和推理。

定义上下文学习

在研究工程细节之前,让我们先形式化我们的讨论内容。ICL 被定义为一种范式,即语言模型仅通过演示形式的少量示例来学习任务。

在数学上,设 \(x\) 为查询输入,\(Y\) 为一组候选答案。我们希望模型基于上下文集 \(C\) 来预测最佳答案,其中 \(C\) 包含指令和 \(k\) 个示例。

特定候选答案 \(y_j\) 的概率计算如下:

公式 1: 条件概率公式

这里,\(f_{\mathcal{M}}\) 代表预训练语言模型的打分函数。最终预测 \(\hat{y}\) 即为概率最高的候选者:

公式 2: Argmax 预测公式

这里的关键区别在于模型 \(\mathcal{M}\) 的参数没有被更新。学习完全发生在正向传播过程中的上下文窗口内。这使得 ICL 有别于少样本学习 (Few-Shot Learning,传统上意味着参数适应) ,并使其成为提示学习 (Prompt Learning) 的一个子类。

第一阶段: 模型训练

一个常见的误解是,ICL 仅仅是一种提示技术。然而,上下文学习的能力并不总是与生俱来的;它往往是在训练过程中锻造出来的。虽然原生的 LLM 展示了 ICL 能力,但特定的训练策略可以显著提升这种性能。

主要有两个阶段可以培养 ICL 能力: 预训练热身

图 3: 通过预训练和热身两个不同阶段增强 ICL 能力的模型训练方法示意图。

预训练

在 LLM 的初始预训练阶段 (图 3 左侧) ,数据分布起着巨大的作用。如果模型是在文档之间互不相关或纯粹顺序排列的语料库上训练的,它可能无法发展出强大的推理能力。

研究人员发现,“突发性 (burstiness) ”——即相似的项目或主题成群出现——有助于模型学习关注局部上下文。此外,在经过专门重组以突出相关上下文的数据集上继续预训练模型,可以教会模型跨演示进行推理。

热身

“热身”阶段 (图 3 右侧) 充当了原始预训练与下游 ICL 应用之间的桥梁。这通常被称为指令微调 (Instruction Tuning)

在这个阶段,模型在大量格式化为指令和示例的任务上进行微调。例如,一个数据集可能包含一个情感分析任务、一个翻译任务和一个逻辑谜题,所有这些都被转换成统一的提示格式。通过在这些混合任务上进行微调,模型显式地学习了“遵循指令”和“从示例中学习”的元任务

符号微调 (Symbol Tuning) 这样的技术——将自然语言标签替换为任意符号 (例如,将“正面”替换为“Foo”) ——迫使模型仅依赖上下文中定义的关系,而不是其先前的词汇知识,从而有效地磨练其推理技能。

第二阶段: 提示设计 (核心方法)

一旦我们有了一个训练好的模型,重心就转移到了推理上。我们要如何向模型展示“上下文”,这决定了一切。这就是提示设计发挥作用的地方。这不仅仅是写一个好句子;它是一个涉及演示组织和打分函数的系统工程挑战。

演示组织

你提供的示例 (演示) 的选择、排序和格式化会导致性能产生巨大的差异。

1. 演示选择

你应该在提示中放入哪些示例?随机选择是基准线,但很少是最佳的。目标是找到对当前查询最有帮助的示例。

  • 无监督方法: 这些方法基于相似度指标选择示例,无需单独的训练步骤。一种流行的方法是 KATE (基于 \(k\)NN) ,它利用嵌入距离检索语义上与测试查询最接近的训练示例。其他方法使用互信息 (Mutual Information) 或困惑度 (Perplexity) 来寻找模型觉得“令人惊讶”或信息量大的示例。
  • 监督方法: 这涉及专门训练一个“检索器”模型来寻找好的示例。例如, EPR (高效提示检索) 训练一个稠密检索器来选择能最大化正确输出可能性的示例。

下表 1 总结了该领域的关键方法。

表 1: 代表性演示设计方法总结。

2. 演示排序

即使选择了最好的示例,呈现它们的顺序也很重要。这就是所谓的“近因偏差 (Recency Bias) ”,即模型往往更容易受到提示末尾 (靠近查询) 示例的影响。

研究建议根据嵌入距离对示例进行排序 (将相似的示例放在离查询更近的地方) 或根据熵指标排序。一种较新的方法 ICCL 建议采用基于课程的排序: 将演示从简单到复杂排列,以逐步引导模型的推理过程。

打分函数

一旦提示设置好了,我们要如何实际提取预测结果呢?模型输出的是下一个 token 的概率,但我们需要将其映射到特定的答案 (例如,分类标签) 。

主要有三种打分方法,总结在表 3 中:

表 3: 不同打分函数的总结。覆盖率指任务覆盖率。‘效率’和‘稳定性’指标的定性结果分别在表 4 和表 5 中详细说明。

  1. 直接法 (Direct) : 我们计算给定上下文后标签 token (例如“正面”) 的条件概率。我们选择概率最高的标签。这种方法效率高,但要求答案必须位于序列的最末端。
  2. 困惑度 (Perplexity, PPL) : 我们不只是检查下一个 token,而是计算由查询和候选答案组成的整个句子的困惑度 (衡量模型预测序列的好坏程度) 。我们选择使整个句子概率最高的答案。这种方法更稳健,但计算成本高,因为它需要对每个候选答案进行一次单独的正向传播。
  3. 通道法 (Channel) : 这种方法利用贝叶斯定理反转概率。它计算 \(P(x | y)\),实际上是在问: “如果情感是正面的,评论文本是 \(x\) 的可能性有多大?”这种方法通常被称为“噪声通道”方法,有助于缓解训练数据中的不平衡问题 (例如,如果模型不管上下文如何都喜欢预测“正面”这个词) 。

分析: ICL 为何有效?

这份综述中最迷人的部分或许是对 ICL 为何有效的分析。一个静态的数字矩阵是如何进行动态学习的?

图 4: 与 ICL 性能有较强相关性的因素总结,以及解释 ICL 为何有效的不同视角。

影响因素

图 4 强调了决定成功的几个因素。在预训练阶段 , 语料库的多样性是关键。在狭窄领域训练的模型很难泛化。在推理阶段 , “输入-标签映射”至关重要。有趣的是,早期的研究表明模型实际上并不在意标签是否正确 (随机标签的效果几乎和正确标签一样好) ,这意味着模型只是在复制格式。然而,更新、更大的模型已被证明确实能够学习语义关系,如果标签被翻转,性能会下降。

学习机制

两个主要的理论框架试图解释 ICL 的机制:

  1. 归纳头 (Induction Head) 视角: 机械可解释性研究人员在 Transformer 架构中识别出了称为“归纳头”的特定组件。这些头能够复制模式。如果模型在上下文中看到 [A] -> [B],然后再次看到 [A],归纳头会增加 [B] 的概率。随着模型规模的扩大,这些头变得能够进行更抽象的模式匹配。

  2. 梯度下降 (Gradient Descent) 视角: 这是一个深刻的理论见解。研究人员在数学上证明,Transformer 中的注意力机制可以被视为隐式地执行了一步梯度下降 。 当模型关注上下文示例时,它本质上是在计算误差信号并更新其内部状态 (“元参数”) ,这类似于模型在微调期间更新权重的方式。这表明 ICL 不是魔法;它是即时发生的显式训练的近似版本。

应用与超越文本

虽然文本是最常见的媒介,但 ICL 是一种通用范式。综述强调,这种“基于类比的学习”也扩展到了其他模态。

视觉上下文学习

就像我们用文本示例提示 LLM 一样,我们可以用图像提示视觉-语言模型。如图 5 所示,我们可以提供一个图像网格。例如,为了执行前景分割,我们提供成对的“原始图像”和“分割掩码”。当给定一个新的查询图像时,模型会生成相应的掩码。

图 5: 用于视觉上下文学习的纯图像和文本增强提示。

这种能力也在语音合成 (提供几秒钟的音频来克隆声音) 和多模态任务 (交错的文本和图像) 中被观察到。

挑战与未来方向

尽管取得了成功,ICL 并非没有缺陷。综述指出了几个关键的瓶颈:

  • 上下文长度与效率: 你能提供的示例数量受限于模型的上下文窗口。此外,处理长上下文在计算上是昂贵的 (注意力的复杂度为 \(O(n^2)\)) 。未来的工作集中在将上下文“蒸馏”成紧凑的向量以节省空间和计算资源。
  • 敏感性: ICL 可能很脆弱。指令措辞或示例顺序的细微变化可能会颠覆预测结果。实现稳健性是目前研究的一个主要领域。
  • 泛化能力: ICL 难以处理与其预训练数据完全脱节的任务。虽然它适应性强,但它无法从零开始创造新知识。

结论

上下文学习代表了我们与人工智能交互方式的根本性转变。它使我们从僵化的“先训练后测试”流程,转向一种流畅的、对话式的交互风格,模型能够实时适应我们的需求。

通过理解 ICL 的分类体系——从指令微调等训练策略到演示选择等推理技术——我们可以释放这些模型的全部潜力。与梯度下降和贝叶斯推理的理论联系表明,我们才刚刚开始理解这些大模型实际上是如何“思考”的。

对于进入这一领域的学生和研究人员来说,信息很明确: 模型不仅仅是一个静态的文本数据库;它是一个动态引擎,能够从你在上下文中留下的面包屑 (线索) 中学习。掌握撒下这些面包屑的艺术,是掌握现代 NLP 的关键。