GPT-2 的 zero-shot 惊艳,但和专门微调的模型比,分数还差一截。当时的主流路线仍是「预训练 + 每个任务微调一套」。GPT-3 提出一个更彻底的赌注:
GPT-3 不为任何下游任务更新权重。它把任务示范直接写进 prompt: 给几对「英文 → 法文」,再给一个新英文,模型就接着输出法文。 没有梯度、没有训练、没有任务头——模型只是在一次普通的前向推理里,「看了看例子」就照做了。这就是 in-context learning。
同一个任务,按 prompt 里塞几个示范分成三档——这条轴你天天在调,只是没起过名字:
| 档位 | prompt 里有什么 | 例子(英译法) |
|---|---|---|
| zero-shot | 只有指令,0 个示范 | 翻译成法语:cheese → |
| one-shot | 指令 + 1 个示范 | 翻译成法语:sea → mer / cheese → |
| few-shot | 指令 + 几个(典型 3–5)示范 | sea → mer / dog → chien / book → livre / cheese → |
和 fine-tuning 的根本区别——fine-tuning 是改权重、永久生效;in-context learning 是把例子放进上下文、只在这一次推理里临时生效,下一个对话就忘了。 你在 prompt 里多塞两个示例 → few-shot;删掉示例只留指令 → zero-shot。你一直在这条轴上滑动,只是现在知道它叫什么了。
GPT-2 的暗线是「任务藏在文本里」。GPT-3 把它升级成一句更狠的话—— 模型在预训练里不只学知识,还学到一种「认出任务模式、当场套用」的通用能力(meta-learning,学会学习)。
你给的那几个例子,不是在训练它,而是一份临时的「任务说明书」:模型从例子里认出「哦,这是英译法 / 这是情感分类」,然后调用它预训练时早就学会的那项本事。 所以叫「学会学习」——预训练学的是「怎么快速认领一个新任务」,prompt 里的例子只是把任务指给它看。
同一个任务(判断情感)。点不同档位,看 prompt 实际长什么样,以及为什么「多给一个例子」能让模型更准——全程没有任何训练。
看出门道了吗:例子越多、格式越清晰,模型越容易「认出任务、对齐输出格式」。这也解释了你的体感——prompt 里示例的措辞、顺序、格式一变,效果就抖,因为模型全靠这几个例子来「认领任务」。
| 维度 | GPT-2(P07) | GPT-3(本篇 P08) |
|---|---|---|
| 参数 | 1.5B | 175B(约 117 倍) |
| 架构 | decoder-only + pre-LN | 同骨架,+ 交替的稀疏注意力层(省长上下文算力) |
| 怎么做任务 | zero-shot(只给指令) | zero / one / few-shot(可给示例) |
| 核心论点 | 语言建模就是多任务学习 | 够大的模型是 few-shot learner(会 in-context learning) |
| 对你的意义 | 「换大模型啥都会一点」 | 「prompt 里塞例子就管用」 |
GPT-3 最重要的曲线:few-shot 相对 zero-shot 的增益,随模型规模急剧放大。小模型你给再多例子也没用,模型够大了,「给例子」才突然变成强力杠杆。
| 模型规模 | 给几个例子(few-shot)有用吗 | 说明 |
|---|---|---|
| 小模型 | 几乎没用,给了也不会「认任务」 | ICL 不是设计出来的 是规模到了才涌现的 |
| 175B 大模型 | 暴涨,few-shot 远超 zero-shot |
🔮 这把「涌现」从 GPT-2 的苗头坐实了:in-context learning 本身就是一项随规模冒出来的能力。下一阶段 Scaling Laws(P10)/ Chinchilla(P11) 会告诉你:规模、数据、算力到底该怎么配,才最划算地买到这种能力。
| 你工作里的东西 | 其实就是这篇论文的什么 |
|---|---|
| 你在 prompt 里塞 2–3 个「输入→输出」示例,模型就照着干 | 就是 few-shot in-context learning——你 prompt 工程最核心的那招,理论根在这篇 |
| 「示例换个顺序 / 改个格式,效果就抖」 | 因为模型全靠这几个例子认领任务、对齐格式,example 是它唯一的「任务说明书」 |
| 你纠结「这个任务该 few-shot 还是去微调」 | 就是 ICL(不改权重、临时)vs fine-tuning(改权重、永久)的取舍——量大稳定走微调,灵活少量走 few-shot |
| 「为什么小模型怎么调 prompt 都不灵,大模型一点就通」 | 因为 ICL 是大模型才涌现的能力,prompt 技巧吃的是规模红利 |
| 你做 LLM 评分器(LLM-as-judge)时给评分示例 | 同一招:用 few-shot 示范「什么算好/坏」,让模型对齐你的评分标准——本质是 in-context 地「认领评分任务」 |
把这一课接到你真实工作上的几个关键问。点开看答。
取舍轴是「改不改权重」带来的几组权衡:
| few-shot(ICL) | fine-tuning | |
|---|---|---|
| 改权重 | 不改,临时生效 | 改,永久生效 |
| 上手成本 | 几乎为零,改 prompt 即可 | 要数据 + 训练 + 部署 |
| 每次推理成本 | 更贵(例子占 token、每次都带) | 更省(任务已焊进权重) |
| 适合 | 任务多变、量小、要快试 | 任务固定、量大、要稳要省 |
经验法则:先用 few-shot 把任务跑通、验证价值;稳定且高频了,再考虑微调降本提质。
因为模型全靠这几个例子来「认领任务 + 对齐输出格式」——它没在训练,只是在模仿你给的模式。于是例子的顺序、措辞、标签分布、格式一致性都会影响它「认成什么任务」。GPT-3 论文里也实测到 few-shot 对这些敏感。
实操上:① 保持所有示例格式严格一致(同样的分隔符、字段名);② 标签分布别失衡(别全是正例);③ 把最有代表性的例子放前后两端;④ 多测几组顺序取稳的。这正是「prompt 工程」要打磨的手艺。
权重层面:没有任何学习——一次前向推理,参数纹丝不动。说它「学习」是从行为上看:给了例子后它的表现像「学会了新任务」。GPT-3 的解释是 meta-learning:预训练已经把「认任务、套模式」的本事压进权重,推理时例子只是激活对应的能力。
一个有用的心智模型:例子是「检索 + 对齐」的线索,不是「训练信号」。模型在用它的注意力,从你给的几个例子里读出任务规则,再套到新输入上。所以它叫 in-context learning——学习发生在「上下文」里,不在权重里。🔮
读原典:Brown et al. — Language Models are Few-Shot Learners(GPT-3, 2020)。
建立直觉首选:Jay Alammar — The Illustrated GPT-2(自回归生成与 decoder-only 直觉,GPT-3 同源放大)。
阶段二(预训练范式)到此收官:GPT-1 立范式 → GPT-2 放大见涌现 → GPT-3 坐实 in-context learning。下一阶段 P09 T5 / P10 Scaling Laws:先统一「万物皆 text-to-text」,再量化「规模到底怎么配最划算」。
参考:
Brown et al., Language Models are Few-Shot Learners, 2020;Alammar, The Illustrated GPT-2.