Paper Deep Reading · NIPS 2017

Attention Is All You Need

Transformer 的关键贡献,是把序列建模中的“时间步递归”改成“位置之间直接通信”:训练阶段能并行处理整段序列,任意两个位置只需一层 self-attention 即可交换信息。

Vaswani et al.arXiv:1706.03762v715 页 · 5 FiguresNIPS 20178 位作者等贡献,顺序随机
01 · Research thesis

论文改变的是计算路径

2017 年的主流 sequence-to-sequence 系统依赖 RNN 或 CNN,attention 只是辅助模块。本文提出完整的 encoder-decoder Transformer,以 self-attention、cross-attention 与逐位置 FFN 取代序列对齐的循环和卷积。

28.4
WMT 2014 English→German,big model BLEU
41.8
v7 摘要与 Table 2 的 English→French BLEU
12h
base model,8×P100,100k steps

Research gap

RNN 把位置绑定到顺序时间步,单个样本内部无法并行;卷积可以并行,但远距离位置需要跨过多层。作者要验证:是否可以只用 attention 完成通用序列转导,并同时获得质量、并行性与短依赖路径。

论文的证据边界

实验覆盖 WMT14 英德、英法翻译,以及 Penn Treebank 英文成分句法分析。图像、音频、视频只是结论中的未来方向;本文没有训练今天常见的 decoder-only 大语言模型。

版本内部存在数字冲突。 arXiv v7 摘要与 Table 2 报告 English→French 为 41.8 BLEU,Section 6.1 正文写 41.0。网页以表格中的 41.8 作为表内结果,并保留这项不一致;NIPS proceedings 页面还对应更早的 27.5 / 41.1 版本结果。
02 · Problem formulation

条件序列生成如何写成概率模型

输入与 encoder

源序列 \((x_1,\ldots,x_n)\) 经 token embedding 与位置编码,encoder 输出连续 memory \(\mathbf{z}=(z_1,\ldots,z_n)\)。每层都保留序列长度与维度 \(d_{\mathrm{model}}\)。

输出与 decoder

目标序列 \((y_1,\ldots,y_m)\) 自回归生成。训练时将目标右移一位并用 causal mask;推理时每一步把已生成 token 作为下一步条件。

优化目标

\[ P_{\theta}(\mathbf{y}\mid\mathbf{x})=\prod_{t=1}^{m}p_{\theta}(y_t\mid y_{\lt t},\mathbf{x}), \qquad \mathcal{L}(\theta)=-\sum_{t=1}^{m}\log p_{\theta}(y_t^{\mathrm{gold}}\mid y_{\lt t}^{\mathrm{gold}},\mathbf{x}). \]

论文没有单独打印这条负对数似然公式,但明确称 decoder 为 auto-regressive,并说明右移目标与 mask 保证位置 \(t\) 只依赖较早输出。训练另使用 \(\epsilon_{ls}=0.1\) 的 label smoothing,所以实际目标标签是平滑分布。

03 · Architecture

六层 encoder,六层 decoder

论文 Figure 1 Transformer encoder-decoder 架构
Figure 1 · Transformer architecture. 左侧 encoder 每层包含 self-attention 与 FFN;右侧 decoder 加入 masked self-attention 与 encoder-decoder attention。图像直接提取自论文 PDF。
1 · TokenizeBPE 或 word-piece,把句子变成离散 token。
2 · Embed + PEembedding 乘 \(\sqrt{d_{\mathrm{model}}}\),再加位置编码。
3 · Encode6 层全局 self-attention 与逐位置 FFN。
4 · Decodemasked self-attention 只读取已知目标前缀。
5 · Cross-attenddecoder query 读取 encoder keys / values。
6 · Predict共享词嵌入矩阵投影到词表,softmax 输出下一 token。

Encoder layer

\(\mathrm{LayerNorm}(x+\mathrm{Sublayer}(x))\) 围绕 multi-head self-attention 与 FFN。原论文采用 post-norm:先残差相加,再 LayerNorm。

Decoder layer

每层有三个子层:masked self-attention、cross-attention、FFN。目标 embedding 右移一位,非法的未来连接在 softmax 前被设为 \(-\infty\)。

维度

base:\(N=6\),\(d_{\mathrm{model}}=512\),\(d_{\mathrm{ff}}=2048\),\(h=8\),\(d_k=d_v=64\),约 65M 参数。

权重共享

源 embedding、目标 embedding 与 pre-softmax 线性变换共享同一权重矩阵;embedding 输出乘 \(\sqrt{d_{\mathrm{model}}}\)。

04 · Attention mechanics

Q、K、V 分别做什么

