Attention Is All You Need
Vaswani et al. · NeurIPS 2017 · arXiv:1706.03762

不是更好的 RNN,而是取消 RNN。

Transformer 的核心判断很干净:序列建模的瓶颈不是“记忆单元不够聪明”,而是按时间步串行计算本身。把 token 之间的依赖改写成一次可并行的 attention routing,训练效率、长程依赖路径和表示学习同时改变。

Self-Attention only WMT14 EN-DE 28.4 BLEU 8 P100 · 3.5 days 15 pages · 5 figures
01 · Research Motivation

研究动机:把序列建模从“时间循环”里解放出来。

2017 年主流 sequence transduction 模型仍是 encoder-decoder RNN / LSTM / GRU,再叠 attention。问题不是 attention 不够好,而是 RNN 的隐藏状态必须按位置顺序递推:训练样本内部不能充分并行,长序列被显存和 batch size 卡住,长程依赖需要穿过很长计算路径。

发现的问题

RNN 把序列位置对齐到计算时间步:隐藏状态 \(h_t\) 依赖 \(h_{t-1}\) 与当前位置输入。这带来天然串行性,尤其在长句子、长文档或大 batch 训练时成为硬约束。

为什么需要解决

机器翻译质量已经受益于 attention,但 attention 大多只是挂在 RNN/CNN 之上。只要底层主干仍串行,模型训练吞吐、远距离依赖路径和硬件利用率都受限。

Significance

论文提出第一个完全基于 self-attention、没有 recurrence 或 convolution 的 sequence transduction 架构。它不是一个模块替换,而是把“序列计算的主操作”换成了可并行的 token-token routing。

一句话理解贡献:如果说 RNN 是沿时间轴传话,Transformer 是让所有 token 同时开会;每个 head 学一套关系投影,然后把信息路由回来。
02 · Mathematical Modeling

数学表示:attention 是可微分的检索与加权汇聚。

Transformer 仍保留 encoder-decoder 框架:encoder 把输入符号序列 \((x_1,\ldots,x_n)\) 映射为连续表示 \(\mathbf{z}=(z_1,\ldots,z_n)\),decoder 自回归生成 \((y_1,\ldots,y_m)\)。真正的变化在每层内部:用 multi-head self-attention 和 position-wise FFN 取代 recurrence / convolution。

Scaled Dot-Product Attention

输入是 queries \(Q\)、keys \(K\)、values \(V\)。兼容性由点积给出,除以 \(\sqrt{d_k}\) 防止 \(d_k\) 较大时 softmax 进入饱和区。

\[ \operatorname{Attention}(Q,K,V)= \operatorname{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right)V \]
Equation (1). \(QK^\top\) 产生每个 query 对所有 key 的打分矩阵。

Multi-Head Attention

单个 attention 会把所有关系压到一个相似度空间里;multi-head 让模型在不同子空间里并行寻找依赖。base model 用 \(h=8\),每头 \(d_k=d_v=64\)。

\[ \operatorname{MultiHead}(Q,K,V)=\operatorname{Concat}(\operatorname{head}_1,\ldots,\operatorname{head}_h)W^O \] \[ \operatorname{head}_i=\operatorname{Attention}(QW_i^Q,KW_i^K,VW_i^V) \]

Encoder

由 \(N=6\) 个相同层堆叠。每层包含 multi-head self-attention 与 position-wise FFN。每个 sub-layer 外有 residual connection,再接 layer normalization:

\[\operatorname{LayerNorm}(x+\operatorname{Sublayer}(x))\]

注意:原论文是 post-norm 结构;现代大模型常用 pre-norm,这是后续演化。

Decoder

同样 \(N=6\) 层,但每层多一个 encoder-decoder attention。decoder self-attention 使用 causal mask,把未来位置的 logits 设为 \(-\infty\),保证第 \(i\) 位只能看 \(

Position-wise FFN

每个位置独立应用两层 MLP,中间 ReLU。输入输出维度为 \(d_{\text{model}}\),内层维度为 \(d_{\text{ff}}\)。base: \(d_{\text{model}}=512\), \(d_{\text{ff}}=2048\)。

\[\operatorname{FFN}(x)=\max(0,xW_1+b_1)W_2+b_2\]

Positional Encoding:没有 RNN 后,位置从哪里来?

Transformer 没有 recurrence,因此必须把位置信息注入 embedding。论文使用固定 sinusoidal positional encoding,并说明 learned positional embedding 在实验中几乎同等效果;选择 sinusoid 是因为理论上可能外推到训练长度之外。

\[ PE_{(pos,2i)}=\sin\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right) \]
\[ PE_{(pos,2i+1)}=\cos\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right) \]

