跳到主要内容

Transformer 与预训练时代 — 架构、规模化与大模型的来路

这一章讲四件事: Transformer 的完整架构(逐层拆开); 为什么它能规模化而 CNN/RNN 不能; 预训练的三种模式(BERT/T5/GPT); 以及从 GPT 到 ChatGPT 的那条线(不更新参数也能做任务、按指令办事、用人类反馈对齐)。 这是全书与今天的大模型时代直接接轨的一章。

1. 顶层全景:不用卷积、不用循环,只用注意力

2017 年的 Transformer 是完全基于注意力的架构—— 一个卷积层、一个循环层都没有1。 整体仍是编码器-解码器(第 11 章的骨架),但内部全部换新:

编码器(每层两个子层):
① 多头自注意力(query/key/value 都来自上一层输出)
② 逐位置前馈网络(positionwise FFN)
每个子层外面:残差连接 + layer normalization

解码器(每层三个子层):
① 掩码多头自注意力(只看已生成的词,保自回归)
② 编码器-解码器注意力(query 来自解码器,key/value 来自编码器输出)
③ 逐位置 FFN
每个子层外面:残差连接 + layer normalization

输入侧:embedding × √d + 位置编码(第 12 章),喂入两端

图说:所有子层输出维度都是 d,残差连接 x+sublayer(x) 才能直接相加。

三个零件需要解释:

逐位置 FFN:同一个两层 MLP 独立地作用于每个位置2。 它和自注意力的分工是:自注意力负责跨位置混合信息(词与词之间), FFN 负责在每个位置内部做非线性变换。一个管「和谁说话」,一个管「自己想」。

残差 + 层归一化:每个子层都是 x + sublayer(x) 再过 LN—— 第 09 章的两件法宝在这里是标配:残差保住深层可训,LN 稳住尺度 (NLP 变长序列上 LN 优于 BN,这是经验结论)—— 几十层深就是这么堆起来的3

掩码自注意力:训练时目标句全部已知,若不做手脚, 解码器第 t 个位置能偷看第 t+1 个词——答案泄漏。 掩码把「未来位置」的注意力打分设成 −∞(类似 masked softmax), 每个位置只能看自己及之前,保住自回归4

2. 走查:英法翻译的注意力形状

书里训练了一个 2 层、4 头的 Transformer 做英法翻译。 把注意力权重画出来,三种注意力各有一张脸5:

编码器自注意力(词 i 看源句哪些词):
全矩阵,但 padding 位置一列全零(被 masked softmax 封死)

解码器自注意力(词 i 看已生成哪些词):
下三角矩阵——右上角全零,每个词只看左边(掩码的效果)

编码器-解码器注意力(译文词 i 看源句哪些词):
全矩阵,可视化为逐词对齐——翻冠词时看冠词,翻名词时看名词

这张「三张脸」的检查清单,以后读任何 seq2seq Transformer 都能用。

顺带:视觉 Transformer(ViT) 证明了这套架构不吃数据类型—— 图像切成 16×16 的 patch 当「词」,加一个 特殊词, 过同一个编码器,取 的表示做分类。 要点:patch 化可以用「核大小=步长=patch 尺寸」的单个卷积一步完成; 归一化放在子层之前(pre-norm)比原版 post-norm 更好训; 大数据集上 ViT 显著赢 ResNet,小数据集上不如—— 归纳偏置少,就要用数据补6

3. scaling law:为什么 Transformer 吃掉了世界

第 12 章的对比表说注意力并行好、路径短。Transformer 还有第三个杀招: 它的性能随规模平滑增长,且增长模式可以外推—— scaling law(Kaplan et al. 2020):语言模型性能随 参数量、训练 token 数、训练算力分别按幂律增长7。 两个推论改变了行业:

  • 大模型样本效率更高:达到同一性能,大模型需要的训练 token 更少—— 「大」不只是能力强,还更省数据;
  • 可以花小钱算大账:在小规模上拟合幂律曲线,外推两个数量级—— GPT-3 的论文验证了这个外推基本成立8

