《Attention Is All You Need》论文精读
零、论文速览
| 项目 | 内容 |
|---|---|
| 标题 | Attention Is All You Need |
| 作者 | Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Łukasz Kaiser, Illia Polosukhin |
| 机构 | Google Brain / Google Research / University of Toronto |
| 发表 | NIPS 2017 |
| 核心贡献 | 提出 Transformer——第一个完全基于注意力机制的序列转导模型,彻底摒弃循环和卷积 |
⚡ 这篇论文奠定了 GPT、BERT、Claude 等一切现代大语言模型的基础架构。理解 Transformer,就是理解当代 AI 的起点。
一、背景与动机
1.1 此前主流方法的局限
| 方法 | 代表 | 核心痛点 |
|---|---|---|
| RNN / LSTM / GRU | GNMT, Seq2Seq | 顺序计算 $ht = f(h{t-1}, x_t)$,训练无法并行;长序列受限于显存 |
| CNN | ByteNet, ConvS2S | 两端之间的信号路径随距离线性或对数增长,远距离依赖难学 |
| RNN + Attention | Bahdanau et al. | Attention 仅作为 RNN 的辅助插件,循环瓶颈依然存在 |
1.2 核心洞察
注意力机制本身就能以 $O(1)$ 的常数操作数建模任意两个位置之间的依赖关系。那么问题来了——
为什么不把 RNN 和 CNN 统统丢掉,只用注意力?
这就是 Transformer 的出发点。
二、模型架构全景
2.1 编码器-解码器总览
Transformer 沿用经典的 Encoder-Decoder 框架:
- Encoder:将输入序列映射为连续表示 $\mathbf{z}$
- Decoder:基于 $\mathbf{z}$ 自回归地逐 token 生成输出(每步把已生成的 token 作为额外输入)
2.2 编码器
每层两个子层,每个子层后都有 残差连接 + 层归一化:
| 参数 | 值 | 说明 |
|---|---|---|
| 层数 $N$ | 6 | 编码器和解码器各 6 层 |
| 模型维度 $d_{\text{model}}$ | 512 | 所有子层 + 嵌入层的输出维度 |
| FFN 内部维度 $d_{ff}$ | 2048 | $\text{FFN}(x) = \max(0, xW_1 + b_1)W_2 + b_2$ |
2.3 解码器
比编码器多一个子层(三类注意力,见下表):
| 子层 | Q 来源 | K、V 来源 | 功能 |
|---|---|---|---|
| 掩码多头自注意力 | 上一层 Decoder | 上一层 Decoder | 解码器内自注意,掩码防止看到未来位置 |
| 编码器-解码器注意力 | 上一层 Decoder | Encoder 最终输出 | 解码器每个位置关注全部输入 |
| 前馈网络 | — | — | 同编码器 |
🔑 自回归性质:输出嵌入偏移一个位置 + 掩码机制,确保位置 $i$ 的预测只能依赖位置 $< i$ 的已知输出。
三、注意力机制——Transformer 的灵魂
3.1 缩放点积注意力
注意力函数的本质:给定一个 查询(Query),在一组 键值对(Key-Value) 中做软检索,输出值的加权和:
| 术语 | 含义 | 维度 |
|---|---|---|
| $Q$(Query) | “我要找什么” | $n_q \times d_k$ |
| $K$(Key) | “我有什么可供匹配” | $n_k \times d_k$ |
| $V$(Value) | “匹配后提取什么内容” | $n_k \times d_v$ |
| $\frac{1}{\sqrt{d_k}}$ | 缩放因子——核心创新 | 标量 |
为什么必须缩放?
假设 $\mathbf{q}$ 和 $\mathbf{k}$ 的分量是独立随机变量,均值 $0$,方差 $1$。则:
当 $d_k$ 很大时,点积值巨大 $\to$ softmax 输出趋近于 one-hot $\to$ 梯度 $\approx 0$,训练停滞。
除以 $\sqrt{d_k}$ 将方差拉回 $1$,解决了梯度消失问题。
3.2 多头注意力
不做一个大而全的注意力,而是并行做 $h$ 个小型注意力,各自在不同子空间中捕捉信息:
| 参数 | 值 | 说明 |
|---|---|---|
| 头数 $h$ | 8 | 并行注意力数 |
| 每头维度 | $dk = d_v = d{\text{model}} / h = 64$ | 降维后计算 |
| 投影矩阵 | $Wi^Q, W_i^K \in \mathbb{R}^{d{\text{model}} \times dk}$,$W_i^V \in \mathbb{R}^{d{\text{model}} \times dv}$,$W^O \in \mathbb{R}^{hd_v \times d{\text{model}}}$ | 全部可学习 |
🎯 多头的好处:不同头关注不同表示子空间——有的头看句法,有的头看语义,有的头做指代消解。单头会通过平均抹杀这种多样性。
每头维度降低为原来的 $1/h$,所以总计算量与全维度单头注意力基本持平。
四、位置编码——赋予序列以”顺序”
4.1 为什么需要?
Transformer 没有循环也没有卷积,本身对 token 顺序无感知。如果只是把词嵌入输进去,”A loves B” 和 “B loves A” 对模型来说一模一样。必须注入位置信息。
4.2 正弦-余弦方案
论文采用的是固定三角函数编码,而非可学习的嵌入:
- $pos$:token 在序列中的位置
- $i$:编码向量的维度索引($0, 1, \dots, d_{\text{model}}/2 - 1$)
- 波长从 $2\pi$ 到 $10000 \cdot 2\pi$,呈几何级数分布——不同维度对应不同频率
4.3 选正弦的理由
- 相对位置可线性表示:对任意固定偏移 $k$,$PE{pos+k}$ 可表示为 $PE{pos}$ 的线性函数 $\to$ 模型容易学到相对位置
- 外推能力:训练时没见过的更长序列,正弦函数也能给出合理编码
- 实验验证:学习式嵌入与正弦编码效果几乎相同(BLEU 差仅 0.1),正弦胜在外推
使用时将位置编码直接加到输入嵌入上:
五、为什么自注意力更优?
论文从三个维度系统对比自注意力、RNN 和 CNN:
| 指标 | 自注意力 | RNN | CNN | 受限自注意力 |
|---|---|---|---|---|
| 每层复杂度 | $O(n^2 \cdot d)$ | $O(n \cdot d^2)$ | $O(k \cdot n \cdot d^2)$ | $O(r \cdot n \cdot d)$ |
| 最少顺序操作 | $\mathbf{O(1)}$ ✨ | $O(n)$ ❌ | $O(1)$ | $O(1)$ |
| 最大路径长度 | $\mathbf{O(1)}$ ✨ | $O(n)$ ❌ | $O(\log_k n)$ | $O(n/r)$ |
$n$ — 序列长度;$d$ — 表示维度;$k$ — 卷积核宽度;$r$ — 受限注意力的邻域大小
三条关键结论:
① 并行性碾压 RNN:自注意力只需 $O(1)$ 个顺序操作,RNN 需要 $O(n)$——这是 Transformer 训练快得多的根本原因。
② 长距离依赖一马平川:任意两个位置之间的信号路径长度为常数 $O(1)$,RNN 需要穿越 $O(n)$ 的长度。
③ 当 $n < d$ 时计算效率也占优:机器翻译中句子大多较短($n$ 小),自注意力比 RNN 更快。对于超长序列,可通过受限注意力(只看 $r$ 大小的邻域)进一步优化。
六、训练方法
6.1 数据与批次
| 任务 | 数据集 | 规模 | 编码 |
|---|---|---|---|
| EN → DE | WMT 2014 | 450 万句对 | Byte-Pair Encoding(37K 共享词表) |
| EN → FR | WMT 2014 | 3600 万句对 | Word-Piece(32K 词表) |
每个训练 batch 约含 25000 源 token + 25000 目标 token。
6.2 硬件与速度
| 配置 | GPU | 每步耗时 | 总步数 | 总时长 |
|---|---|---|---|---|
| Base | 8 × P100 | 0.4 s | 100K | 12 小时 ⚡ |
| Big | 8 × P100 | 1.0 s | 300K | 3.5 天 |
6.3 优化器策略
使用 Adam($\beta_1 = 0.9$,$\beta_2 = 0.98$,$\epsilon = 10^{-9}$),配合自定义的 warmup + 衰减学习率:
- 前 4000 步:学习率线性增加(warmup)
- 之后:按步数的平方根反比递减
6.4 正则化
| 方法 | 设置 | 说明 | ||
|---|---|---|---|---|
| 残差 Dropout | $P_{drop} = 0.1$ | 施加于每个子层输出、嵌入与位置编码之和 | ||
| 标签平滑 | $\epsilon_{ls} = 0.1$ | 将正确标签概率从 1.0 平滑到 $(1 - \epsilon{ls}) + \epsilon{ls}/ | V | $,损害困惑度(PPL)但提升 BLEU |
七、实验结果
7.1 机器翻译
| 模型 | EN-DE BLEU | EN-FR BLEU | 训练成本 (FLOPs) |
|---|---|---|---|
| GNMT + RL | 24.6 | 39.92 | $2.3 \times 10^{19}$ |
| ConvS2S | 25.16 | 40.46 | $9.6 \times 10^{18}$ |
| MoE | 26.03 | 40.56 | $2.0 \times 10^{19}$ |
| GNMT + RL Ensemble | 26.30 | 41.16 | $1.8 \times 10^{20}$ |
| ConvS2S Ensemble | 26.36 | 41.29 | $7.7 \times 10^{19}$ |
| Transformer (base) | 27.3 | 38.1 | $\mathbf{3.3 \times 10^{18}}$ ⚡ |
| Transformer (big) | 28.4 🏆 | 41.8 🏆 | $2.3 \times 10^{19}$ |
🔥 三大亮点:
- Big 模型 EN-DE 得分 28.4 BLEU,比之前最好的集成模型还高出 2.0+
- Base 模型训练成本仅为竞品的 1/20 ~ 1/50
- EN-FR 以不到前最佳模型 1/4 的训练成本刷新单模型记录
7.2 消融实验
| 变体 | 关键发现 |
|---|---|
| (A) 头数 | 单头差 0.9 BLEU;头太多也降。8 头最优 |
| (B) 键维度 $d_k$ | 减小 $d_k$ 显著损害质量 $\to$ 点积”兼容性匹配”并不简单,更复杂的匹配函数可能有益 |
| (C/D) 模型规模 & Dropout | 越大越好;Dropout 对防过拟合至关重要 |
| (E) 位置编码 | 学习式嵌入 $\approx$ 正弦编码(几乎无差异) |
7.3 句法分析(泛化验证)
在 WSJ Penn Treebank 选区句法分析任务中:
| 设置 | 方法 | F1 |
|---|---|---|
| 仅 WSJ 训练集 | Transformer (4层) | 91.3 |
| 仅 WSJ 训练集 | Dyer RNNG | 91.7 |
| 半监督 | Transformer (4层) | 92.7 🏆 |
| 半监督 | Vinyals & Kaiser | 92.1 |
| 多任务 | Luong et al. | 93.0 |
| 生成式 | Dyer RNNG | 93.3 |
🔑 值得一提:仅用 4 万句 WSJ 数据训练,Transformer 就超越了 BerkeleyParser——后者需要大量任务特定调优。
八、注意力可视化——模型”在想什么”
论文附录的可视化是理解 Transformer 内部行为的关键窗口:
8.1 长距离依赖追踪
在 “making…more difficult” 的翻译中,Encoder 第 5 层的多个注意力头准确捕获了动词 making 与其远端补足语之间的依赖——尽管中间隔了十几个 token。
8.2 指代消解
某些注意力头对代词 its 与其先行词(The Law)的连接展现出极其尖锐(sharp)的注意力分布——模型清楚地”知道”它在指什么。
8.3 句法分工
不同注意力头学会了不同的句法角色:
- 有的头专注名词短语的边界
- 有的头追踪动词-宾语的搭配
- 有的头捕捉介词短语的附着关系
💡 这说明多头注意力并非冗余——不同头确实自发地学到了互补的语言学特征。
九、总结与影响
论文核心贡献一览
| 贡献维度 | 具体内容 |
|---|---|
| 架构革命 | 第一个完全基于注意力的序列模型,彻底抛弃 RNN/CNN |
| 并行性突破 | 训练速度飞跃(12 小时 SOTA),根本原因是不再有序列依赖 |
| 长距离建模 | 常数级路径长度 $O(1)$,天然解决长程依赖 |
| 可解释性 | 注意力权重可直接可视化,不同头展现不同语言学行为 |
| 泛化验证 | 翻译 SOTA + 句法分析出色 = 架构的通用性得到证实 |
后续影响
这篇论文开启了 “Attention Is All You Need” 的时代。Transformer 从机器翻译出发,迅速扩展到:
GPT、BERT、T5、Claude、LLaMA……几乎所有现代大语言模型的名字背后,都是同一张架构蓝图——那篇 2017 年 NIPS 论文中描绘的 Transformer。
“We are excited about the future of attention-based models.”
——论文结尾的这句话,在此后近十年的 AI 浪潮中得到了最充分的应验。
参考资料
- Vaswani, A., et al. (2017). Attention Is All You Need. NIPS 2017. arXiv:1706.03762
- 官方代码实现:tensorflow/tensor2tensor
