《GPT-3》解读:别微调了,往上下文里塞几个例子,它自己就会学
论文:Language Models are Few-Shot Learners 作者:Tom B. Brown 等 31 位作者,OpenAI(合作者含 Johns Hopkins 等机构) 发布背景:2020-05-28 发布于 arXiv(arXiv<2005>2005>.14165,NeurIPS 2020),主张”把模 型堆到 1750 亿参数,few-shot 上下文学习(in-context learning)就能替代微调”; 前置知识:GPT-2 的架构与 scaling 观察、元学习(meta-learning)、语言模型。放到 ChatGPT 发展史里,这篇是 ChatGPT 的真正底座——ChatGPT 就是在这个预训练模型之 上加指令微调和 RLHF(人类反馈强化学习)做出来的。
一、引言:背景与核心问题
GPT-2 留下了三句话:越大越好、零样本能干活、但离微调 SOTA 还远。GPT-3 要回答的 问题是:再大 100 倍呢? 如果 scaling 曲线真是对数线性且看不到头,那模型大到 某个程度,“用几个例子在上下文里现场学”是不是就够用了——不用微调,不用更新一个梯 度?
论文的核心机制叫 in-context learning(上下文学习),其实它是 meta-learning (元学习)的一种形态:预训练时,模型见到过海量”任务 + 例子”的隐式结构,于是把 “怎么从几个例子里推出任务规律”这件事本身学到了参数里。到了推理时,你只需在输入 里塞任务描述和 K 个示例,模型就着上下文把答案续写出来,权重一个字节都不动。论文 正式提出了 zero-shot / one-shot / few-shot 三档:不给例子、给 1 个例子、给 10~100 个例子。
这个立场比 GPT-2 更彻底。GPT-2 说”不用微调”,GPT-3 说”微调不仅贵,还可能是错的” ——论文里有个很尖锐的论点:为每个任务收集标注数据再微调,会让模型学到数据集的侥 幸规律(spurious correlations)而不是任务本身,few-shot 反而更接近”人学新任务”的 方式。人类看两三个例子就能干活,为什么机器不行?
同时,这篇论文还承担了一个方法论任务:验证 scaling。他们训了 8 个尺寸(从 125M 到 175B),跨度三个数量级,就是为了证明”验证集 loss 和下游任务表现都随规模 平滑地按幂律(power law)下降”——这不是玄学,是可以用 8 个点画出来的曲线。顺便 说,论文发表时 175B 已经是当时最大非稀疏模型的 10 倍。
二、方法:架构/数据/训练细节
架构基本沿用 GPT-2:decoder-only Transformer、pre-norm、byte-level BPE,上下文窗 口 2048 token(few-shot 时可以塞 10~100 个示例)。唯一的架构改动是交替使用 dense 和 locally banded sparse attention(稠密与局部带状稀疏注意力交替),参考 Sparse Transformer。175B 版本的配置:96 层、d_model 12288、96 头、head 维度 128、FFN 49152。训练时用模型并行:矩阵乘法内部切分 + 跨层切分。关于稀疏注意 力,作者后来在消融里说这种改动对最终结果影响不大——它是省计算、省通信的工程折 中,不是能力来源。这个细节值得记住:GPT-3 的能力几乎全部来自”更大 + 更多数据”, 架构改动基本可以忽略。
训练数据是一个精心配比的混合体,一共约 5000 亿 token,训练时实际消费约 3000 亿:
| 数据源 | 规模 | 混合权重 | 训练中见到的轮数 |
|---|---|---|---|
| Common Crawl(过滤后) | 4100 亿 token | 60% | 0.44 轮 |
| WebText2 | 190 亿 token | 22% | 2.9 轮 |
| Books1 | 120 亿 token | 8% | 1.9 轮 |
| Books2 | 550 亿 token | 8% | 0.43 轮 |
| 英文 Wikipedia | 30 亿 token | 3% | 3.4 轮 |
注意两个反直觉的设计。第一,权重与语料大小不成比例:Common Crawl 最大但只占 60%,小而精的 Wikipedia 反而过 3.4 轮——这是用一点过拟合换数据质量。第二, Common Crawl 的过滤流程:从 2016-2019 共 41 个分片、45TB 压缩纯文本开始,按 “与高质量参考语料的相似度”筛选,再做文档级模糊去重,最后只剩 570GB(约 4100 亿 token)。他们还发现一个 bug:过滤时漏掉了一些与评测集的重叠数据,论文承认了 但没重训——因为太贵了。
训练细节:batch size 3.2M token、学习率 0.6e-4,在微软集群的 V100 上跑。175B 的 总算力约 3640 petaflop/s-days,折算下来传闻约 355 GPU-years、成本约 460 万 美元。作为对比,论文里列了老对手的账:BERT-Large 约 6、RoBERTa-Large 约 45——GPT-3 比它们大几个数量级,这也是它第一次把”算力就是竞争力”这件事摊在桌上。
评测方法也值得一提,它确立了后来 LLM 评测的通用姿势:few-shot 时从每个任务的训
练集里随机抽 K 个例子当上下文,用 12 个换行分隔;K 从 0 到上下文窗口上限(通常
能塞 10100 个例子),先在开发集上挑出最优 K,再上测试集。zero-shot 则只给一句
任务描述。这个”先验 K、再测”的流程,直接影响了后来所有 benchmark 的评测设
计——今天你看到的各种”k-shot”设定,根子都在这里。
关于数据污染,论文的态度是”承认但不解决”:他们尽力删除了与评测集重叠的文本,但 过滤逻辑里有个 bug 漏掉了一部分重叠,由于重训太贵就带病上阵了,只在后文量化了污 染影响。这个处理放在 2020 年是坦诚的,但后来被反复考古——尤其是不少质疑 GPT-3 分数”灌水”的研究,都拿这段当突破口。顺便说一句,这个坑直到今天都没有完美解法, 只能说”尽力而为”。
三、成绩:关键实验数字
LAMBADA(预测段落最后词):few-shot 拿到 86.4%,直接把此前微调 SOTA 的 68% 拉开 18 个点——这是”few-shot 打赢所有微调模型”最漂亮的一仗。TriviaQA (闭卷问答,无检索):few-shot 71.2%,追平甚至超过带外部检索的开放域微调系 统,知识是存在参数里的。
SuperGLUE(8 项高难任务综合):few-shot 平均 71.8,压过微调 BERT-Large 的 69.0,但离微调 SOTA 的 89.0 还有距离。拆开看冷热不均:COPA 92.0、 ReCoRD 90.2 接近顶配,WiC(跨句词义判断)只有 49.4,几乎放弃——凡是”必 须同时看两边句子”的任务,单向模型都吃亏,这毛病从 GPT-1 就带着。CoQA 对话式问答 few-shot 85 F1,人类约 91,已经很接近。
翻译:few-shot 在 WMT’14 上翻英(Fr→En、De→En、Ro→En)刷新了无监督翻译的 SOTA,Fr-En 到 39.2 BLEU(此前无监督 35.0);但翻出去弱——训练数据 93% 是英文,这是天然偏向。语言建模侧 PTB 困惑度 20.5,对比 GPT-2 的 35.8。
在更广的 42 个评测任务里,论文画出了完整的”强弱地图”。强的是:闭卷问答 (TriviaQA、WebQuestions)、完形填空(LAMBADA)、StoryCloze 这类靠世界知识和长程 依赖的任务;弱的是:RACE(长文阅读)、QuAC(对话式完形)、ANLI(对抗式推 理)——凡是需要精细多跳推理的,few-shot 都顶不上。离散数值推理更惨,DROP 上虽然 超过微调 BERT,但离人类和专用模型差距以倍数计。算术是著名短板:两位加法接近 100%,三位加法掉到 80% 上下,位数再多的加法基本是瞎猜,而且模型对”竖式进位”这类 规则毫无概念——它是真不会算,不是算错。
最能说明”涌现”的其实是那组人机对比:让人类区分 GPT-3 生成的新闻和真新闻,判断准 确率只有 约 52%——接近掷硬币。文章还被拿去测了逻辑推理、新词使用,能力图谱 明显是”涌现”出来的,不是逐条训练出来的。作者自己也承认,他们对这些能力的涌现机 制理解有限,只知道它跟规模强相关——这个”能解释现象、说不清原理”的坦诚,在当时 的论文里相当少见。
Scaling 那张图才是全篇的灵魂:8 个尺寸下,验证集 loss 平滑地按幂律下降,few-shot 和 zero-shot 的差距随规模扩大而拉大——模型越大,越会”从上下文里的例子学”。 这解释了为什么小模型刷不了 in-context learning:它根本没有足够的容量把”学会学 习”这件事编码进去。有个前瞻性的冷知识:按后来 Chinchilla 的最优配比,175B 参数应 该配约 1.4 万亿 token,GPT-3 只训了 3000 亿——它在数据上其实是”欠训”的,说 明当时的成绩还有水分可挤,也说明 scaling 的红利远没吃尽。
收尾:我的一点看法
先说历史位置。GPT-3 是”规模三部曲”的收官,也是 ChatGPT 的直接底座。ChatGPT 并没 有发明新架构,它做的就是:拿 GPT-3 的预训练模型,加指令微调(instruction tuning)和 RLHF(人类反馈强化学习),让”能对话”变成”会对话”。回头看挺有讽刺意 味:GPT-3 论文的卖点是”不微调”,而 ChatGPT 恰恰是靠”重度微调 + 人类反馈”才火 的——但正因为 GPT-3 证明了预训练底座的通用性,RLHF 才有东西可以打磨。这俩不是矛 盾,是分工。
再夸。这篇论文把 in-context learning 从”观察到的现象”升格成”一门技术”:prompt 怎 么写、K 取多少、任务怎么表述,都成了可研究的问题。今天整个 prompt engineering 行 业、Agent 里”给模型塞几个工具示例”的做法,源头都是这篇。它还用 8 个尺寸的曲线把 “scaling 有用”从信仰变成了数据——后来 Google 的 Chinchilla 挑战它的配比、DeepSeek 挑战它的成本,都是在这张曲线的坐标系里讨价还价。
然后必须骂几点。第一,成绩含金量要打折:few-shot 在很多任务上只是”接近”而不是 “超过”微调 SOTA,SuperGLUE 平均 71.8 面对 89.0 的微调天花板,差距是实打实的;论 文用”不微调所以更通用”来辩护,这有道理,但分数就是分数。第二,数据污染 bug 被承 认了但没解决,一些 few-shot 成绩里有多少是训练时见过的题,说不清。第三,安全部分 停留在”检测偏置、评估毒性”的层面,没有给出任何对齐手段——这个坑后来 ChatGPT 用 RLHF 补上了。第四,460 万美元的训练成本、数 GB 的模型、单次推理秒级延迟,注定了 它是”高墙内的玩具”,平民玩不起——这个”算力阶层分化”的问题,到今天都没解决。
最后一句个人判断:GPT-3 最被高估的是”few-shot 万能”,最被低估的是它揭示了”上下 文本就是可编程的”。今天看 Agent、工具调用、prompt 注入攻击,本质上都在消费这同一 个发现:对一个足够大的语言模型,你给它什么样的上下文,它就变成什么样的系统。 ChatGPT 发展史写到这里,真正的地基已经打完了——后面的一切,都是在这块地基上加装 修。
附:核心数据速查
关键数字表格
| 指标 | 数值 | 对比/备注 |
|---|---|---|
| 参数量 | 1750 亿 | 96 层,当时最大非稀疏模型的 10 倍 |
| 隐层维度 | 12288 | 96 头,FFN 49152 |
| 上下文窗口 | 2048 token | few-shot 可塞 10~100 个示例 |
| 模型尺寸系列 | 8 个(125M ~ 175B) | 用于验证平滑 scaling 曲线 |
| 训练 token | 约 3000 亿 | 语料混合共约 5000 亿 |
| Common Crawl(过滤后) | 4100 亿 token | 原始 45TB → 过滤后 570GB |
| 训练超参 | batch 3.2M token,lr 0.6e-4 | 微软集群 V100,模型并行 |
| 总算力 | 3640 petaflop/s-days | 传闻约 355 GPU-years、460 万美元 |
| LAMBADA few-shot | 86.4% | 前微调 SOTA 68% |
| TriviaQA few-shot | 71.2% | 追平带检索的微调系统 |
| SuperGLUE few-shot | 71.8 | 微调 BERT-Large 69.0,微调 SOTA 89.0 |
| WMT’14 Fr-En few-shot | 39.2 BLEU | 此前无监督 35.0 |
| PTB 困惑度 | 20.5 | GPT-2 为 35.8 |
| CoQA few-shot | 85 F1 | 人类约 91 |
| WiC(SuperGLUE 子任务) | 49.4 | 跨句词义判断,明显短板 |
| 新闻人机判别 | 人类准确率约 52% | 接近随机,难辨真假 |
关键概念清单
- Few-shot / One-shot / Zero-shot = 小样本 / 单样本 / 零样本学习
- In-context learning = 上下文学习,靠上下文里的例子现场学,不更新梯度
- Meta-learning = 元学习,“学会学习”本身成为训练目标
- Scaling law = 规模定律,能力随参数/数据/算力平滑增长
- Common Crawl = 通用网络爬虫语料
- Sparse attention = 稀疏注意力,只让部分位置互相注意
- Petaflop/s-days = 每秒千万亿次浮点运算 × 天数,算力的度量单位
- Power law = 幂律,性能随规模平滑变化的曲线
- Prompt = 提示,编写上下文来指定任务
- Closed-book QA = 闭卷问答,不借助外部检索直接作答
- Spurious correlation = 侥幸规律,模型学到的与任务无关的表面关联
- Data contamination = 数据污染,训练集与评测集重叠
- Emergent ability = 涌现能力,小模型没有、大模型突然出现的能力
- RLHF = Reinforcement Learning from Human Feedback,人类反馈强化学习
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时





