是什么
上下文学习(in-context learning)指大语言模型的一种能力:只凭提示词里的指令和少量示例就能完成一项新任务,而不需要更新自己的权重[1]。整个过程中没有任何训练发生,参数一个也不变。模型读到一段提示——任务说明、若干已经做好的示例,以及待处理的新输入——然后给出答案。「上下文」两个字是字面意思:它从示例里得到的东西只存在于这一次输入之中,下一条请求又会从头开始。也正因为这一点,一个训练好的模型可以被用在它从未被训练过的任务上,只要那个任务能用文字说清楚。
怎么工作
命名并系统研究这一现象的 GPT-3 论文比较了三种设置:零样本(zero-shot),提示里只给指令;单样本(one-shot),给一个示例;少样本(few-shot),给若干个示例[1]。把这三者放在一起比,是为了看清示例数量本身带来多大差别[1]。以一个把短评分成正面或负面的任务为例:零样本的提示只说明要做什么;少样本的提示还会先列出几条评论,每条后面都标好类别,最后给出那条没标类别的评论,模型顺着这个格式把类别续写出来。因为这些示例和问题一起构成模型的输入,它们起的作用是示范想要的输出样式,而不是被拟合的训练数据。示例只被读一次,随这一次输入一起用掉,不会留在模型里。
从哪来
这个词出自 2020 年 5 月的 GPT-3 论文《Language Models are Few-Shot Learners》[1]。论文训练了 8 个不同规模的模型,参数量从 1.25 亿到 1750 亿,训练都用了总共 3000 亿个 token[1]。GPT-3 本身有 1750 亿参数;论文发现,少样本表现随模型规模增大而显著提升[1]。这也是这个方法受到关注的原因之一:同一段提示,小模型做不好,模型变大之后就变得可用。
带来了什么变化
在这之前,让模型适配一项任务,通常意味着收集数据集再做微调。上下文学习提供了另一条路:用户写提示词,提示词里可以放几个供模型在上下文中参考的示例[2]。设计这类输入结构的做法有专门的名字,叫提示工程(prompt engineering)[2]。工作的单位于是从「一个数据集」变成了「一段可以反复修改的文本」。
局限
结果对提示高度敏感:措辞、格式以及示例的排列顺序都会影响输出[2]。另外,所有示例都必须装进模型的上下文窗口(context window),也就是模型一次能读入的 token 数量上限;GPT-3 的这个上限是 2048 个 token,提示、示例和待处理的输入都要放在这个额度里,因此单次能示范多少内容受到限制[1][2]。在这些限制之内,适配一项任务不需要任何训练过程,改动只发生在文字上。
20201
-
2020 年 5 月,OpenAI 发表 GPT-3 论文。这个拥有 1750 亿参数的语言模型,只需在输入文本中给出少量示例,就能完成新任务,无需额外训练。
注释与来源
- Language Models are Few-Shot Learnershttps://arxiv.org/abs/2005.14165
- Prompt engineeringhttps://en.wikipedia.org/wiki/Prompt_engineering
引用本页: 上下文学习. TellWorld, https://www.tellworld.net/zh/learn/in-context-learning. 更新于 2026-11-08