🏠 总目录📚 本教程 14 · 通往 Transformer ← →
📑 本页目录(点开跳转)

14 / 先看直觉,再看细节

先看它向谁取信息,
再把熟悉的零件拼起来。

注意力按相关程度混合不同位置的信息;这页负责把它和前面学过的概念连起来。

先抓住一个具体结果

权重决定取回多少

若两个位置的注意力权重是 0.8、0.2,内容分别为 10、0,混合结果就是 8。权重来自当前查询与各个键的匹配,不是人工给定的重要性排名。

缩放点积注意力(未写掩码)

$$\operatorname{Attention}(Q,K,V)=\operatorname{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right)V$$

接下来,按需要选一项

你现在想看什么?

这些入口是选择,不是必须按顺序完成的任务。

可以停在这里

注意力按相关程度混合不同位置的信息;这页负责把它和前面学过的概念连起来。

需要更多细节时,继续看完整正文 →
继续探索

原有正文、图解和例子都在下方。按需跳转,不必一次读完。

14 · 通往 Transformer

⏱ 24 分钟 | ⭐ 本教程的收口章


🎯 一句话

这一章不重新讲 Transformer(全景导论主线 2 · 模型怎样看懂一句话已经讲透了), 而是把你这十三章学的所有零件,和 Transformer 里的每一个部件对上号—— 你会发现:它没有一个部件是全新的。


🧩 一、Transformer 的每个零件,你都学过

Transformer 的部件 你在哪学的 本质是什么
注意力的 QK 点积 第 3 章线性模型 / 推荐算法第 5 章 就是点积算相关度
除以 √d_k 第 9 章(数值稳定) 防止点积过大导致 softmax 饱和
注意力权重的 softmax 第 3 章逻辑回归 把分数变成和为 1 的权重
多头 第 12 章 CNN 的多个卷积核 并行多组,各抓一种模式
FFN 前馈层 第 7 章 MLP 线性 + 激活 + 线性
残差连接 第 12 章 ResNet 梯度高速公路(那个 +I)
LayerNorm 第 10 章正则化 稳定训练(不跨样本,所以 batch=1 也行)
位置编码 (新的) 因为注意力本身没有顺序概念,得额外告诉它
因果掩码 第 13 章序列建模 不许偷看未来
Dropout 第 10 章 正则
AdamW + Warmup + Cosine 第 9 章 优化配置
交叉熵损失 第 3 章 猜下一个 token = 一个 V 类分类问题

🔑 只有「位置编码」是 Transformer 独有的新东西。 其余全部是你已经学过的零件,只是组合方式变了。

💡 注意力的一句话直觉

沿箭头读:Q 与 K 决定相关性,softmax 把分数归一化,最后混合 V 中的信息。这里的 d 是键向量的维度;因果掩码和多头拼接未展开。Q:我要查什么K:位置的索引QKᵀ / √d:匹配并缩放softmax:转成权重每个查询对键位置的权重和为 1V:取回的内容权重 × V:加权求和Attention 的输出
沿箭头读:Q 与 K 决定相关性,softmax 把分数归一化,最后混合 V 中的信息。这里的 d 是键向量的维度;因果掩码和多头拼接未展开。

🔗 和你学过的东西对上号: 这和推荐算法的双塔召回完全同构—— 用户向量(Q)和物品向量(K)点积算相关度,取 top-k。 区别只是:召回取 top-k 硬选,注意力用 softmax 软选(且可微)。

📐 为什么要除以 √d_k(想看再点)

假设 q、k 的每个分量独立、均值 0 方差 1,那么 $q\cdot k = \sum_{i=1}^{d}q_ik_i$ 的方差是 d。

结果对照

d = 64→点积的标准差 ≈ 8
d = 512→点积的标准差 ≈ 22.6
softmax 的输入动辄几十
exp 之后差异被极度放大→几乎变成 one-hot
【梯度趋近于 0】,训不动 💀

除以 $\sqrt{d}$ 让方差回到 1,softmax 就工作在健康区间。

💡 这和第 9 章说的"数值稳定"是同一类问题—— 深度学习里大量的"除以某个数"都是在控制方差。

⭐ 公式看懂了,接着手写一遍:附录 C 第 2 题是这段推导的代码版(含因果掩码),第 3 题把它扩成多头。 那里会告诉你一个只有动手才会碰到的坑:除的是 $\sqrt{d_k}$(每个头的维度)不是 $\sqrt{d_{model}}$——单头时两者相同, 多头时差 $\sqrt{h}$ 倍,形状全对、不报错、还能训,但数值是错的。


🔄 二、四代架构的核心权衡

对比维度 MLP(第 7 章) CNN(第 12 章) RNN(第 13 章)
归纳偏置 无(最通用) 局部 + 平移 时序 + 马尔可夫
参数效率 差 好 好
并行 ✅ ✅ ❌ 串行
长距离 ✅ ❌ 感受野有限 ❌ 会遗忘
复杂度 O(n) O(n) O(n) 时间
数据需求 中 中 中

