原文摘要 · English Abstract
We propose a new simple network architecture, the Transformer, based solely on attention mechanisms, dispensing with recurrence and convolutions entirely. Experiments on two machine translation tasks show these models to be superior in quality while being more parallelizable and requiring significantly less time to train.
概要
机器翻译等序列转换任务长期依赖循环神经网络,按位置顺序展开计算,训练无法在序列内部并行,长序列上也难以学到远距离依赖。本文提出 Transformer,彻底抛弃循环与卷积结构,仅用自注意力机制在编码器和解码器内建模全局依赖:每个位置可以直接看到序列中任意其他位置,路径长度恒为 ,训练时序列内部可以完全并行。在 WMT 2014 英德、英法翻译任务上,Transformer 用远低于此前最优模型的训练算力取得新的最优 BLEU,在英语句法分析任务上也表现良好,说明它是通用的序列建模骨架。
在本文之前,序列转换任务主流做法是编码器-解码器结构的 RNN(LSTM/GRU),有时叠加注意力来跨步长对齐信息,但注意力始终是辅助于循环结构的附加模块。RNN 按位置顺序展开隐状态 ,训练无法在样本内部并行,序列越长受显存限制越明显;卷积类模型(ByteNet、ConvS2S)可以并行,但两点间路径长度随距离线性或对数增长,学习远距离依赖仍然困难。
关键贡献
- 提出完全基于自注意力、不含任何循环或卷积结构的序列转换架构 Transformer
- 提出缩放点积注意力并给出除以 的理论解释,解决大维度下 softmax 梯度消失的问题
- 提出多头注意力机制,让模型并行地在多个子空间学习不同类型的位置关系
- 提出正弦位置编码,在不引入循环结构的前提下向模型注入序列顺序信息
- 在 WMT 2014 英德/英法翻译上以远低于此前 SOTA 的训练成本取得当时最优 BLEU 分数
- 通过消融实验系统验证注意力头数、、模型规模、位置编码方式等设计选择的影响
方法详解(完整做法)
总体思路
Transformer 把整个序列建模拆成两类操作交替堆叠:一是「自注意力」,让每个位置直接看向序列里所有其他位置并加权汇总信息;二是「逐位置的前馈网络」,对每个位置独立做非线性变换。编码器读入源句、输出一组连续表示,解码器基于编码器输出与已生成的词自回归地逐词生成目标句。整条链路完全由矩阵乘法和 softmax 构成,没有任何按位置顺序展开的循环结构,因此序列内部可以完全并行计算,训练效率远高于 RNN。
编码器-解码器堆叠
编码器由 个相同层堆叠而成,每层含两个子层:多头自注意力和逐位置前馈网络,每个子层外面都套一层残差连接与层归一化。解码器同样堆叠 6 层,但每层多插入一个对编码器输出做注意力的子层,并且自注意力子层加了因果掩码,禁止看到未来位置,从而保证第 个位置的预测只依赖已经生成的 个位置:
缩放点积注意力
把输入分别线性投影成 Query、Key、Value 三组向量,用 Q 与 K 的点积衡量「相关性」,除以 缩放后做 softmax 归一化,再对 V 加权求和: 作者选点积而非加性注意力,是因为点积可以直接用高度优化的矩阵乘法实现,理论复杂度相近但实践中明显更快、更省空间。
为什么要除以
若 的各分量是均值 0、方差 1 的独立随机变量,则点积 的均值为 0、方差为 。当 较大时点积数值会变得很大,把 softmax 推进梯度极小的饱和区,导致训练不稳定;除以 把点积方差重新拉回 ,这是自注意力能稳定训练的关键细节,而不是随意选定的超参数。
多头注意力
与只用一次 维注意力相比,作者把 Q/K/V 用 组不同的学习投影分别映射到较低维 ,并行计算 次注意力后再拼接、投影回原维度,使模型能同时在多个子空间关注不同类型的关系(如语法结构、指代关系): 本文取 ,,因为每个头维度降低,总计算量与单头满维度注意力相当,多头并不显著增加成本。
逐位置前馈网络与位置编码
每个子层还接一个对每个位置独立、参数在位置间共享但在层间不同的两层前馈网络: 由于模型不含循环或卷积,必须显式注入位置信息,本文采用不同频率的正弦/余弦函数生成固定位置编码并与词嵌入相加: 选择正弦函数而非可学习位置嵌入,是因为任意固定偏移 下 都可以表示成 的线性函数,理论上还可能外推到比训练时更长的序列——论文的消融实验显示两种方式效果几乎相同,但正弦版本在长度外推上更有优势。
为什么选自注意力而不是循环或卷积
论文从三个维度比较不同层类型:每层计算复杂度、可并行的最小顺序操作数、任意两个位置之间的最大路径长度。自注意力的路径长度是 、顺序操作数是 ,而循环层路径长度是 、顺序操作数是 ;当序列长度 小于表示维度 (翻译任务中的常见情形)时,自注意力的每层复杂度 也比循环层的 更划算。更短的路径意味着梯度更容易在远距离位置之间直接传播,这是本文认为自注意力更适合建模长程依赖的核心理由。
训练目标与优化细节
翻译任务用逐词交叉熵端到端训练,解码器自回归地把上一步输出喂回作为下一步输入: 优化器为 Adam(),学习率先线性 warmup(4000 步)再按步数的逆平方根衰减;正则化上对每个子层输出和嵌入加残差 dropout(),并使用标签平滑 ,后者会略微损害困惑度但能提升 BLEU。
小结
Transformer 的关键并不是某一个孤立的公式,而是「多头自注意力提供全局、可并行的位置交互 + 逐位置前馈做非线性变换 + 残差与层归一化保证深堆叠可训练 + 正弦位置编码补回顺序信息」这一整套彼此配合、可以完全摆脱循环结构的骨架。
实验与关键数据
主实验在 WMT 2014 英德(450 万句对)和英法(3600 万句)翻译任务上,8 张 P100 GPU 训练 base/big 两种规模,beam search 解码后以 BLEU 评估;另在 WSJ 句法分析上验证通用性。结论:两个翻译方向都以更低算力超过此前最优 BLEU,迁移句法分析后仍优于多数专用模型。
关键数据
影响与局限
Transformer 是现代大模型的共同起点:多头自注意力被 BERT、GPT 继承用于纯编码器/解码器架构,ViT 把它搬到图像分块序列上开启视觉 Transformer 谱系,视频理解模型也把逐帧序列喂进同一套注意力结构。论文指出的自注意力平方复杂度 直接催生了稀疏注意力、状态空间模型等长序列优化方向。
局限与不足
论文自身也指出自注意力的每层复杂度是 ,随序列长度平方增长,当序列长度 超过表示维度 时反而比循环层更昂贵,作者提出的「限制邻域大小 的受限自注意力」只是留作未来工作的设想,本文并未实际验证;正弦位置编码假设位置关系可由固定频率的相位差线性表达,但论文自己的消融显示它与可学习位置嵌入效果几乎相同,说明这一设计的优势(外推到更长序列)在当时的实验中并未被直接证实。此外全部主实验只在机器翻译上验证,句法分析实验规模很小(4 层、约 4 万句训练数据),架构在更多任务、更大规模数据上的通用性留给了后续工作去验证;模型本身也没有涉及如何处理超长文档或多模态输入。