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

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 独有的新东西。 其余全部是你已经学过的零件,只是组合方式变了

💡 注意力的一句话直觉

   Attention(Q,K,V) = softmax(QKᵀ/√d)·V
                       ↑        ↑     ↑
                       │        │     └─ 加权求和"取回来的信息"
                       │        └─ 算"我和每个位置有多相关"
                       └─ 把相关度变成和为 1 的权重

   💡 人话:【一次可微分的、软的查表操作】
   · Q = 我要查什么
   · K = 每个位置的"索引"
   · V = 每个位置的"内容"

🔗 和你学过的东西对上号: 这和推荐算法的双塔召回完全同构—— 用户向量(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 论文里的经典对比):

   训练数据量        ResNet   ViT
   ImageNet(1.3M)     赢 ✅    输
   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 旋转位置编码 把位置编码成旋转,天然表达相对位置 可外推到更长序列,现在的主流。🔗 全景导论 02b它为什么要「加在每一层的 Q/K 上」而不是像正弦编码那样只加在输入端——这一条决定了它能不能外推
ALiBi 直接给注意力分数加一个随距离递减的偏置 极简,外推性好

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

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

   语言的规律大多是【相对】的:
   · 形容词修饰紧跟其后的名词  ← 关心的是"紧跟",不是"在第几位"
   · 代词指代前文某处          ← 关心的是"多远"

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

🔗 RoPE 的外推能力正是全景导论第 3 章说的"上下文窗口怎么撑到 100 万"的关键之一。


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

   Transformer 留下的两个大坑:
   ① O(n²) 复杂度  → 长序列吃不消
   ② 推理时 KV Cache 占显存 → 部署贵
方向 在解什么 代表
稀疏/线性注意力 ① 把 O(n²) 降下来 Longformer、Performer
状态空间模型 ①+② 兼得并行与线性复杂度 Mamba ⭐("类 RNN 的复活")
MoE 混合专家 参数量大但计算量不变 Mixtral、DeepSeek。🔗 全景导论 02d为什么只替换 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)。

🛑 可以停在这里

走神救援

Transformer没有一个全新部件:QK点积=线性模型、softmax=逻辑回归、多头=CNN多卷积核、FFN=MLP、残差=ResNet、LayerNorm=正则、因果掩码=序列建模,只有位置编码是新的。注意力=可微的软查表(Q要查什么/K索引/V内容),和推荐的双塔召回同构,区别只是软选vs硬选。除以√d_k 是因为点积方差=d,不除 softmax 会饱和成 one-hot、梯度趋 0。核心权衡:归纳偏置 vs 数据量——偏置强(CNN/RNN)小数据好大数据成枷锁,偏置弱(Transformer)反之;ViT vs ResNet 的拐点在 14M 数据附近。规律:"数据算力足够时让模型自己学总赢过人工先验",⚠️但书:你的小数据项目大概率不满足这个前提——数据稀缺时归纳偏置是朋友。位置编码:注意力是置换等变的所以必须补位置;相对位置(RoPE)比绝对位置好,因为语言规律大多是相对的,也因此能外推撑起长上下文。Transformer 留下两坑:O(n²)KV Cache 显存——Mamba 是 RNN 思想的回归,用可并行扫描补上 RNN 的并行短板。

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

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