GPT-1 的剧本是「预训练一个通用底座,每来一个任务,拿标注数据微调一次」。能用,但每个任务都要一套标注 + 一次训练,笨重。GPT-2 提出一个激进得多的问题:
GPT-2 的答案是「能,只要够大、数据够好」。它把任务从「要微调的目标」降级成「提示里的一句话」:
给模型喂 ……文章正文 TL;DR:,它就接着生成摘要;喂 ……英文句子 翻译成法语:,它就接着吐法语。
没有梯度更新、没有任务头、没有标注数据——这就是 zero-shot task transfer(零样本任务迁移)。
这是这课最反直觉的地方:GPT-2 的骨架和 GPT-1 基本一样(还是 decoder-only + 因果掩码 + 预测下一个词)。真正的杠杆是另外三根:
| 改动的杠杆 | GPT-1 → GPT-2 怎么变的 | 带来什么 |
|---|---|---|
| ① 规模 | 参数 117M → 1.5B(约 13 倍);层数最深 48 层;上下文 512 → 1024 | 容量够大,才装得下「无数任务」 |
| ② 数据质量 | BooksCorpus(书)→ WebText:靠 Reddit 高赞外链筛出的 40GB 高质量网页 | 任务示范更丰富、更干净 |
| ③ 任务条件化 | 把任务从「微调目标」变成「提示里的文字」,建模 P(输出 | 输入, 任务) | 不微调,靠提示就能切任务 |
架构上唯一的小动作是把 LayerNorm 挪到每个子层前面(pre-LN)、残差按层数缩放——为的是把更深的网络训稳,不是新增能力。 真正的故事全在「同一个老目标 + 放大」上。这正是你下一课 scaling 系列的序章:不改方法,光加规模,能力自己长。
GPT-1 的暗线是「通用能力=猜下一个词的副产品」。GPT-2 把它升级成一句更强的话—— 因为任务本身就写在文本里,所以「猜下一个词」不只是学能力,是直接在学「无数个具体任务」。
想想训练语料里天然存在这样的句子:
「……这部电影节奏拖沓、剧情老套。总结:差评。」← 这一句,就是一条情感分类的示范。
「Q: 法国首都是哪? A: 巴黎。」← 这就是一条问答示范。
模型为了把这些句子的「下一个词」猜准,被迫学会了总结、问答这些任务的模式。任务不是额外教的,是顺着预测目标白捡的。
下面是同一篇短文。点不同的「提示触发器」,看模型 zero-shot 切换成不同任务——没换模型、没微调、没给例子,只改了最后那句提示。这就是 GPT-2 让世界惊到的瞬间。
看出来了吗:同一个模型、同一段输入,仅靠提示后缀就在摘要 / 翻译 / 问答 / 情感之间自由切换。因为这些任务模式它在 WebText 里全见过。这就是你写 prompt 的史前史。
| 维度 | GPT-1(P06) | GPT-2(本篇 P07) |
|---|---|---|
| 架构 | decoder-only,12 层,117M | decoder-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 把它量化 |
把这一课接到你真实工作上的几个关键问。点开看答。
同一条轴上的两档,差在「提示里给不给例子」:
| 范式 | 提示里有什么 | 出处 |
|---|---|---|
| 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 语料 / 微调数据集时,「先狠狠过滤再喂」往往比「多喂」回报高——脏数据不是中性的,它会主动拉低分布质量。
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 测的是训练时根本没优化过的任务,能做出来只能是学到了可迁移规律——不可能是背的。映射你:微调后「训练分飙高但线上变差」=过拟合(学窄了);换大基座「没专门调的任务都变好」=涌现。
深网络的命门是梯度穿过几十层时会爆炸/消失。残差连接 输出=输入+子层(输入) 那条「+输入」的恒等通路本是救星,让梯度能抄近道直达底层。关键就看 LayerNorm 摆哪:
| 摆法 | 公式 | 后果 |
|---|---|---|
| post-LN(原版) | LN(输入 + 子层(输入)) | LN 卡在主干道上,梯度每过一层被揉一次,深了难训 |
| pre-LN(GPT-2) | 输入 + 子层(LN(输入)) | LN 挪进支路,残差恒等通路纯净无缩放,梯度几乎无损直达底层 |
一句话:把归一化从「主干道」挪到「辅路」,保住残差那条恒等高速公路畅通,梯度才能稳穿几十层。它不增加能力,是「让规模这根杠杆能继续拉下去」的承重墙——GPT-2 敢堆 48 层、后来大模型动辄上百层,靠的就是它。
因为会做 ≠ 愿意好好做。预训练目标只有「预测下一个词」=逼近互联网文本分布,模型学的是「人在网上会怎么接着写」,不是「对我最有用、最真实、最安全的回答」。于是纯预训练模型会:你问问题它反问/跑题(网上问题后常跟更多问题)、自信地编造(流畅文本概率高,真不真它不在乎)、照做有害请求(只是在模仿分布)。
这点破一个根本区分——能力(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 工程真正的理论根。
参考:
Radford et al., Language Models are Unsupervised Multitask Learners, 2019;Alammar, The Illustrated GPT-2.