直觉:每个维度对应不同频率,位置差可以被线性关系表达,便于 attention 推断相对位置。

Table 1:为什么 self-attention 值得替代 RNN/CNN

这张表是论文的动机骨架。复杂度不是唯一指标,关键还有 sequential operations 和 maximum path length。

Layer Type Complexity per Layer Sequential Operations Maximum Path Length 含义
Self-Attention \(O(n^2\cdot d)\) \(O(1)\) \(O(1)\) 任意两位置直接相连;短序列下常比 RNN 更划算。
Recurrent \(O(n\cdot d^2)\) \(O(n)\) \(O(n)\) 路径和计算都沿序列增长,长程依赖学习困难。
Convolutional \(O(k\cdot n\cdot d^2)\) \(O(1)\) \(O(\log_k(n))\) 可并行,但远距离交互需要堆叠或 dilation。
Restricted Self-Attention \(O(r\cdot n\cdot d)\) \(O(1)\) \(O(n/r)\) 为长输入降低 \(O(n^2)\) 成本,牺牲全局路径。
03 · Experiments & Reproduction

实验设计:机器翻译主线,句法分析验证泛化。

论文的实验不是“大模型堆算力”,而是证明 attention-only 架构在质量、训练时间和泛化上同时成立。主实验是 WMT 2014 English-German 与 English-French;额外用 English constituency parsing 测试迁移。

数据与 batch

  • WMT 2014 EN-DE:约 4.5M sentence pairs。
  • EN-DE 使用 BPE,shared source-target vocabulary 约 37K tokens。
  • WMT 2014 EN-FR:约 36M sentence pairs,32K word-piece vocabulary。
  • 按近似序列长度组 batch;每 batch 约 25K source tokens + 25K target tokens。

硬件与训练 schedule

  • 单机 8 NVIDIA P100 GPUs。
  • base:每 step 约 0.4s,100K steps,约 12 小时。
  • big:每 step 约 1.0s,300K steps,约 3.5 天。
  • base 模型参数 65M;big 模型参数 213M。

Optimizer

使用 Adam,参数为 \(\beta_1=0.9\)、\(\beta_2=0.98\)、\(\epsilon=10^{-9}\)。学习率采用 warmup + inverse square-root decay:

\[ lrate=d_{\text{model}}^{-0.5}\cdot \min(step\_num^{-0.5}, step\_num\cdot warmup\_steps^{-1.5}) \]

论文使用 \(warmup\_steps=4000\)。

Regularization & Inference

  • Residual dropout:sub-layer 输出在加回 residual 前 dropout;embedding + positional encoding 的和也 dropout。
  • base dropout \(P_{drop}=0.1\);big 在 EN-DE variation 表中为 0.3,EN-FR big 使用 0.1。
  • Label smoothing:\(\epsilon_{ls}=0.1\),perplexity 变差但 BLEU 更好。
  • Inference:beam size 4,length penalty \(\alpha=0.6\),最大输出长度 input length + 50。
  • checkpoint averaging:base 取最后 5 个 checkpoint;big 取最后 20 个。

复现 Checklist

  • 准备 WMT14 EN-DE 与 EN-FR 数据,并严格记录 tokenization/BPE pipeline。
  • EN-DE shared BPE vocabulary 约 37K;EN-FR 32K word-piece。
  • 实现 encoder-decoder stack:\(N=6\),post-norm residual。
  • base: \(d_{\text{model}}=512\),\(d_{\text{ff}}=2048\),\(h=8\),\(d_k=d_v=64\)。
  • big: \(d_{\text{model}}=1024\),\(d_{\text{ff}}=4096\),\(h=16\),\(P_{drop}=0.3\)。
  • 使用 sinusoidal positional encoding,并在 embedding 后乘 \(\sqrt{d_{\text{model}}}\)。
  • 确保 decoder self-attention 使用 causal mask。
  • Adam 参数:\(\beta_1=0.9\),\(\beta_2=0.98\),\(\epsilon=10^{-9}\)。
  • LR schedule 使用 \(warmup\_steps=4000\)。
  • label smoothing \(\epsilon_{ls}=0.1\)。
  • batch 按 token 数控制,约 25K source + 25K target tokens。
  • 推理使用 beam search,beam=4,length penalty \(\alpha=0.6\)。
  • base 平均最后 5 checkpoints;big 平均最后 20 checkpoints。
  • BLEU 评测应对齐 newstest2014 与当时的 tokenization / scoring 脚本,否则数字不可直接比。