论文 Figure 2 scaled dot-product attention 与 multi-head attention
Figure 2 · Scaled dot-product and multi-head attention. 左图展示缩放、mask、softmax 与 value 加权;右图展示多组线性投影、并行 attention、拼接与输出投影。
\[ \mathrm{Attention}(Q,K,V)=\mathrm{softmax}\!\left(\frac{QK^{\mathsf T}}{\sqrt{d_k}}+M\right)V. \]

每个 query 与所有 key 做相似度计算,softmax 把分数变成归一化权重,再对 values 求加权和。\(M\) 表示 mask:encoder 主要屏蔽 padding,decoder 还屏蔽未来位置。

为什么除以 \(\sqrt{d_k}\)

若 \(q_i,k_i\) 独立、均值为 0、方差为 1,则 \(q\cdot k\) 的方差为 \(d_k\)。维度增大会使 logits 变大、softmax 饱和、梯度变小;除以 \(\sqrt{d_k}\) 把方差恢复到常数量级。

三种 attention

Encoder self-attention:Q/K/V 均来自 encoder。
Decoder self-attention:Q/K/V 均来自 decoder,并带 causal mask。
Cross-attention:Q 来自 decoder,K/V 来自 encoder memory。

\[ \begin{aligned} \mathrm{head}_i &= \mathrm{Attention}(QW_i^Q,KW_i^K,VW_i^V),\\ \mathrm{MultiHead}(Q,K,V) &= \mathrm{Concat}(\mathrm{head}_1,\ldots,\mathrm{head}_h)W^O. \end{aligned} \]

base 使用 \(h=8\) 个 head。每个 head 在 64 维子空间中计算,拼接后仍回到 512 维,所以总体计算量与单个 512 维 attention 处于同一数量级。多头的价值来自不同投影子空间与位置模式。

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

FFN 对每个位置独立使用相同参数;不同 Transformer 层使用不同参数。base 把 512 维扩张到 2048 维,经 ReLU 后再投影回 512 维。

05 · Position & complexity

没有递归以后,顺序从哪里来

\[ \mathrm{PE}_{(pos,2i)}=\sin\!\left(\frac{pos}{10000^{2i/d_{\mathrm{model}}}}\right),\qquad \mathrm{PE}_{(pos,2i+1)}=\cos\!\left(\frac{pos}{10000^{2i/d_{\mathrm{model}}}}\right). \]

位置编码与 token embedding 同维并直接相加。不同维度使用从 \(\,2\pi\,\) 到 \(\,10000\cdot2\pi\,\) 的几何级数波长。作者的假设是固定偏移 \(k\) 下,\(\mathrm{PE}_{pos+k}\) 可表示为 \(\mathrm{PE}_{pos}\) 的线性函数,从而便于学习相对位置;论文没有用长度外推实验直接验证这一假设。

Layer每层复杂度顺序操作最大路径长度
Self-attention\(O(n^2d)\)\(O(1)\)\(O(1)\)
Recurrent\(O(nd^2)\)\(O(n)\)\(O(n)\)
Convolutional\(O(knd^2)\)\(O(1)\)\(O(\log_k n)\)
Restricted self-attention\(O(rnd)\)\(O(1)\)\(O(n/r)\)
适用条件:当序列长度 \(n\lt d\) 时,全局 self-attention 的 \(O(n^2d)\) 通常小于 recurrent layer 的 \(O(nd^2)\)。随着上下文极长,二次复杂度会成为主瓶颈;论文已把 restricted attention 列为未来方向。
06 · Training & inference

可复现设置

WMT14 English-German

约 4.5M 句对;共享 source-target BPE 词表约 37k。每个 batch 约 25k source tokens 加 25k target tokens,并按近似长度分组。

WMT14 English-French

36M 句对;32k word-piece 词表。big 英法模型使用 dropout 0.1,而 Table 3 的通用 big 配置列为 0.3。

Hardware

单机 8×NVIDIA P100。base 每 step 约 0.4 秒,100k steps、约 12 小时;big 每 step 约 1 秒,300k steps、约 3.5 天。

Regularization

base residual dropout 0.1;dropout 也用于 embedding 与 positional encoding 之和。label smoothing \(\epsilon_{ls}=0.1\),论文指出它降低 perplexity 的观感,却改善 accuracy 与 BLEU。

\[ \mathrm{lrate}=d_{\mathrm{model}}^{-1/2}\min\left(\mathrm{step}^{-1/2},\ \mathrm{step}\cdot\mathrm{warmupSteps}^{-3/2}\right), \qquad \mathrm{warmupSteps}=4000. \]

