1补三块数学 —— 就这么多
约 3 小时① 向量 / 矩阵乘法 + 维度对齐。 整篇论文 90% 的操作就是"这个矩阵乘那个矩阵"。⭐ 看懂维度怎么对上,比会算重要。
② 点积的几何意义 —— 这是全篇的钥匙。 a·b 衡量两个向量有多对齐:方向一致 → 大;垂直 → 0;相反 → 负。
③ softmax。 把一串任意数字变成加起来等于 1 的权重:先 exp(),再各自除以总和。大的变得更大(指数放大),但总量守恒。
先说最大的那个解锁:这篇论文不需要微积分,也不需要懂反向传播。它讲的是前向结构(数据怎么流过去),不是学习过程。这一下砍掉大半门槛——真正要补的数学只有三块,加起来大约 3 小时。
注意力就是一次加权平均,而权重是用"相似度"算出来的。 就这么简单。剩下的全是把这件事重复、并行、堆叠起来。
| 级别 | 你能做到 | 要走哪几步 | 时间 |
|---|---|---|---|
| A | 知道它在说什么、为什么是分水岭 | Step 1 ② + Step 2 | 半天 |
| B 推荐 | 逐行读懂公式和两张图,能给别人讲清楚 | Step 1 → 4 | 8–12 小时 摊在 1–2 周 |
| C | 从零手写一个能跑的 | Step 1 → 5 | B + 约 10 小时 |
① 向量 / 矩阵乘法 + 维度对齐。 整篇论文 90% 的操作就是"这个矩阵乘那个矩阵"。⭐ 看懂维度怎么对上,比会算重要。
② 点积的几何意义 —— 这是全篇的钥匙。 a·b 衡量两个向量有多对齐:方向一致 → 大;垂直 → 0;相反 → 负。
③ softmax。 把一串任意数字变成加起来等于 1 的权重:先 exp(),再各自除以总和。大的变得更大(指数放大),但总量守恒。
先建立骨架,再去看论文的严格表述。顺序反了会很痛苦——论文是写给同行看的,它默认你已经知道它在解决什么问题。
Jay Alammar 的图解是公认最好的入门(有中译)。3Blue1Brown 的两集视频更直观,可以二选一或都看。
原文编排对初学者不友好——它先讲整体架构,可你还不知道零件是什么。按下面的顺序读,每一节都建立在上一节之上。
用 d=4、序列长度 3 的玩具例子,把 softmax(QKᵀ/√d)V 从头算一次。你是工程师,用 numpy 十几行就行——不要用现成库,自己写矩阵乘法那几行。
然后做一件事:把输入的三行打乱顺序,再算一遍。 你会发现输出只是跟着换了行、值完全没变——这就是卡点 ④ 说的"置换不变",亲手撞见比读十遍都管用。
Karpathy 的《Let's build GPT: from scratch, in code, spelled out》——约 2 小时视频,从 bigram 基线一路搭到多头注意力 + 残差 + LayerNorm,终点就是 nanoGPT 的内核。跟着敲,别只看。
⭐ 顺带一提:Karpathy 现在在 Anthropic,也在你的 x-feed watchlist 里。
如果一个向量既当"我在找什么"又当"我是什么",模型就没法区分「搜索者」和「被搜索者」两个角色。三个投影矩阵(Wq / Wk / Wv)让它能把这两件事分开学。
维度越高,点积的方差越大 → 数值变得很大 → softmax 饱和成 one-hot → 梯度接近 0,训不动。除以 √dk 把方差拉回 1。
⚠️ 论文只用一个脚注提这件事,但工程上非常实在——很多"为什么训不动"的坑都在这类缩放上。
一次注意力只能表达一种关注模式。多头 = 并行跑多组,各自学不同的关系(有的学句法、有的学指代)。
⭐ 不是让它更强,是让它能同时表达多种关系。 这个区分很关键——很多人把多头理解成"堆算力",那是误读。
注意力是置换不变的:把输入顺序打乱,输出集合完全一样。它根本不知道"顺序"这回事。 所以位置必须手动注入进去。
⭐ "attention 天生没有顺序概念"这件事本身,才是理解这个架构的关键。 Step 4 手算时打乱输入试一次,你会亲眼看到。
不让它看到未来的词,否则训练时等于抄答案。实现上就是把相似度矩阵的右上三角设成 −∞,softmax 之后自动变 0。
| 论文里的做法(2017) | 今天的主流 |
|---|---|
| Encoder–Decoder 双塔(为翻译任务设计) | Decoder-only(GPT 系)。所以你会发现论文左半边跟现在的 LLM 关系不大 |
| 正弦位置编码 | RoPE(旋转位置编码)为主 |
| Post-LayerNorm | Pre-LayerNorm(更稳定) |
| 那一行核心注意力公式 | ⭐ 没变。所有后来的东西都建在它上面 |
上下文翻倍 → 计算量和显存占用变四倍。 再加上推理时要缓存每一层的 K 和 V(KV cache),长上下文 = 线性增长的高带宽显存需求。
| 资料 | 类型 | 时长 | 用在哪一步 |
|---|---|---|---|
| 3Blue1Brown 线性代数的本质 | 视频系列 | ~1.5h | Step 1 · 第 1–4 集(矩阵乘法)+ 第 9 集(点积) |
| The Illustrated Transformer | 图解长文 | ~1h | Step 2 · 建立骨架,有中译 |
| 3b1b Ch.5 · 什么是 GPT | 视频 | 27min | Step 2 · 可视化直觉 |
| 3b1b Ch.6 · 注意力机制 | 视频 | 26min | Step 2 · Q/K/V 的最佳可视化 |
| Attention Is All You Need | 论文 | 15 页 | Step 3 · 按页内给的顺序读 |
| The Annotated Transformer | 代码笔记 | ~2h | Step 4 · Harvard NLP,逐行代码对照论文 |
| Neural Networks: Zero to Hero | 课程 | ~10h | Step 5 · 其中「Let's build GPT」是本篇的直接实现 |
| nanoGPT | 代码库 | — | Step 5 · Step 5 视频的终点 |