Learn AI · 模型硬功底(由内而外)
第 8 课 / 经典论文 P07  ·  阶段二:预训练范式(Radford et al., 2019)

GPT-2:
规模一上,「猜下一个词」
——自己长出了多任务能力,还不用微调

上一课 GPT-1 立了范式:生成式预训练 + 每个任务还要微调。这一课 GPT-2 几乎没动架构,只做了三件事——放大规模、提纯数据、把任务当成输入的一部分——结果世界第一次看到:不微调、光给一句提示,模型就能切换去做摘要、翻译、问答。 它回答你一个天天在用却没拆过的问题:为什么我换个更大的模型、改改 prompt,它就「啥都会一点」,而我根本没训练它?
GPT-1 赌的是「猜下一个词能学出通用能力」。GPT-2 把这句话再推一步
海量真实文本里,任务本身就以文字形式存在(「翻译成法语:…」「TL;DR:」就明晃晃写在网页上)。
所以在大语料上学「预测下一个词」,等于隐式地把无数任务一起学了——语言建模本身就是多任务学习。规模越过门槛,这些能力自己涌现出来。

一、立靶:GPT-1 还要微调,凭什么 GPT-2 不微调就能干活?

GPT-1 的剧本是「预训练一个通用底座,每来一个任务,拿标注数据微调一次」。能用,但每个任务都要一套标注 + 一次训练,笨重。GPT-2 提出一个激进得多的问题:

立靶:能不能一次预训练,之后啥也不训,靠提示直接做任意任务?

GPT-2 的答案是「能,只要够大、数据够好」。它把任务从「要微调的目标」降级成「提示里的一句话」: 给模型喂 ……文章正文 TL;DR:,它就接着生成摘要;喂 ……英文句子 翻译成法语:,它就接着吐法语。 没有梯度更新、没有任务头、没有标注数据——这就是 zero-shot task transfer(零样本任务迁移)

二、抽框架:GPT-2 到底改了什么?(几乎没动架构)

这是这课最反直觉的地方:GPT-2 的骨架和 GPT-1 基本一样(还是 decoder-only + 因果掩码 + 预测下一个词)。真正的杠杆是另外三根:

改动的杠杆GPT-1 → GPT-2 怎么变的带来什么
① 规模参数 117M → 1.5B(约 13 倍);层数最深 48 层;上下文 512 → 1024容量够大,才装得下「无数任务」
② 数据质量BooksCorpus(书)→ WebText:靠 Reddit 高赞外链筛出的 40GB 高质量网页任务示范更丰富、更干净
③ 任务条件化把任务从「微调目标」变成「提示里的文字」,建模 P(输出 | 输入, 任务)不微调,靠提示就能切任务
记牢这句:GPT-2 没有「更聪明的设计」,它赌的是「规模 × 数据 × 把任务塞进提示」

架构上唯一的小动作是把 LayerNorm 挪到每个子层前面(pre-LN)、残差按层数缩放——为的是把更深的网络训稳,不是新增能力。 真正的故事全在「同一个老目标 + 放大」上。这正是你下一课 scaling 系列的序章:不改方法,光加规模,能力自己长。

三、核心洞察:语言建模本身就是多任务学习

GPT-1 的暗线是「通用能力=猜下一个词的副产品」。GPT-2 把它升级成一句更强的话—— 因为任务本身就写在文本里,所以「猜下一个词」不只是学能力,是直接在学「无数个具体任务」。

想想训练语料里天然存在这样的句子:
「……这部电影节奏拖沓、剧情老套。总结:差评。」← 这一句,就是一条情感分类的示范
Q: 法国首都是哪? A: 巴黎。」← 这就是一条问答示范
模型为了把这些句子的「下一个词」猜准,被迫学会了总结、问答这些任务的模式。任务不是额外教的,是顺着预测目标白捡的

四、动手玩:同一段文本,换个提示后缀,模型就换了任务

下面是同一篇短文。点不同的「提示触发器」,看模型 zero-shot 切换成不同任务——没换模型、没微调、没给例子,只改了最后那句提示。这就是 GPT-2 让世界惊到的瞬间。

上周末我去了城郊的农夫市集,买了新鲜草莓和一束向日葵,还和摊主聊了很久关于天气的事。
加一句提示: 