复现风险:论文没有把所有 preprocessing / BLEU script / exact code revision 写进正文。现代复现应优先参考 Tensor2Tensor 历史实现,并明确标注 tokenization 和 checkpoint averaging 细节。
04 · Results & Insights

结果:更高 BLEU,更低训练成本,更短依赖路径。

论文的主结果不是单纯刷分,而是在训练 FLOPs 低一个量级的情况下超过当时强 baseline。尤其 EN-DE 上,Transformer big 超过所有已发表 ensemble 超过 2 BLEU。

Table 2:Machine Translation 主结果

Model EN-DE BLEU EN-FR BLEU EN-DE Cost EN-FR Cost
ByteNet23.75---
Deep-Att + PosUnk-39.2-\(1.0\cdot10^{20}\)
GNMT + RL24.639.92\(2.3\cdot10^{19}\)\(1.4\cdot10^{20}\)
ConvS2S25.1640.46\(9.6\cdot10^{18}\)\(1.5\cdot10^{20}\)
MoE26.0340.56\(2.0\cdot10^{19}\)\(1.2\cdot10^{20}\)
Deep-Att + PosUnk Ensemble-40.4-\(8.0\cdot10^{20}\)
GNMT + RL Ensemble26.3041.16\(1.8\cdot10^{20}\)\(1.1\cdot10^{21}\)
ConvS2S Ensemble26.3641.29\(7.7\cdot10^{19}\)\(1.2\cdot10^{21}\)
Transformer (base)27.338.1\(3.3\cdot10^{18}\)
Transformer (big)28.441.8\(2.3\cdot10^{19}\)

BLEU 对比

ConvS2S Ensemble EN-DE
26.36
Transformer big EN-DE
28.4
ConvS2S Ensemble EN-FR
41.29
Transformer big EN-FR
41.8

训练成本对比

Transformer base
\(3.3e18\)
Transformer big
\(2.3e19\)
ConvS2S Ensemble EN-FR
\(1.2e21\)
GNMT Ensemble EN-FR
\(1.1e21\)

成本条以 \(1.2\cdot10^{21}\) FLOPs 为 100%。论文估算方式:训练时间 × GPU 数 × 单 GPU sustained TFLOPS。

Table 3:架构消融与模型规模

变体 \(N\) \(d_{\text{model}}\) \(d_{\text{ff}}\) \(h\) \(d_k\) \(d_v\) \(P_{drop}\) PPL BLEU Params M
base65122048864640.14.9225.865
A: 1 head---1512512-5.2924.9-
A: 4 heads---4128128-5.0025.5-
A: 16 heads---163232-4.9125.8-
A: 32 heads---321616-5.0125.4-
B: smaller \(d_k=16\)----16--5.1625.158
B: smaller \(d_k=32\)----32--5.0125.460
C: \(N=2\)2------6.1123.736
C: \(d_{\text{model}}=1024\)-1024--128128-4.6626.0168
C: \(d_{\text{ff}}=4096\)--4096----4.7526.290
D: no dropout------0.05.7724.6-
E: learned positional embeddings-positional embedding instead of sinusoids4.9225.7-
big61024409616--0.34.3326.4213

Head 数不是越多越好

单头比 base 低 0.9 BLEU,但 32 heads 也掉分。解释:head 太少表示子空间不够,head 太多导致每头维度太小。

\(d_k\) 太小会伤质量

把 key 维度降到 16 或 32,BLEU 明显下降。论文推断 compatibility 判断并不容易,简单 dot product 可能还不够。

Dropout 非常关键

没有 dropout,dev BLEU 从 25.8 降到 24.6,PPL 变差到 5.77。模型容量足够大时,regularization 是质量开关。

Table 4:English Constituency Parsing 泛化实验

ParserTrainingWSJ 23 F1
Vinyals & Kaiser et al. (2014)WSJ only, discriminative88.3
Petrov et al. (2006)WSJ only, discriminative90.4
Zhu et al. (2013)WSJ only, discriminative90.4
Dyer et al. (2016)WSJ only, discriminative91.7
Transformer (4 layers)WSJ only, discriminative91.3
Transformer (4 layers)semi-supervised92.7
Luong et al. (2015)multi-task93.0
Dyer et al. (2016)generative93.3

Parsing 设置:4-layer Transformer,\(d_{\text{model}}=1024\);WSJ only 约 40K training sentences,16K vocabulary;semi-supervised 使用约 17M sentences,32K vocabulary;beam size 21,\(\alpha=0.3\),最大输出 input + 300。

05 · Figures from Paper

Figure 不是插图,而是论文的操作说明。