Adam 参数为 \(\beta_1=0.9,\ \beta_2=0.98,\ \epsilon=10^{-9}\)。学习率先按 step 线性升高,4000 步后按 inverse square root 衰减;\(d_{\mathrm{model}}^{-1/2}\) 还让不同宽度模型的步长具有统一尺度。

Checkpoint averaging

base 平均最后 5 个 checkpoint,间隔 10 分钟;big 平均最后 20 个 checkpoint。Table 3 的消融没有做 checkpoint averaging。

Translation decoding

beam size 4,length penalty \(\alpha=0.6\),最大输出长度为输入长度 + 50,并允许 EOS 提前结束。超参数在 development set 上选择。

Parsing decoding

beam size 21,\(\alpha=0.3\),最大输出长度为输入长度 + 300;其余参数大体沿用英德 base 设置。

未公开细节

论文没有提供随机种子、完整数据清洗脚本、所有 tokenizer 训练细节、每个实验的方差与多次运行统计。代码入口是 Tensor2Tensor,现已归档且实现随时间继续演化。

07 · Results

翻译质量与训练代价

Table 2 · WMT 2014 newstest2014

模型EN-DE BLEUEN-FR BLEU训练 FLOPs
ByteNet23.75———
Deep-Att + PosUnk—39.2—\(1.0\times10^{20}\)
GNMT + RL24.639.92\(2.3\times10^{19}\)\(1.4\times10^{20}\)
ConvS2S25.1640.46\(9.6\times10^{18}\)\(1.5\times10^{20}\)
MoE26.0340.56\(2.0\times10^{19}\)\(1.2\times10^{20}\)
Deep-Att + PosUnk Ensemble—40.4—\(8.0\times10^{20}\)
GNMT + RL Ensemble26.3041.16\(1.8\times10^{20}\)\(1.1\times10^{21}\)
ConvS2S Ensemble26.3641.29\(7.7\times10^{19}\)\(1.2\times10^{21}\)
Transformer base27.338.1\(3.3\times10^{18}\)
Transformer big28.441.8\(2.3\times10^{19}\)

Table 2 的核心比较是质量与估算训练 FLOPs 的组合:base 英德模型已经超过当时列出的 ensemble,且估算训练成本明显更低;big 把英德结果推到 28.4 BLEU。FLOPs 来自训练时间、GPU 数量与作者估算的单卡持续 FP32 吞吐相乘,属于近似成本指标。表中破折号表示原表没有报告该值。Transformer base 与 big 的训练 FLOPs 在原表中跨两种语言合并报告,没有分别列值。

公平性

不同系统使用不同硬件、模型规模、训练语料处理与工程实现;表中 FLOPs 试图统一硬件差异,但不能当作严格的端到端能耗或 wall-clock 基准。Transformer 的核心优势由相同任务上的质量与训练代价共同支持。

版本差异

NeurIPS proceedings 页面保存更早的 165M 参数、27.5 EN-DE 与 41.1 EN-FR 摘要;本页分析本地保存的 arXiv v7,使用其 213M big 配置与 Table 2 的 28.4 / 41.8。

Table 4 · English constituency parsing

Parser训练设置WSJ Section 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 layersWSJ only, discriminative91.3
Zhu et al. (2013)semi-supervised91.3
Huang & Harper (2009)semi-supervised91.3
McClosky et al. (2006)semi-supervised92.1
Vinyals & Kaiser et al. (2014)semi-supervised92.1
Transformer, 4 layerssemi-supervised92.7
Luong et al. (2015)multi-task93.0
Dyer et al. (2016)generative93.3

解析实验使用 4 层、\(d_{\mathrm{model}}=1024\) 的 Transformer。WSJ-only 约 40k 句、16k 词表;半监督设置约 17M 句、32k 词表。结果说明架构能迁移到结构化输出任务,但 92.7 仍低于表中的 93.3,无法支持跨任务全面领先的结论。

08 · Ablation

Table 3 · 完整架构变体

所有变体在 English-German newstest2013 development set 上评测,不做 checkpoint averaging。破折号表示沿用 base 值;参数量单位为百万。

