01 · Attention Is All You Need
迭代了什么
上一代的问题:RNN 必须串行处理,长序列无法并行;CNN 能并行但远距离路径长。
这代改了什么:完全去掉 RNN/CNN,纯 Scaled Dot-Product Attention + Multi-Head Attention + 残差连接。
效果:WMT 英→德 BLEU 28.4(之前最佳 26.3),训练仅 3.5 天 / 8 P100。
一、论文要解决什么问题
在 Transformer 之前,序列转录(如机器翻译)的主流架构是 RNN 或 CNN + Attention。RNN 天然按时间步顺序计算,无法在训练样本内并行化,长序列时更加受限。CNN 虽然可以并行,但远距离依赖需要堆叠很多层,路径长、学习困难。这篇论文的核心问题就是:能不能完全扔掉 RNN 和 CNN,只靠注意力机制搭建一个序列模型?
二、核心思想
提出 Transformer,一个完全基于注意力机制的编码器-解码器架构。关键创新点:
- Scaled Dot-Product Attention — 对点积注意力加了一个缩放因子,防止梯度消失
- Multi-Head Attention — 把 Q/K/V 投影到 h 个低维空间并行做注意力,再合并,让模型同时从不同表示子空间学习
- Positional Encoding — 用正弦/余弦函数编码位置信息(因为模型没有循环和卷积)
- 完全并行化 — 所有位置同时计算,训练速度远快于 RNN
三、架构详解
3.1 Encoder-Decoder 结构
Encoder:6 层,每层 = Multi-Head Self-Attention + Feed-Forward Network,每层后接 Residual + LayerNorm。
Decoder:6 层,每层 = Masked Multi-Head Self-Attention + Cross-Attention(关注 Encoder 输出)+ FFN,同样 Residual + LayerNorm。
所有子层输出维度 dmodel = 512。
3.2 Scaled Dot-Product Attention
Attention(Q, K, V) = softmax(QKT / √dk) · V
Q 和 K 的维度是 dk,V 的维度是 dv。除以 √dk 是为了防止内积过大把 softmax 推到梯度极小的区域——当 dk 较大时,点积的方差是 dk,缩放后方差恢复为 1。
3.3 Multi-Head Attention
MultiHead(Q, K, V) = Concat(head1, ..., headh) · WO
headi = Attention(Q · WiQ, K · WiK, V · WiV)
h = 8 个头,每个头 dk = dv = dmodel / h = 64。每个子空间维度降低,总计算量与单头注意力基本持平,但学到了更丰富的表征。
3.4 Position-wise FFN
FFN(x) = max(0, xW1 + b1) · W2 + b2
两个线性变换,中间带 ReLU 激活。dmodel = 512,内层 dff = 2048。每个位置独立但参数层间不同(等价于两个核大小 1 的卷积)。
3.5 Positional Encoding
PE(pos, 2i) = sin(pos / 100002i/dmodel)
PE(pos, 2i+1) = cos(pos / 100002i/dmodel)
每个位置的每一维对应一个正弦或余弦,频率从 2π 到 10000·2π 呈几何级数。这样设计的好处:对于任意固定偏移 k,PEpos+k 可以表示为 PEpos 的线性函数,便于模型学习相对位置。
3.6 为什么 Self-Attention
对比三种层的复杂度(n = 序列长度, d = 表示维度):
- Self-Attention:每层 O(n²·d),但最大路径长度 O(1)——任何两个位置之间恒为一步
- Recurrent:每层 O(n·d²),最大路径长度 O(n)——线性增长
- Convolutional:每层 O(k·n·d²),最大路径长度 O(logk(n))——对数增长
当 n < d(这是绝大多数 NLP 场景),Self-Attention 比 RNN 更快,且远距离依赖路径最短。
四、训练与正则化
- 优化器:Adam(β1=0.9, β2=0.98),warmup + 平方根衰减的学习率策略
- 学习率调度:先线性上升 4000 步,之后按步数的平方根倒数衰减
- 正则化:Residual Dropout (p=0.1) + Label Smoothing (ε=0.1)
- 训练硬件:8 张 P100 GPU,base 模型 12 小时/100K 步,big 模型 3.5 天/300K 步
五、关键结果
- WMT 2014 英→德:BLEU 28.4(之前 SOTA 26.3),超过所有已有模型和集成模型
- WMT 2014 英→法:BLEU 41.8(单模型),训练成本不到之前 SOTA 的 1/4
- 英语成分句法分析:在 WSJ 上 F1 91.3(仅 40K 训练句子),半监督 92.7
六、历史意义与后续影响
这篇论文的价值远超翻译任务本身。它证明了:只要注意力够强,循环和卷积都不是必需的。 这个发现为后续几乎所有 LLM 架构奠定了基础。后续论文沿着多个方向拓展:
- 计算优化:MQA / GQA / MLA(降低 KV 缓存)→ 笔记 #03-#05
- 位置编码:RoPE / YaRN / NoPE(更好的位置建模)→ 笔记 #10-#12
- 归一化:Pre-LN / RMSNorm / QK-Norm(更稳定的训练)→ 笔记 #07-#09
- 替代架构:Mamba(状态空间模型)、MLA(低秩投影)→ 笔记 #16+
- 缩放:MoE(稀疏激活)→ Switch Transformer → DeepSeek MoE → 笔记 #13-#15
七、个人思考
读完之后最大的感受是:这篇论文的简洁性本身就是一种洞察。它没有引入复杂的数学工具,只是在已有的注意力机制上做了精心设计——缩放、多头、残差连接的恰当组合。回头看,拆掉 RNN 这个"行业共识"需要的不是更聪明的理论,而是勇气去问:"如果我有足够强的注意力,还需要循环顺序计算吗?" 从这篇论文往后,整个 NLP 领域彻底重塑。