架构图说明数据流,attention 图说明 routing 机制,appendix 可视化说明不同 head 学到不同句法/语义关系。图片来自 ar5iv 对 arXiv 源文件的渲染资源。

Figure 1 Transformer architecture
Figure 1. The Transformer - model architecture. 左侧是 encoder stack,右侧是 masked decoder stack,中间有 encoder-decoder attention。
Figure 2 Scaled Dot-Product Attention
Figure 2 left. Scaled Dot-Product Attention:MatMul → Scale → Mask optional → SoftMax → MatMul。
Figure 2 Multi-Head Attention
Figure 2 right. Multi-Head Attention:多个 attention 子空间并行,concat 后再投影。
Figure 3 long-distance attention
Figure 3. Encoder self-attention 第 5/6 层捕捉 long-distance dependencies,多个 head 关注 distant dependency of “making”。
Figure 4 anaphora top
Figure 4 top. Layer 5 of 6 中 head 5 似乎参与 anaphora resolution。
Figure 4 anaphora bottom
Figure 4 bottom. 对 “its” 的 isolated attention,head 5/6 非常 sharp。
Figure 5 syntax attention example one
Figure 5 top. 一些 head 出现与句子结构相关的行为。
Figure 5 syntax attention example two
Figure 5 bottom. 不同 head 学到不同任务;这是论文对 interpretability 的主要证据,但不能过度解读为因果解释。
06 · Reviewer Comments

犀利评审:这篇论文强在问题重构,不强在实验完美。

历史地位毋庸置疑,但作为 reviewer 仍要分清“开创范式”和“实验论证充分”是两件事。

问题定义极准

它不是问“怎么做更强 RNN”,而是问“能不能移除 sequential bottleneck”。这个 framing 直接打开了后续 scaling path。

架构简单且可组合

attention、FFN、residual、LayerNorm、positional encoding 都是清晰模块;这让社区能快速复现、改造、扩展。

性能与效率同时成立

EN-DE 和 EN-FR 的 BLEU / FLOPs 对比非常有说服力:不是拿更大计算堆出来,而是更适合硬件并行。

baseline 不是完全 controlled

主表主要比较 literature results,不是同代码库、同硬件、同调参预算下的公平 ablation。它足以证明潜力,但不足以隔离所有因素。

\(O(n^2)\) 代价没有真正解决

论文提到 restricted attention 作为未来工作,但长上下文场景在正文里没有实验。这是后续 sparse attention、linear attention、FlashAttention 的入口。

Attention 可解释性有过度诱惑

appendix 可视化很漂亮,但“head 看起来像句法关系”不等于 attention 是可靠解释。后续研究也反复提醒 attention weights 不能简单等同因果解释。

补 controlled baselines

同一训练框架里比较 RNN/CNN/attention-only,统一数据、tokenization、checkpoint averaging、beam search 和 tuning budget。

补长序列实验

在 \(n\) 明显大于 \(d\) 或 memory-bound 场景测试,系统评估 full attention、restricted attention 和 convolution/RNN 的 crossover。

补 scaling curve

用参数量、训练 FLOPs、wall-clock、数据量画 scaling 曲线,而不是只给两个模型点 base/big。

顶会 reviewer 口吻

Rating: Strong Accept. 贡献不是某个组件,而是把 sequence transduction 的计算主干从 recurrence/convolution 改成 self-attention,并用足够强的机器翻译结果证明可行。弱点是实验范围仍偏窄,长序列复杂度和 attention 解释性没有被充分解决。但这类论文的价值在于打开范式,不在于一次性封闭所有问题。

07 · One More Thing

这篇论文真正留下的不是 attention,而是“路径长度思维”。

如果只记住 “Attention Is All You Need”,容易误解成 attention 模块万能。更深的启发是:当一个系统的学习被信息路径、并行度和硬件利用率卡住时,最重要的改进可能不是做更聪明的单元,而是改写信息流拓扑。

从模型到 Agent 的迁移

RNN 是“顺序处理”,Transformer 是“全局上下文路由”。这与 Personal Context OS 很像:不应该让 agent 每次从头线性读历史,而应该把长期 context 做成可检索、可路由、可组合的外部记忆。

从工程到审美的迁移

Transformer 的美在于它删除了 recurrence 和 convolution,却没有删除能力;相反,正确表示让能力更直接地显现。这与欧拉恒等式一样:美不是少,而是结构压缩后的少。

一句 reviewer 之外的评价:这篇论文是 AI 史上的“表示选择”胜利。它证明了当表示和计算图对齐硬件、数据和任务结构时,模型范式会突然变得简单。