IT 论文精读 · PAPER 11
Brown 等 · OpenAI · NeurIPS 2020
2020 年,OpenAI 发布了 GPT-3——ChatGPT 的直系前身。这篇论文干的事听起来简单粗暴:把语言模型做到前所未有的 1750 亿参数,让它读了海量的互联网文字。然后他们展示了一件怪事:这个模型不用再针对任何任务做训练——你只要在输入里给它看几个例子,它就能当场做翻译、答题、写文章、做算术,像人一样「看两眼就上手」。
在这之前,AI 是「一岗一训」的:想让模型做翻译,得先收集上万条人工标注的翻译例句,专门训练一遍;想让它判断影评是好评还是差评,又得再收集、再训练一遍。每换一个任务,就要请人标数据、跑一轮训练——像每换一个岗位都得把员工送去上几个月的培训班。贵、慢,还只有懂技术的人玩得起。
GPT-3 的思路是:与其每个任务开一个培训班,不如养一个读过天下文章的「老江湖」。它在训练时只做一件事——读海量文字、反复练习「猜下一个词」。练成之后,你不用再动它一根汗毛:把任务用人话写在纸条上、附上两三个示范,它照着就能做。论文把这叫「少样本学习」——不是重新教它,而是提醒它。
关键在于:那几个例子不是在「教」它新本领,而是在告诉它「该拿出哪套本领」。想象一台巨大的点唱机——歌(能力)在它读遍互联网时就已经录进去了:语法、常识、语言之间的对应、一问一答的套路……你写下的示范就像在点歌,帮它锁定「哦,现在玩的是英译法游戏」。
而这篇论文最重要的发现是:模型越大,这招越灵。小模型看例子基本没用;模型大到一定程度后,「看例子上手」的能力才突然好使起来。「大」带来的不只是量变。也得说句诚实话:它本质上仍是在「接话」,接得流畅不等于接得对——它会一本正经地编造事实,这个毛病从 GPT-3 一直延续到今天的聊天机器人。
从此用 AI 的方式变了:不再是「程序员收集数据、训练模型」,而是「任何人用一段话指挥模型」——今天人人都在写的「提示词」,就是从这篇论文开始成为一门手艺的。两年后,OpenAI 在它的续作上加了一层「听懂人话」的训练,就成了 ChatGPT。
把「猜下一个词」练到 1750 亿参数的规模,模型就能不经专门训练、只看几个例子当场上手新任务——GPT-3 证明了「大」本身能换来「通用」,开启了提示词时代,也是 ChatGPT 的直系前身。
想看三种提示方式的结构图、规模曲线和真实评测数字? → 切到精读版
GPT-3 把只做「预测下一个词」的 decoder-only Transformer 放大到 1750 亿参数、在约 3000 亿 token 的网络文本上预训练,然后证明:不做任何梯度更新,仅靠在输入里写上任务描述加几个示范(上下文学习,in-context learning),它就能在几十个 NLP 基准上逼近甚至超过专门微调过的模型——规模本身能换来通用性。这条路线两年后直接长成 ChatGPT。
Tom Brown、Benjamin Mann、Nick Ryder 等 31 位作者,OpenAI,2020 年 5 月放出、NeurIPS 2020 发表。上承 GPT-2(2019,已露出「不微调也能做任务」的苗头)与同年的 Scaling Laws(Kaplan 等,「损失随规模幂律下降」的定量依据,见 TOPICS 下一篇);下启 InstructGPT / ChatGPT(在它之上加指令微调与 RLHF),以及整个「大模型 + 提示词」的行业范式。
到 2019 年,NLP 的主流是 BERT 确立的「预训练 + 微调」两段式:先在无标注文本上预训练,再为每个下游任务收集成千上万条标注样本做微调。痛点有三个。一是贵:每个新任务都要一份专属标注数据集,长尾需求根本覆盖不起。二是窄:微调出来的是「窄专家」,容易钻训练集分布的捷径,分数虚高、换个分布就露馅,泛化能力存疑。三是不像人:人类接一个新任务,通常一句说明、至多一两个示范就够了,不需要一万道练习题。
GPT-2 已经展示过「零样本做任务」的可能性,但成绩远不能打。这篇论文要回答的问题很清晰:把模型和数据一起放大两个数量级,「看几个例子就上手」能不能从苗头长成真本事?
GPT-3 用三种设定评测同一个冻结的模型:zero-shot 只给任务的自然语言描述;one-shot 额外给 1 个示范;few-shot 给 10–100 个示范(以塞得进 2048 token 的上下文窗口为限)。关键在于:示范只是作为普通文字放进输入里,模型参数一个都不动、没有任何梯度更新——模型照常做它唯一会做的事「接下一个词」,答案就在接龙中产生。
为什么这可能有效?训练语料(网页、书籍)里本来就充满「示范」形状的文字——题目后面跟着答案、英文后面跟着法文、差评后面跟着一星。为了把「下一个词」猜准,模型被迫内化了这些模式。推理时你给的几个示范,等于在提示它「现在是哪个模式」。论文的说法是:预训练让模型学会了一种从上下文里认出任务、当场适应的元能力(一种广义的 meta-learning)。
架构上 GPT-3 几乎没有新东西:与 GPT-2 相同的 decoder-only Transformer(最大版 96 层、上下文窗口 2048 token),只把注意力换成密集与局部稀疏交替的版本以省算力。真正的设计在实验上:训练 8 个不同大小的模型,从 1.25 亿到 1750 亿参数,用同一套几十个基准、按三种设定统一评测。训练数据约 3000 亿 token:以过滤加权后的 Common Crawl 网页为主体,混入 WebText2、两个书籍语料和英文维基百科——质量越高的语料被重复采样得越勤。1750 亿的最大版训练耗算约 3640 petaflop/s-day,成本以百万美元计。
结果给出全文最重要的一张图:模型越大,三条曲线都在涨,但 few-shot 涨得最陡——few-shot 与 zero-shot 的差距随规模越拉越大。这说明「看例子上手」不是小模型也有的便宜技巧,而是随规模才变强的能力:大模型不只是「知道得更多」,而是更会从上下文里现学。
为什么「接词」能逼出这么多本领?一个常用的直觉是压缩:要在海量文本上把下一个词猜得足够准,最省力的办法不是死记硬背,而是学会文字背后的规律——语法、事实、逻辑、语言间的对应。规模给了它足够的容量去装这些规律,few-shot 提示则是取用它们的钥匙。
诚实的另一面:在自然语言推理(ANLI)、词义辨析(WiC)等任务上 few-shot 接近乱猜水平;论文还披露了训练数据与测试集重叠(数据污染)的过滤 bug,并附上了长篇的污染影响分析。
范式换了。与模型交互的方式从「收集数据 → 微调」变成「写提示词」——prompt engineering、few-shot prompting 从此成为一门基本功,用 AI 的门槛从「会训练模型」降到「会打字」。路线定了。它是 Scaling Laws 的落地实证,把「做大」确立为通往通用能力的主路线,引发此后 PaLM、LLaMA、GPT-4 等全行业的规模竞赛。产品形态也定了。GPT-3 不公开模型权重、只开放 API 调用,开创「模型即服务」的商业形态。而它最著名的后代:在 GPT-3 系列之上做指令微调加 RLHF,就是 InstructGPT(2022),再往前一步就是 ChatGPT——今天所有对话大模型「预训练底座 + 提示」的结构,都在这篇里定型。
① 一句话:1750 亿参数的「接龙」模型,不改参数、只看几个例子就能上手几十种任务。
② 痛点:「预训练 + 微调」每个任务都要上万条标注、产出窄专家;人类只要一句说明加个示范。
③ 机制:上下文学习(in-context learning)——任务描述和示范作为普通文字放进输入,模型冻结、零梯度更新,答案在接龙中产生。
④ 机制来源:语料里本就充满「示范 → 答案」的模式,接词训练逼模型内化它们;提示只是「点歌」,唤起已录好的能力。
⑤ 实验设计:8 个模型(1.25 亿 → 1750 亿)× 三种设定 × 几十个基准;架构照抄 GPT-2,变量只有规模。
⑥ 核心发现:few-shot 成绩随规模涨得最陡、与 zero-shot 的差距越拉越大——「看例子上手」是随规模变强的能力。
⑦ 结果:LAMBADA 86.4%、TriviaQA 71.2% 超闭卷微调模型、生成新闻人类辨别率≈瞎猜;但 SuperGLUE 71.8 仍逊于微调 SOTA,推理类任务偏弱。
⑧ 影响:提示词范式 + 模型即服务 + 规模竞赛;加上指令微调与 RLHF 即是 ChatGPT。
⑨ 局限:幻觉、偏见、上下文学习机制存疑、Chinchilla 证明其配比欠优、原始模型不听指挥、闭源难复现。