「数据和算力会不会白堆?」Chinchilla(2022)给了修正: 同算力下,280B 参数的 Gopher 不如 70B 参数但喂 4 倍多 token(1.4 万亿)的 Chinchilla—— 模型大小和数据量要一起配平,此前的大模型普遍喂得不够9

4. 预训练三种模式:BERT、T5、GPT

Transformer 家族按「用哪一半」分三支,预训练目标各不同10:

encoder-only:BERT(2018)。 遮住输入里 15% 的词,让模型从双向上下文猜出被遮的词 (masked language modeling)——不需要任何人工标注,书与维基就是免费教材。 3.5 亿参数的 BERT 用 2500 亿 token 预训练, 微调时只加一个输出层,横扫 11 项 NLP 任务11。 (它还配了一个「预测两句是否相邻」的任务 NSP, 后来 RoBERTa 证明这个任务基本没用——训练目标也是会被证伪(被后来的实验证明不成立)的。)

encoder-decoder:T5(2019)。 把一切任务统一成「文本进、文本出」(text-to-text): 输入是「任务描述 + 内容」(如 "Summarize: <文章>"),输出是任务结果。 预训练目标是复原被破坏的文本: 随机把若干连续片段替换成特殊标记(), 让解码器把这些片段写回来12。 用 1 万亿 token(C4 语料——语料即训练用的文本集合,这里是清洗过的网页)预训练,110 亿参数的 T5-11B 微调后多点开花。

decoder-only:GPT 系列(2018 起)。 砍掉整个编码器,目标就是第 10 章的语言模型: 下一个词是什么——目标序列就是输入序列右移一位13。 这条线后来长成的产品,就是今天说的大语言模型——英文缩写 LLM(large language model),ChatGPT 就是它的后代。

GPT(1 亿参数)开了头;GPT-2(15 亿,40GB 文本)首次展示 「不更新参数也能做点别的任务」;GPT-3(最大版本 1750 亿参数, 3000 亿 token,交替层用稀疏注意力(每个位置只看一部分位置、不看全部的省算力变体))把这条路走成了主流14

5. in-context learning:不更新参数,怎么做新任务

GPT-2 埋的线索在 GPT-3 爆发:预训练语言模型可以只靠前缀条件完成任务—— 把「任务描述 + 几个示例 + 问题」写进输入, 模型续写出来的就是答案,一次梯度都不算15:

zero-shot:只写任务描述(「把英文翻成法文:cheese =>」)
one-shot: 描述 + 1 个示例
few-shot: 描述 + 几个示例

这叫 in-context learning(上下文学习——不更新参数,把任务描述和示例写进输入就当条件用)

GPT-3 论文里,few-shot 是随规模增长最快的曲线—— 模型越大,越会「看例子办事」16

后续的关键几步,书里也给了坐标: 指令微调(在许多「按指令写」的数据集上微调,提升 zero-shot 能力);

InstructGPT = GPT-3 + RLHF(用人类反馈的强化学习对齐意图), 它就是 ChatGPT 的直接前身17;

