📋 论文概述
这篇论文提出了 Transformer 模型,这是一个完全基于自注意力机制(self-attention)的序列到序列模型。它摒弃了传统的 RNN 和 CNN 结构,仅使用注意力机制来捕捉序列中的依赖关系。
Transformer 在机器翻译任务上取得了当时的最佳性能,并且训练速度远快于基于 RNN 的模型。这篇论文奠定了现代 NLP 的基础,后续的 BERT、GPT 等模型都是基于 Transformer 架构。
🎯 研究动机
- RNN 的问题:循环结构难以并行化,训练速度慢;长序列容易出现梯度消失/爆炸问题
- CNN 的局限:虽然可以并行,但捕捉长距离依赖需要堆叠多层
- 目标:设计一个既能并行训练,又能有效建模长距离依赖的架构
🔬 主要方法
核心思想
使用 自注意力机制(Self-Attention)让序列中的每个位置都能直接关注到其他所有位置,从而:
- 实现完全并行化
- 捕捉任意距离的依赖关系
- 路径长度为常数 O(1)
技术细节
1. 缩放点积注意力(Scaled Dot-Product Attention)
Attention(Q, K, V) = softmax(QK^T / √d_k)V
- Q(查询)、K(键)、V(值)通过线性变换得到
- 除以 √d_k 是为了防止点积过大导致梯度消失
2. 多头注意力(Multi-Head Attention)
- 将 Q、K、V 线性投影到 h 个不同的子空间
- 并行计算 h 个注意力
- 拼接后再次线性变换
3. 位置编码(Positional Encoding)
由于自注意力没有位置信息,使用正弦/余弦函数添加位置编码:
PE(pos, 2i) = sin(pos / 10000^(2i/d_model))
PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))
4. 前馈网络(Feed-Forward Network)
每个位置独立的两层全连接网络:
FFN(x) = max(0, xW1 + b1)W2 + b2
模型架构
- 编码器:6 层,每层包含多头自注意力 + 前馈网络
- 解码器:6 层,每层包含掩码多头自注意力 + 编码器-解码器注意力 + 前馈网络
- 残差连接:每个子层后添加残差连接和层归一化
📊 实验结果
数据集
- WMT 2014 英德翻译:450 万句对
- WMT 2014 英法翻译:3600 万句对
主要结果
| 模型 | BLEU (En-De) | BLEU (En-Fr) | 训练成本 |
|---|---|---|---|
| 之前 SOTA | 26.3 | 40.4 | - |
| Transformer (base) | 27.3 | 38.1 | 3.3 天 (8 GPUs) |
| Transformer (big) | 28.4 | 41.8 | 12 天 (8 GPUs) |
- 英德翻译超越之前最佳模型 2.0 BLEU
- 训练速度显著快于 RNN 模型
消融实验
验证了各组件的重要性:
- 多头注意力优于单头
- 位置编码必不可少
- 残差连接和层归一化显著提升性能
💭 个人评价
✅ 优点
- 革命性架构:完全摒弃循环结构,开创了新的范式
- 高效并行:训练速度远快于 RNN,易于大规模训练
- 长距离依赖:自注意力直接建模全局依赖,路径长度为 O(1)
- 可解释性:注意力权重提供了一定的可解释性
- 通用性强:不仅限于 NLP,在 CV、语音等领域也广泛应用
⚠️ 缺点
- 内存消耗:自注意力的复杂度是 O(n²),对长序列不友好
- 位置编码:正弦位置编码对长度外推能力有限
- 归纳偏置少:相比 CNN/RNN,缺少先验知识,需要更多数据
💡 启发
- 简单即美:去除复杂的循环结构,用简单的注意力机制达到更好效果
- 并行化优先:在算力充足的时代,并行化设计至关重要
- 多头设计:多个表示子空间能捕捉不同类型的信息
- 残差 + 归一化:深度网络的训练稳定性关键
🔗 相关论文
前置工作:
后续发展:
- BERT (2018):基于 Transformer 编码器的预训练模型
- GPT 系列:基于 Transformer 解码器的自回归语言模型
- Vision Transformer (2020):将 Transformer 应用于计算机视觉
- Efficient Transformers:降低自注意力复杂度的各种改进(Linformer、Performer 等)
📝 详细笔记
为什么需要缩放(除以 √d_k)?
当 d_k 很大时,QK^T 的点积值会很大,导致 softmax 进入梯度很小的饱和区。通过除以 √d_k 进行缩放,使点积的方差保持在合理范围。
多头注意力的意义
不同的头可以关注不同类型的信息:
- 某些头关注局部信息
- 某些头关注长距离依赖
- 某些头关注语法结构
- 某些头关注语义关系
Transformer 的三种注意力
- 编码器自注意力:编码器中,输入序列对自己的注意力
- 解码器掩码自注意力:解码器中,输出序列对自己的注意力(带掩码防止看到未来)
- 编码器-解码器注意力:解码器对编码器输出的注意力(类似传统的 attention)
实现要点
- Layer Normalization:在残差连接后使用
- Dropout:在注意力权重、前馈网络输出、位置编码后都使用
- 学习率调度:Warmup + 衰减策略
- 标签平滑:提高泛化能力
阅读时间:约 3 小时
推荐指数:⭐⭐⭐⭐⭐
适合读者:所有 NLP/深度学习研究者和工程师
这是必读经典论文,建议精读并实现一遍。