看出来了吗:同一个模型、同一段输入,仅靠提示后缀就在摘要 / 翻译 / 问答 / 情感之间自由切换。因为这些任务模式它在 WebText 里全见过。这就是你写 prompt 的史前史。

五、对照表(一):GPT-1 → GPT-2 的「同一条路,放大一档」

维度GPT-1(P06)GPT-2(本篇 P07)
架构decoder-only,12 层,117Mdecoder-only,最深 48 层,1.5B(同骨架,放大)
数据BooksCorpus(约 5GB 书)WebText(40GB 高质量网页)
怎么做下游任务每个任务微调一次 + 接任务头不微调,靠提示 zero-shot
任务怎么表达特殊分隔符拼序列(输入变换)自然语言提示(TL;DR: / 翻译成…)
核心论点生成式预训练能学出通用能力语言建模本身就是多任务学习

六、对照表(二):「涌现」——能力随规模冒出来

GPT-2 一口气放出 4 个尺寸(117M / 345M / 762M / 1.5B)。把同一个 zero-shot 任务的表现对模型大小画曲线,会看到:小模型几乎不会,越大越行。这就是涌现(emergence)的早期证据——规模本身在变出能力。

模型尺寸zero-shot 多任务表现给你的信号
117M(最小)勉强、不稳能力不是「有/无」
而是随规模单调爬升
345M / 762M稳步变好
1.5B(最大)多个任务接近甚至逼近专门模型规模=可买的能力

🔮 这条曲线就是下一阶段 Scaling Laws(P10) 的引子:能力和规模的关系不是玄学,是可测、可外推的幂律。「大力出奇迹」从 GPT-2 这里第一次有了实证味道。

七、映射到你的项目

你工作里的东西其实就是这篇论文的什么
你换个更大的模型,发现它「啥都会一点」、根本没训它就是 GPT-2 的 zero-shot 多任务——能力是「猜下一个词 + 规模」涌现出来的,不是谁专门教的
你写 TL;DR: / 「请翻译:」/「判断情感:」就让模型干活任务条件化的直系应用——你在用一句提示选中模型早已学会的某个任务
你做 RAG 语料 / 数据集时纠结「要质还是要量」GPT-2 用 WebText(Reddit 高赞过滤)立的范式:数据质量 ≥ 数据数量
你按 token 计费、算上下文窗口那个 token 来自 GPT-2 的 byte-level BPE(词表 50257)——一个词常是多个 token
「换大模型常常一换就好」的玄学体感就是 涌现:能力越过规模门槛才冒出来。下节 scaling laws 把它量化

八、检索练习(关掉上文,凭记忆答)

1. 相比 GPT-1,GPT-2 最关键的改动是什么?
2. GPT-2 为什么不微调、靠提示就能做摘要/翻译/问答?
3. GPT-2 放出 4 个尺寸,揭示了什么现象?

九、常见问题 FAQ

把这一课接到你真实工作上的几个关键问。点开看答。

GPT-2 的 zero-shot 和 GPT-3 的 few-shot / in-context learning 到底差在哪?

同一条轴上的两档,差在「提示里给不给例子」:

范式提示里有什么出处
zero-shot只有一句指令(TL;DR:),0 个例子GPT-2(本课)
few-shot / ICL指令 + 几个示范,照葫芦画瓢GPT-3(P08)

两者都不更新权重。GPT-2 先证明「不微调能干活」,GPT-3 再发现「给几个例子能干得好得多」——你日常 prompt 里塞示例,吃的就是 GPT-3 这口红利。🔮

为什么数据质量这么关键?多堆点数据不行吗?

关键在「任务示范的密度和干净度」。随便爬全网会混进大量垃圾、重复、机器生成的低质文本,模型学到的「下一个词分布」被污染。GPT-2 用 Reddit karma(高赞)当人工质量代理,等于让人群先帮你筛了一遍——筛出的 WebText 里,高质量的任务示范(总结、问答、翻译)密度更高

迁移到你:做 RAG 语料 / 微调数据集时,「先狠狠过滤再喂」往往比「多喂」回报高——脏数据不是中性的,它会主动拉低分布质量。

一个词为什么会是「多个 token」?这跟我有什么关系?