chain-of-thought(示例里带上中间推理步骤, 甚至一句「Let's think step by step」就能零样本(一个示例都不给、只给一句任务描述)激发推理)18

到这里,第 01 章开头「下一步词是什么」的那台机器, 和今天对话框里的 ChatGPT,中间的每一环都接上了: 语言模型(ch10)→ 注意力(ch12)→ Transformer(ch13)→ 预训练+规模化(ch13)→ 指令与对齐(ch13)。

6. 作者的判断与证据

书里给了证据的: 架构逐层规格;三种掩码的注意力图示; scaling law 幂律(引 Kaplan 2020 与 GPT-3 的验证图); 三种预训练模式的目标与数字(2500 亿/1 万亿/3000 亿 token)。

作者照实标注的: GPT-4 技术细节未公开,书里只能转述报告结论; 「emergent abilities(涌现——规模跨过某个门槛后突然出现的能力)」是个有争议的概念(书里用了引号式的转述); causal attention 这个名字「有误导性」——它与因果推断并无关系,作者专门吐槽19

判断(我们的,不是书里的): 三种模式的分工今天已经收敛: decoder-only 几乎通吃——原因不是它「更强」, 而是它的预训练目标(下一个词)与一切生成任务同构, 而 BERT 式理解任务也能在足够大的解码器里涌现。 读新架构论文时,先问「它的预训练目标是什么」, 比问「它的结构是什么」更能预测它的命运。 如果错,会错在: encoder-decoder 在超长输入(检索增强——先从资料库搜出相关段落、再让模型读——以及文档理解) 上仍有结构优势;「收敛到 decoder-only」是 2026 年的现状判断,不是终局。

7. 边界与局限

  • O(n²) 的注意力成本:GPT-3 用交替稀疏注意力缓解,长上下文仍是活跃战场;
  • scaling law 是经验律:Chinchilla 修正过一次(数据侧),未来还可能再修;
  • in-context learning 的能力来源没有完全的理论解释;
  • 本章(原书 2023 年停笔)之后的进展(R1 式推理模型等)不在书里,拆解不脑补。

8. 可带走的

  1. Transformer = 纯注意力的编码器-解码器;自注意力管混合,FFN 管变换;
  2. 每个子层:残差连接 + LN;解码器自注意力必须掩码保自回归;
  3. 三种注意力三张脸:全矩阵(编码器)、下三角(解码器)、对齐矩阵(编码器-解码器);
  4. scaling law:性能随参数/数据/算力按幂律涨;大模型样本效率更高;
  5. Chinchilla:模型与数据一起配平,大模型普遍喂不够;
  6. 三种预训练模式:BERT(遮词)、T5(复原片段)、GPT(下一个词);
  7. in-context learning:任务写进输入,不更新参数;few-shot 随规模涨得最快;
  8. GPT-3 → 指令微调 → RLHF(InstructGPT)→ ChatGPT:今天的对话模型是这么来的。

9. 原文地图

主题原书章原文位置
纯注意力架构The Transformer Architecturetext/75-the-transformer-architecture.txt:21(搜「solely based on attention」)
两/三子层、残差+LNThe Transformer Architecturetext/75-the-transformer-architecture.txt:97(搜「two sublayers」) · text/75-the-transformer-architecture.txt:106(搜「residual connection」) · text/75-the-transformer-architecture.txt:121(搜「third sublayer」)
掩码保自回归The Transformer Architecturetext/75-the-transformer-architecture.txt:135(搜「masked」)
positionwise FFNThe Transformer Architecturetext/75-the-transformer-architecture.txt:151(搜「positionwise feed-forward」)
ViT、pre-normTransformers for Visiontext/76-transformers-for-vision.txt:211(搜「pre-normalization」)
scaling law 幂律Large-Scale Pretrainingtext/77-large-scale-pretraining-with-transformers.txt:21(搜「power law」)
样本效率Large-Scale Pretrainingtext/77-large-scale-pretraining-with-transformers.txt:367(搜「sample efficiency」)
BERT MLM、2500 亿Large-Scale Pretrainingtext/77-large-scale-pretraining-with-transformers.txt:68(搜「masked language modeling」) · text/77-large-scale-pretraining-with-transformers.txt:109(搜「250 billion」)
T5 text-to-text、连续片段Large-Scale Pretrainingtext/77-large-scale-pretraining-with-transformers.txt:166(搜「text-to-text」) · text/77-large-scale-pretraining-with-transformers.txt:180(搜「consecutive spans」)
GPT 右移一位Large-Scale Pretrainingtext/77-large-scale-pretraining-with-transformers.txt:274(搜「shifted by one token」)
in-context learning、few-shot 最快Large-Scale Pretrainingtext/77-large-scale-pretraining-with-transformers.txt:313(搜「in-context learning」) · text/77-large-scale-pretraining-with-transformers.txt:333(搜「few-shot performance increases most rapidly」)
Chinchilla 1.4 万亿Large-Scale Pretrainingtext/77-large-scale-pretraining-with-transformers.txt:386(搜「1.4 trillion」)
RLHF、CoTLarge-Scale Pretrainingtext/77-large-scale-pretraining-with-transformers.txt:404(搜「reinforcement learning from human feedback」) · text/77-large-scale-pretraining-with-transformers.txt:423(搜「chain-of-thought prompting」)

Footnotes

  1. 出处:「The Transformer Architecture」第 21 段(text/75-the-transformer-architecture.txt:21,搜「solely based on attention」)。Vaswani et al. 2017。

  2. 出处:「The Transformer Architecture」第 151 段(text/75-the-transformer-architecture.txt:151,搜「positionwise feed-forward」)。

  3. 出处:「The Transformer Architecture」第 106 段(text/75-the-transformer-architecture.txt:106,搜「residual connection」)与第 113 段(text/75-the-transformer-architecture.txt:113,搜「layer normalization」)。

  4. 出处:「The Transformer Architecture」第 135 段(text/75-the-transformer-architecture.txt:135,搜「masked」)。

  5. 出处:「The Transformer Architecture」第 1165 段(text/75-the-transformer-architecture.txt:1165,搜「English--French machine translation」)与第 1228 段(text/75-the-transformer-architecture.txt:1228,搜「visualize the Transformer attention weights」)。

  6. 出处:「Transformers for Vision」第 211 段(text/76-transformers-for-vision.txt:211,搜「pre-normalization」)与讨论节(Fashion-MNIST 上 ViT 不如 CNN 的原因)。

  7. 出处:「Large-Scale Pretraining with Transformers」第 21 段(text/77-large-scale-pretraining-with-transformers.txt:21,搜「power law」)。Kaplan et al. 2020。

  8. 出处:「Large-Scale Pretraining with Transformers」第 367 段(text/77-large-scale-pretraining-with-transformers.txt:367,搜「sample efficiency」)与第 371 段(GPT-3 两个数量级的验证)。

  9. 出处:「Large-Scale Pretraining with Transformers」第 386 段(text/77-large-scale-pretraining-with-transformers.txt:386,搜「1.4 trillion」)。Hoffmann et al. 2022。

  10. 出处:「Large-Scale Pretraining with Transformers」第 41 段(text/77-large-scale-pretraining-with-transformers.txt:41,搜「encoder-only」)。

  11. 出处:「Large-Scale Pretraining with Transformers」第 68 段(text/77-large-scale-pretraining-with-transformers.txt:68,搜「masked language modeling」)与第 109 段(text/77-large-scale-pretraining-with-transformers.txt:109,搜「250 billion」)。NSP 在 RoBERTa(Liu et al. 2019)被证不太有用。

  12. 出处:「Large-Scale Pretraining with Transformers」第 166 段(text/77-large-scale-pretraining-with-transformers.txt:166,搜「text-to-text」)与第 180 段(text/77-large-scale-pretraining-with-transformers.txt:180,搜「consecutive spans」)。Raffel et al. 2019。

  13. 出处:「Large-Scale Pretraining with Transformers」第 274 段(text/77-large-scale-pretraining-with-transformers.txt:274,搜「shifted by one token」)。Radford et al. 2018。

  14. 出处:「Large-Scale Pretraining with Transformers」第 330 段(text/77-large-scale-pretraining-with-transformers.txt:330,搜「sparser」)。Brown et al. 2020。

  15. 出处:「Large-Scale Pretraining with Transformers」第 313 段(text/77-large-scale-pretraining-with-transformers.txt:313,搜「in-context learning」)。

  16. 出处:「Large-Scale Pretraining with Transformers」第 333 段(text/77-large-scale-pretraining-with-transformers.txt:333,搜「few-shot performance increases most rapidly」)。

  17. 出处:「Large-Scale Pretraining with Transformers」第 404 段(text/77-large-scale-pretraining-with-transformers.txt:404,搜「reinforcement learning from human feedback」)。Ouyang et al. 2022。

  18. 出处:「Large-Scale Pretraining with Transformers」第 423 段(text/77-large-scale-pretraining-with-transformers.txt:423,搜「chain-of-thought prompting」)与第 438 段(「Let's think step by step」,Kojima et al. 2022)。

  19. 出处:「Large-Scale Pretraining with Transformers」第 145 段(text/77-large-scale-pretraining-with-transformers.txt:145,搜「misleading」)。原文:「this name is common in the literature but is misleading as it has little connection to the proper study of causality」。