Vaswani et al., Google Brain / Google Research, NeurIPS 2017.
这篇论文的野心写在标题里:不需要循环,不需要卷积,只要注意力。
一、论文要解决什么
2017 年做机器翻译的主流是 RNN + Attention(Bahdanau 注意力)或 CNN 序列模型。作者认为这些结构都有同一个问题:它们需要沿着序列顺序计算,限制了并行度;序列越长,路径越长,学习长距离依赖越困难。
论文提出的 Transformer 完全用注意力堆叠,把任意两个位置的路径长度压到 O(1)。
二、模型结构
- 编码器:6 层,每层 = 多头自注意力 + 前馈网络,两个子层都带残差和 LayerNorm。
- 解码器:6 层,比编码器多一个「编码器-解码器注意力」,且自注意力是带掩码的(只能看已生成的部分,防止信息泄漏)。
三个细节值得注意:
- 缩放因子 1/√d_k:点积的方差随维度增长,不缩放会让 softmax 进入饱和区,梯度几乎为零。
- 多头:把 d_model=512 切成 h=8 份,每头 64 维。作者在论文中说明,多头让模型能同时关注不同位置的不同表示子空间,单头做不到。
- 共享嵌入:输入输出嵌入与 pre-softmax 线性层共享权重,嵌入层乘以 √d_model 平衡量级。
三、位置编码的选择
论文用正弦/余弦绝对位置编码:
PE(pos, 2i) = sin(pos / 10000^(2i/d_model))
PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))
选它而不是学习式编码的理由是外推性:对任意固定偏移 k,PE(pos+k) 可以表示成 PE(pos) 的线性变换,模型有可能处理比训练集更长的序列。
这也是后续 RoPE 等相对位置方案的思想源头——把「位置」当成可运算的结构,而不是一组查表参数。
四、实验结果说明了什么
- WMT 2014 英德:28.4 BLEU,比当时最优(含集成)高 2 BLEU 以上;
- WMT 2014 英法:41.8 BLEU,单模型新 SOTA,训练成本只有最优模型的一小部分(论文提到 8 块 P100 训练 3.5 天);
- 消融实验:头数从 1 增到 8 有明显收益,再往上收益递减;d_k 太小或太大都变差。
这说明两件事:并行化带来的训练效率提升是数量级的,而模型容量在当时的规模上还没到瓶颈。
五、被后续工作修正的部分
论文不是终点,几个地方后来被改写:
| 论文设定 | 后来主流做法 | 原因 |
|---|---|---|
| Post-LN(子层后归一化) | Pre-LN / RMSNorm | Post-LN 深层训练不稳定,需要 warmup 兜底 |
| 绝对正弦位置编码 | RoPE / ALiBi | 相对位置外推更好,长上下文更友好 |
| 训练式全参数 FFN | MoE 稀疏 FFN | 参数规模与算力解耦 |
| 标准 softmax 注意力 | FlashAttention / GQA | 显存与带宽成为主要瓶颈 |
| Encoder-Decoder | Decoder-only | 统一建模范式,便于扩展到通用生成任务 |
六、为什么它成了分水岭
在它之前,NLP 的进步主要靠「在 RNN 上做更好的门控与注意力」;在它之后,整个领域的进步变成了「更大的 Transformer + 更多数据」。2018 年的 BERT、GPT 直接建立在这个结构上,2020 年之后的缩放定律又把它推向千亿参数。
回头看,这篇论文的真正贡献不只是精度提升,而是把 NLP 模型的扩展性问题从架构层面解开了。当模型不再依赖顺序计算,GPU 才能被真正喂饱,规模化的正循环才得以启动。
参考
- Vaswani, A., et al. Attention Is All You Need. NeurIPS 2017. arXiv:1706.03762
- 建议配套阅读:The Annotated Transformer(Harvard NLP),逐行对照实现。