GPT-2 用 byte-level BPE:从字符起步,反复把「最常一起出现的相邻片段」合并。常见词(the、是)成一整块 token,生僻词(antidisestablishmentarianism)被拆成好几块,中文常一字一到多个 token。词表固定 50257,好处是任何字符串都能编码、永不 OOV。

对你的直接影响:① 计费按 token 不按词,中文/代码往往比你以为的更费 token;② 上下文窗口(如 128k)是 token 数③ 模型「看不见字母」——它看的是 token,所以「strawberry 有几个 r」这类问题它天生容易错。

「涌现」和「过拟合」怎么区分?都是表现变好啊

方向相反,判据是「在哪个数据上、画哪条曲线」

涌现(emergence)过拟合(overfitting)
测在哪没见过的新任务(zero-shot)训练集↑、测试集↓ 的裂口
画哪条线模型规模画 → 越门槛能力冒出训练步数画 → 训练 loss↓ 验证 loss↑
泛化更会举一反三(学到真规律更不会(背住了样本

一句话:过拟合是「测试集上露馅」,涌现是「全新任务上惊喜」。GPT-2 的 zero-shot 测的是训练时根本没优化过的任务,能做出来只能是学到了可迁移规律——不可能是背的。映射你:微调后「训练分飙高但线上变差」=过拟合(学窄了);换大基座「没专门调的任务都变好」=涌现。

pre-LN 为什么能把几十层的深网络训稳?

深网络的命门是梯度穿过几十层时会爆炸/消失。残差连接 输出=输入+子层(输入) 那条「+输入」的恒等通路本是救星,让梯度能抄近道直达底层。关键就看 LayerNorm 摆哪:

摆法公式后果
post-LN(原版)LN(输入 + 子层(输入))LN 卡在主干道上,梯度每过一层被揉一次,深了难训
pre-LN(GPT-2)输入 + 子层(LN(输入))LN 挪进支路,残差恒等通路纯净无缩放,梯度几乎无损直达底层

一句话:把归一化从「主干道」挪到「辅路」,保住残差那条恒等高速公路畅通,梯度才能稳穿几十层。它不增加能力,是「让规模这根杠杆能继续拉下去」的承重墙——GPT-2 敢堆 48 层、后来大模型动辄上百层,靠的就是它。

zero-shot 既然这么强,为什么后来还要 RLHF?

因为会做 ≠ 愿意好好做。预训练目标只有「预测下一个词」=逼近互联网文本分布,模型学的是「人在网上会怎么接着写」,不是「对我最有用、最真实、最安全的回答」。于是纯预训练模型会:你问问题它反问/跑题(网上问题后常跟更多问题)、自信地编造(流畅文本概率高,真不真它不在乎)、照做有害请求(只是在模仿分布)。

这点破一个根本区分——能力(capability)vs 对齐(alignment)是两个独立的轴

阶段解决什么
预训练(GPT-2/3)能力:模型会不会做(zero-shot 证明了它会)
指令微调 + RLHF(P15)对齐:把「续写互联网」掰成「做有用/诚实/无害的助手」

一句话:预训练给了「能做」的本事,RLHF 教会「该怎么做、该不该做」——前者是潜力,后者是教养。你「prompt 控不住行为」的困惑根源就在此:模型性格是 RLHF 训练时焊死的,光靠推理时的 prompt 有上限。RLHF 本质=「人类打分→把模型往偏好推」,正是 prompt 自动调优环(生成→评分→改 prompt 的闭环)的工业化版。P15 InstructGPT 正式拆。🔮

本课主源

读原典:Radford et al. — Language Models are Unsupervised Multitask Learners(GPT-2, 2019)

建立直觉首选:Jay Alammar — The Illustrated GPT-2(图解 decoder-only 自回归生成,正是 GPT-2)。

下一篇 P08 GPT-3:再放大 100 倍(175B),发现「在提示里给几个例子」就能让模型当场学会任务——in-context learning,你 prompt 工程真正的理论根。

我是你的老师,随时提问。 比如:「『涌现』和『过拟合』怎么区分?」「pre-LN 为什么能把深网络训稳?」 「zero-shot 既然这么强,为什么后来还要 RLHF?」——别带着模糊往下走。

参考:
Radford et al., Language Models are Unsupervised Multitask Learners, 2019;Alammar, The Illustrated GPT-2.