💡 核心权衡:归纳偏置 vs 数据量

对照

归纳偏置强(CNN/RNN):

✅ 小数据上表现好(先验帮了忙)

❌ 大数据上成为枷锁(先验限制了它)

归纳偏置弱(Transformer):

❌ 小数据上容易过拟合

✅ 大数据上能学到比人设计的先验更好的模式 ⭐

一组真实的数字(ViT 论文里的经典对比):

数据量改变谁占上风

ViT 论文中的经典对比
训练数据量ResNetViT该怎么看
ImageNet(1.3M)赢输小数据时,CNN 的归纳偏置帮了忙
ImageNet-21k(14M)持平持平数据变多,先验优势在变小
JFT-300M(300M)输赢拐点:让模型自己学开始更有利

同样的模型,数据量会决定谁赢。

🔑 这解释了深度学习史上一个反复出现的规律("苦涩的教训"): 当数据和算力足够时,「让模型自己学」总是赢过「人工设计的先验」。

CNN 的平移不变是人给的,ViT 让模型自己学 → 大数据上 ViT 赢。 RNN 的时序结构是人给的,Transformer 让模型自己学 → 大数据上 Transformer 赢。

⚠️ 但这条规律有个重要的但书:

信息关系

"苦涩的教训"成立的前提是【数据和算力足够】
你的项目大概率不满足这个前提:
· 几万行表格数据→树模型仍然是王者
· 几百张图→预训练 CNN + 冻结主干 仍然最优
· 领域数据稀缺→归纳偏置是你的朋友,不是敌人 ⭐
⭐ 别把"大模型时代的结论"套到"你的小数据项目"上

🔗 这是 数学原理第 11 章 NFL 的直接推论: 算法的"专长"是守恒的。Transformer 把专长放在了"大数据"那一端。


🎓 三、位置编码:唯一的新东西

问题:注意力是「对所有位置加权求和」,打乱顺序结果完全一样——它天生不知道谁在前谁在后。

要点

"狗咬人" 和 "人咬狗" 在纯注意力眼里是一样的 💀

💡 一个更准确的说法:注意力是置换等变(permutation equivariant)的—— 你打乱输入顺序,输出也只是跟着打乱,信息完全没变。

解法:把位置信息加进输入向量里。

方案 做法 优缺点
可学习位置嵌入 每个位置一个可训练向量(BERT) 简单;但训练时最长 512,就永远只能 512 ❌
正弦位置编码 用不同频率的 sin/cos(原始 Transformer) 理论上能外推,实际效果一般
RoPE 旋转位置编码 ⭐ 把位置编码成旋转,天然表达相对位置 可外推到更长序列,现在的主流。🔗 全景导论 专题 C · RoPE:位置感 讲它为什么把位置混进注意力用的 Q、K,而不是像正弦编码那样只在输入端加一张位置名片——这一条决定了它能不能外推
ALiBi 直接给注意力分数加一个随距离递减的偏置 极简,外推性好

💡 为什么"相对位置"比"绝对位置"好

对照

绝对位置:告诉模型"这是第 5 个词"

相对位置:告诉模型"这两个词隔了 3 个位置" ⭐

语言的规律大多是【相对】的:

· 形容词修饰紧跟其后的名词 ← 关心的是"紧跟",不是"在第几位"

· 代词指代前文某处 ← 关心的是"多远"

⭐ 所以相对位置编码泛化更好,也更容易外推到长序列

🔗 RoPE 的外推能力正是全景导论主线 1 · 文字怎样进入模型说的"上下文窗口怎么撑到 100 万"的关键之一。


🧱 四、Transformer 之后:还在解同两个问题

流程图

Transformer 留下的两个大坑:
① O(n²) 复杂度→长序列吃不消
② 推理时 KV Cache 占显存→部署贵
方向 在解什么 代表
稀疏/线性注意力 ① 把 O(n²) 降下来 Longformer、Performer
状态空间模型 ①+② 兼得并行与线性复杂度 Mamba ⭐("类 RNN 的复活")
MoE 混合专家 参数量大但计算量不变 Mixtral、DeepSeek。🔗 全景导论 专题 D · MoE 讲为什么只替换 FFN 不替换注意力、Top-k 路由怎么选、显存要按总参数算而不是激活参数;路由的隐变量视角在数学原理第 13 章
KV Cache 压缩 ② 降低推理显存 MQA / GQA

💡 注意 Mamba 的意义:它本质上是 RNN 思想的回归—— RNN 输在并行,Mamba 用"可并行的扫描算法"补上了这个短板,同时保住了 O(n) 复杂度。 🔗 第 13 章讲的那两个硬伤,第二个正在被解决。


