LESSON · 03
Attention
is
All
You Need.
2017 年那篇改变世界的论文。
2017 · Google Brain
- 8 人小队,被引用超 12 万次
- 任务:机器翻译
- 突破:完全抛弃 RNN/CNN
- 代价:训练只用了 8 张 P100
- → 7 年后,它驱动了整个 GenAI 时代
RNN vs Transformer
→
Transformer
- 全 token 并行
- GPU 友好
- 任意距离直接 Attention
- 快
"看
哪里"
的能力
读"它很可爱"时,"它"该看哪个名词?
self-attention
Attention(Q, K, V) = softmax( Q · K^T / √d_k ) · V
Q = X · W_Q ← 我"想问什么"
K = X · W_K ← 别人"能提供什么"
V = X · W_V ← 别人"实际给什么"
三步拆解
- ① 算相关性 · Q × K^T → 每个 token 对其他 token 的"关注度"
- ② 缩放归一化 · ÷√d_k → softmax 得到注意力权重
- ③ 加权求和 · × V → 得到上下文向量
- 本质:每个 token 用所有 token 的加权信息更新自己
多头
×8 / ×16 / ×128
多个观察视角并行,再拼起来。
为什么要多头
- 单头只能学一种"关系模式"
- 多头 = 多个并行注意力子空间
- 有的头看语法,有的看实体,有的看共指
- 结果 concat → 线性变换 → 输出
位置编码
- 问题:Attention 是无序的
- "我打你" vs "你打我" → 注意力会一样
- 解药:给 token 加上"位置向量"
- 正弦位置编码(原论文)
- RoPE 旋转位置编码(现代主流,Llama 等)
双塔结构(原始)
Encoder
- 看见整个输入
- 双向 Attention
- BERT 的形态
+
最后
只用 Decoder
就赢了。
GPT-1, 2018 → ChatGPT, 2022
Decoder-only 为何称王
- "预测下一个词"任务足够通用
- 可同时做生成 + 理解
- 规模化训练简单
- In-context Learning 涌现
70B 参数都在哪
- Embedding · ~5%
- Attention 权重(Q/K/V/O)· ~25%
- FFN(前馈层) · ~65%(最大头)
- LayerNorm + 其他 · ~5%
- FFN 才是知识的"主仓库",Attention 是"路由"
知道 Transformer 能帮你做什么决策
- 选模型大小 → 参数量 ≈ 层数 × 隐藏维度²,越大推理越慢/越贵
- 设 max_tokens → 生成成本 = context 长度 × 层数,长输出贵
- 选 MoE 省钱 → 只激活部分参数,等效大模型能力但推理快
- 理解 context window → 影响 RAG 设计(塞多少 chunk)
- 调 temperature → 本质是 softmax 前除的那个数,越大越随机
本课收获
Self-Attention 公式
Q/K/V 拆解
多头
位置编码
Decoder-only
下一课 · Prompt 工程:好的 Prompt = 半个产品