组别\(N\)\(d_{\mathrm{model}}\)\(d_{\mathrm{ff}}\)\(h\)\(d_k\)\(d_v\)\(P_{\mathrm{drop}}\)\(\epsilon_{ls}\)StepsPPLBLEUParams
base65122048864640.10.1100K4.9225.865
A · heads———1512512———5.2924.9—
A · heads———4128128———5.0025.5—
A · heads———163232———4.9125.8—
A · heads———321616———5.0125.4—
B · key————16————5.1625.158
B · key————32————5.0125.460
C · depth2————————6.1123.736
C · depth4————————5.1925.350
C · depth8————————4.8825.580
C · width—256——3232———5.7524.528
C · width—1024——128128———4.6626.0168
C · FFN——1024——————5.1225.453
C · FFN——4096——————4.7526.290
D · dropout——————0.0——5.7724.6—
D · dropout——————0.2——4.9525.5—
D · label smoothing———————0.0—4.6725.3—
D · label smoothing———————0.2—5.4725.7—
E · learned position——positional embedding instead of sinusoids4.9225.7—
big6102440961664640.30.1300K4.3326.4213
Paper verified在 newstest2013 单一开发集上,单头、多头过多、过小 key 维度、过浅网络与无 dropout 都降低 BLEU;learned 与 sinusoidal position encoding 几乎相同。Big 配置为 6 层、1024 hidden、4096 FFN、16 heads、300K steps、213M 参数。
Author claimsinusoidal encoding 可能外推到训练长度之外。Table 3 只显示开发集分数相当,没有长度外推分桶实验。
Our interpretation最强结果来自整体系统组合。Table 3 没有移除 attention、换回 RNN 或完整 factorial design,因此无法把 28.4 BLEU 的全部提升分配给某个单一组件。
09 · Paper vs. implementation

论文与 Tensor2Tensor 的关系

可核对的实现入口

官方论文指向 tensorflow/tensor2tensor。仓库的 Transformer 文件明确包含 encoder/decoder、causal attention bias、multi-head attention、FFN、beam search 与论文链接。

复现边界

公开仓库后来持续加入新 attention 类型、数据问题与训练选项,并已被归档。当前 master 不能视为 2017 年实验环境的逐字快照;复现需要固定历史 revision、TensorFlow 版本与 WMT 数据处理。

LayerNorm 顺序

论文公式明确是 post-norm:\(\mathrm{LayerNorm}(x+\mathrm{Sublayer}(x))\)。许多现代实现使用 pre-norm,训练性质不同,不能把后续惯例倒写回原论文。

注意力可解释性

Appendix 的 Figures 3–5 展示若干 head 与长距离依赖、指代或句法模式相关。它们是选取的可视化案例,没有系统因果干预或大规模定量可解释性评测。

10 · Reviewer commentary

技术贡献、局限与延伸

Strengths

  • 把 attention 从辅助模块提升为完整 sequence transduction backbone。
  • 架构、关键公式、训练设置、推理设置与消融都足够具体。
  • 同时比较质量、复杂度、顺序路径长度与训练成本。
  • 翻译之外加入 parsing,给出有限但有意义的泛化证据。

Weaknesses

  • 长序列的 \(O(n^2)\) 时间与内存成本已经可从 Table 1 预见。
  • 只报告单次结果,没有随机种子、误差条或多次运行统计。
  • 训练 FLOPs 是估算值,跨系统数据与工程条件并不完全一致。
  • EN-FR 41.8 与 41.0 的 v7 内部冲突损害结果可读性。
  • Appendix 的 head 可视化不足以证明稳定、可因果解释的语言结构。

Potential improvements

后续研究可以直接从本文留下的瓶颈出发:局部、稀疏、线性或 memory-compressed attention 处理长上下文;相对或旋转位置表示增强长度泛化;pre-norm、改进激活与初始化提升深层训练;KV cache、并行解码或非自回归生成降低 inference 顺序成本;用 controlled intervention 评估 head 作用,避免仅凭 attention map 解释模型行为。

Research extension对于程序图与 procedural material,可以把节点视为 token,把拓扑约束编码为 mask,让 graph decoder 在已生成节点上做 causal self-attention,并用 renderer feedback 做 test-time search。该设想继承 Transformer 的条件生成接口,论文自身没有验证图生成、渲染反馈或连续材质参数优化。
11 · Reading map

建议如何读原论文

12 · References

一手来源

  1. arXiv record · 1706.03762:版本历史、作者、摘要、分类与 15 页说明。
  2. arXiv v7 HTML:正文、公式、表格、Figure caption 与脚注;本页主要技术依据。
  3. arXiv v7 PDF:完整 15 页主文、参考文献与 Figures 3–5 Appendix。
  4. NIPS 2017 proceedings:正式会议记录与早期版本摘要。
  5. Tensor2Tensor repository:论文公开实现入口;仓库现已归档。
  6. Tensor2Tensor transformer.py:Transformer 模型实现与调用结构。

本页以 2023-08-02 的 arXiv v7 为主,并明确标记 proceedings 与 v7 的版本差异。页面中的研究延伸属于分析者建议。