🗺️ 五、你现在的完整地图

第 2 章:机器学习三要素(模型 / 损失 / 优化) 所有内容都在这个框架里 第 3 章 线性模型 第 7 章 MLP 深度学习 第 8 章 反向传播(怎么训) 第 9 章 优化器(怎么迈步) 第 10 章 正则化(怎么防过拟合) 第 11 章 调试(不 work 怎么办)⭐ 第 12 章 CNN 图像 第 13 章 RNN 序列 Transformer 全景导论 第 4 章 树模型 表格数据的王者 第 5 章 评估与过拟合 ⭐ —— 贯穿全部,最重要
十四章的依赖关系图。第 3 章的线性模型是分岔口:往上接第 7 章 MLP 通向深度学习(8–11 章是训练它的四件工具,再往下分出 CNN / RNN / Transformer 三条路),往下接第 4 章树模型通向表格数据。第 5 章评估与过拟合贯穿全部。

🎯 六、学完这十四章,你能做什么

能力 对应章节
判断该用树模型还是神经网络 第 2、4、7 章
搭一个能训起来的神经网络 第 7–10 章
模型不 work 时能自己诊断 ⭐ 第 11 章
不被虚假的高分骗到 ⭐ 第 5 章
读懂 CNN / RNN / Transformer 的论文结构图 第 12–14 章
回头看推荐算法/Kaggle/全景导论,知道每个结论的根因 全部

👉 接下来往哪走

你想要 去哪
动手把这些变成手感 第 17 章实战项目 + 三个挑战项目
搞清楚"为什么" 《机器学习的数学原理》 ⭐
深入一个完整领域 《推荐算法》
把手艺打磨到极致 《Kaggle 竞赛方法论》
前沿:大模型和智能体 《大模型全景导论》 → 《智能体工程教程》

✅ 检查点

  1. Transformer 里唯一"新"的部件是什么?其余的都对应你学过的什么?
  2. 注意力的一句话直觉是什么?它和推荐系统的双塔召回有什么关系?
  3. 为什么 QK 点积要除以 √d_k?不除会怎样?
  4. 归纳偏置强弱和数据量是什么关系?ViT vs ResNet 的拐点在哪?
  5. "苦涩的教训"的但书是什么?为什么你的项目可能不适用?
  6. 为什么注意力需要位置编码?"置换等变"是什么意思?
  7. 为什么相对位置编码比绝对位置编码好?
  8. Transformer 留下的两个大坑是什么?Mamba 在解哪个?
👀 答案
  1. 位置编码。其余:QK点积=线性模型的点积、softmax=逻辑回归、多头=CNN 的多个卷积核、FFN=MLP、残差=ResNet、LayerNorm=正则化、因果掩码=序列建模、交叉熵=第 3 章。
  2. 一次可微分的、软的查表操作(Q=要查什么,K=索引,V=内容)。和双塔召回完全同构——都是向量点积算相关度;区别是召回取 top-k 硬选,注意力用 softmax 软选且可微。
  3. 因为点积的方差是 d(d=512 时标准差 ≈22.6),softmax 输入过大会饱和成 one-hot,梯度趋近于 0 训不动。除以 √d 让方差回到 1。
  4. 偏置强(CNN/RNN)在小数据上好(先验帮忙),大数据上成枷锁;偏置弱(Transformer)小数据易过拟合,大数据上能学到更好的模式。拐点在 ImageNet-21k(14M) 附近——1.3M 时 ResNet 赢,300M 时 ViT 赢。
  5. 但书是「数据和算力足够」。你的项目大概率不满足:几万行表格 → 树模型仍是王者;几百张图 → 预训练+冻结更优。数据稀缺时归纳偏置是朋友不是敌人。
  6. 因为注意力是置换等变的——打乱输入顺序,输出也只是跟着打乱,信息完全没变,"狗咬人"和"人咬狗"一样。
  7. 因为语言的规律大多是相对的(形容词修饰紧跟其后的名词、代词指代前文多远处),关心的是距离不是绝对位次。所以泛化更好、更容易外推到长序列。
  8. ①O(n²) 复杂度 ②KV Cache 占显存。Mamba 主要解 ①(也帮 ②)——它是 RNN 思想的回归,用可并行的扫描算法补上 RNN 的并行短板,同时保住 O(n)。

🛑 可以停在这里

⚡ 走神救援

先记住这几件事

  • Q 与 K 计算匹配分数,缩放和 softmax 得到权重,再用权重混合 V。
  • 注意力让位置之间直接交换信息;位置编码补充序列的顺序。
  • 残差、归一化和前馈层共同组成完整模块,不是只靠一条 Attention 公式。
  • 自回归预测要遮住未来位置;理解单头后再看多头与整层结构。

下一节 👉 15-PyTorch实战手册.md

打卡记录保存在你的浏览器里,首页能看到总进度