Oh My Awesome AI AI 世界地图
★★★★★ 预训练与数据

Language Models are Few-Shot Learners (GPT-3)

Brown et al. (OpenAI) · NeurIPS 2020 · 2020

阅读原文

175B 参数的自回归语言模型在 zero-shot/few-shot 设置下横扫数十个 NLP 任务,上下文学习成为新的能力范式。

核心要点

  • In-context learning 是本文最惊人的发现:不更新权重、只在 prompt 里塞几个示例,模型就能执行没见过的新任务——「学习」发生在前向传播里。
  • 能力随规模平滑上升且没有饱和迹象,为「更大即更强」提供了最直接的证据。
  • few-shot 与微调的对比表明:任务适应可以「外包」给上下文,模型本体保持通用——这是 API 商业模式的直接前提。
  • 伦理风险章节(滥用、偏见、碳排放)与能力正文并列,开创了「能力论文必须谈风险」的体例。
本页目录

背景

2018-2019 年,预训练范式已经完成第一轮收割:BERT(双向编码器 + 下游微调)横扫各种 NLU 榜单,GPT-2 展示了自回归模型 + zero-shot 的潜力(「语言模型是无监督多任务学习器」)。但当时的标准玩法仍是:预训练一个大模型 → 每个下游任务做微调 → 部署任务专用模型。微调意味着每个任务都要存一份权重副本、都要标注数据,而 few-shot(人类不需要梯度就能学新任务)始终是语言模型做不到的事。

与此同时,OpenAI 内部从 GPT-1(117M)→ GPT-2(1.5B)已经观察到:规模扩大带来 zero-shot 能力的非线性提升。GPT-3 是这个观察的极端外推——参数 ×117,训练数据 ×100。

动机

论文的假说写在标题里:语言模型是 few-shot 学习器。作者的赌注是:如果模型足够大、预训练数据足够多样,那么「学习执行一个新任务」这件事本身可以被当作一种模式,在预训练中习得。这种「元学习」不需要梯度更新——只要在推理时给上下文里塞几个示例(in-context learning),模型就能临时「切换」到目标任务。若成立,任务适配的成本从「一次微调 + 一份权重」降为「一段 prompt」,通用模型的 API 商业模式随之成立。

方法

严格说论文没有方法创新——架构与 GPT-2 完全相同(解码器 Transformer,沿用 post-LN 配方,另加了交替的局部/全局稀疏注意力层以省算力)。真正的「方法」在评测设计:

模型矩阵。8 个模型从 125M 到 175B(参数量跨 3 个数量级):125M、350M、760M、1.3B、2.7B、6.7B、13B、175B。大模型稀疏采样(13B 直接跳到 175B),这是后来被批评的一点。

训练配置。175B:96 层、96 头、d_model=12288、上下文 2048;300B tokens 训练(约 0.6 个 epoch,避免重复见过训练数据);数据混合:过滤后的 CommonCrawl(410B → 570GB 精选)+ WebText2 + Books1/2 + Wikipedia,按质量加权。

三种评测条件。zero-shot(只有任务描述)、one-shot(描述 + 1 个示例)、few-shot(描述 + 8-10 个示例)。关键约束:没有任何梯度更新——这是与传统微调对比的全部意义。

任务覆盖。超过 20 个数据集:完形填空(LAMBADA)、常识推理(HellaSwag、PIQA)、问答(TriviaQA、Natural Questions)、阅读理解(DROP、QuAC)、翻译、SuperGLUE、算术(两位数加法到三位数乘法)、新词造句、新闻生成等。

实验设置

评测协议的细节值得注意:few-shot 示例从训练集随机抽取(K+1 个里留 1 个做目标);不同任务用不同的自然语言模板(“Translate English to French: cheese =>”);翻译任务为低资源语言(德英、法英之外的尼泊尔语、斯瓦希里语等)设计了「任务描述 + 示例」的拼接格式——这些附录里的模板就是后来 prompt engineering 的雏形。

对比基线:微调过的 SOTA 模型(SuperGLUE 上的 RoBERTa/T5)、GPT-2、无监督最优基线。所有模型在同一评测框架下跑,保证可比性。

结果

Few-shot 的规模曲线是全文核心结果:几乎所有任务上,175B 的 few-shot 与 13B 的 few-shot 之间有明显台阶,且没有饱和迹象。

具体数字(few-shot,175B):

  • SuperGLUE:71.8(zero-shot 54.7)——微调 SOTA 当时约 89,差距巨大但在快速缩小
  • LAMBADA 完形填空:zero-shot 76.2%,few-shot 86.4%
  • TriviaQA:few-shot 71.2%(zero-shot 64.3%)
  • 三位数乘法:few-shot 从 13B 的 4% 升到 175B 的 ~20%(算术任务展示了最陡的规模曲线)
  • 任务间差异:越「语言化」的任务(完形、QA)收益越早,越「符号化」的任务(算术、anagram)越需要规模
  • 与微调的差距:GPT-3 175B few-shot 在多数任务上仍明显低于微调模型,但在低资源翻译上(尼泊尔语→英语)few-shot 反而超过无监督基线

负面结果同样重要:文本合成仍然「语法流畅但语义漂移」;粗俗内容过滤几句话就能绕过——「太强了以至于不能开放权重」的决策由此而来。

有趣的洞见

「学习」可以发生在前向传播里。这是论文最反直觉的发现:权重完全冻结,仅凭上下文中的示例就能完成新任务。三年后 Elhage et al. 用「归纳头」(induction heads)给出第一个机制解释:模型内部的 [A][B]…[A]→[B] 回路天然支持上下文中的模式复制。ICL 到底是「贝叶斯任务推断」还是「隐式梯度下降」至今仍在争论——GPT-3 报告了现象,把解释留给了整个领域十年。

Prompt 是条件分布的选择器。换个表述:「语言模型」不是一个模型,而是无数个「条件化后」的模型的叠加。任务描述 + 示例做的就是把 175B 参数里对应的那一个「子模型」调出来。这个视角直接解释了为什么 prompt 工程有效、为什么对抗 prompt 也能「调出」不该出现的行为。

伦理章节的战略意义。论文专门用一节讨论滥用、偏见、能源消耗(训练排碳约 85 吨 CO₂e 级别,论文给了估算),并给出「API 逐级开放」的部署方案。这是「能力论文必须谈风险」体例的开端,也是 OpenAI 从开源(GPT-2 分批放出)转向闭源 API 的转折点。

批判性评价

最弱的一环:「涌现」叙事建立在离散指标上。后来 Schaeffer et al.(2023)证明:换成连续指标(token 对数似然),许多「涌现」能力是平滑的——GPT-3 的「规模解锁能力」有一部分是度量方式制造的幻觉。此外 13B→175B 之间没有中间模型,「能力跳变」到底发生在哪里无法定位。

依然重要的理由:它是「范式声明」型论文的极致——没有方法创新,只靠规模的极端外推就改变了整个领域的问题列表:从「如何为每个任务设计模型」变成「如何用好一个通用模型」。「模型即产品、上下文即接口」——此后五年的应用创新(Copilot、ChatGPT、Agent)全部建立在这个接口之上。