《Attention Is All You Need》提出了 Transformer 架构,该模型在序列建模中完全舍弃循环结构与卷积结构,以注意力机制作为核心计算单元,构建了新的编码器—解码器框架。论文的核心结论是:在机器翻译等序列转导任务中,单纯依赖注意力机制即可获得优异性能,并显著提升训练并行性。
这一工作的重要意义在于改变了序列建模长期依赖递归结构的技术路径,使“基于全局相关性的表示学习”成为后续自然语言处理乃至多模态建模的基础范式。
在 Transformer 出现之前,序列建模长期以循环神经网络(Recurrent Neural Network, RNN)为代表性方案。RNN 专为时间序列、文本和语音等序列数据设计,其基本思想是在时间维度上重复使用同一组参数,使模型能够逐步接收输入并维护一个随时间更新的隐藏状态,这个隐藏状态可以理解为网络在当前时刻对历史信息的压缩表示。
在第 t 个时间步,RNN 根据当前输入 xt 与上一时刻隐藏状态 ht-1 计算新的隐藏状态 ht,其典型形式可写为:
其中,W 和 U 为可学习参数,g 为非线性激活函数,如 tanh 或 sigmoid。训练时,通常采用随时间反向传播(Backpropagation Through Time, BPTT)算法,将循环结构沿时间展开,再对展开后的计算图求取梯度并更新参数。
然而,标准 RNN 在处理长序列时存在明显局限,主要体现在以下三个方面:
为缓解这些问题,研究者进一步提出了带门控机制的循环结构,其中最具代表性的便是 LSTM 与 GRU。
长短期记忆网络(Long Short-Term Memory, LSTM)是 RNN 的重要变体,其设计目标是缓解梯度消失问题,并增强模型对长程依赖关系的建模能力。LSTM 的核心在于引入单元状态 ct,使信息能够沿时间维度较稳定地传递。
LSTM 通过门控机制有选择地控制信息流动,主要包括遗忘门、输入门和输出门。遗忘门决定上一时刻单元状态中有多少内容需要保留;输入门决定当前输入中有多少新信息写入单元状态;输出门则决定当前单元状态中有多少内容用于生成隐藏状态输出。借助这种精细化的信息控制方式,LSTM 在许多序列任务中显著优于标准 RNN。
门控循环单元(Gated Recurrent Unit, GRU)可以视为 LSTM 的简化版本,其目标是在保留门控机制优势的同时降低计算复杂度。与 LSTM 相比,GRU 不再显式区分单元状态与隐藏状态,而是将两者合并为统一的隐藏表示,从而减少了状态传递的复杂性。
GRU 仅保留两个门控单元,即更新门与重置门。更新门决定过去状态在当前时刻保留多少信息,因而在功能上结合了 LSTM 中遗忘与写入的部分作用;重置门决定历史信息在生成候选状态时参与到何种程度。由于参数更少、结构更紧凑,GRU 往往具有更低的计算开销,并在许多任务中以更简单的结构达到与 LSTM 接近的效果。
在 Transformer 出现之前,序列建模主要依赖循环神经网络(RNN)及其变体,或卷积序列模型。循环模型的主要局限在于时间步之间存在严格的顺序依赖,因此难以充分利用并行硬件;同时,远距离信息需要跨越多个时间步传播,长程依赖建模效果有限。卷积模型在并行性方面优于循环模型,但单层卷积通常只能覆盖局部范围,其感受野的扩大仍依赖多层堆叠,因此序列中远距离位置之间的路径长度并不理想。
基于上述问题,论文提出以自注意力机制替代循环与卷积。其目标并非对已有模型进行局部改进,而是重构序列建模的基本操作方式,即以位置间的相关性计算取代递归式状态传递。
Transformer 采用标准的编码器—解码器架构。原论文中,编码器和解码器均由 6 层堆叠构成,模型维度为 dmodel = 512,前馈层隐藏维度为 dff = 2048,注意力头数为 8。
每一层编码器由两个子层组成:多头自注意力子层与逐位前馈网络子层。每个子层外部均采用残差连接和层归一化。
其中,多头自注意力子层用于实现全局信息交互,逐位前馈网络则对每个位置的表示进行独立的非线性变换。残差连接保证深层网络中的信息与梯度能够稳定传播,层归一化则有助于提高训练稳定性。
解码器结构与编码器相似,但包含三个子层:掩码自注意力、编码器—解码器注意力以及前馈网络。掩码自注意力通过对未来位置施加屏蔽,保证解码过程满足自回归约束,即在预测当前位置时只能利用已生成的历史信息。
编码器—解码器注意力的作用是建立输入序列与输出序列之间的对齐关系,其中查询向量来自解码器当前状态,键和值来自编码器输出。
缩放点积注意力是 Transformer 的基本运算形式。设输入表示经过线性映射后得到查询向量(Query)、键向量(Key)和值向量(Value),则注意力输出定义如下:
其中,QKT 表示查询与键之间的相关性,softmax 用于将相关性归一化为权重分布,再对值向量进行加权求和。式中引入 √dk 的缩放项,是为了抑制高维空间中点积值过大的问题,从而避免 softmax 进入过度饱和区域,维持梯度稳定。
该机制实现了输入序列内部任意位置之间的信息交互,并使模型能够根据上下文动态分配注意力权重。
在单一注意力机制中,模型只能在一个表示子空间内建模位置关系。为提升表示能力,Transformer 引入多头注意力机制,即将查询、键和值分别映射到多个低维子空间,在各子空间中并行执行注意力计算,最后拼接结果并做线性变换。
多头注意力的意义在于:模型能够在不同子空间中同时学习不同类型的依赖关系,例如局部语法关联、长程语义依赖及代词回指关系等。该设计显著提升了注意力机制的表达能力,而无需显著增加总计算成本。
注意力机制本身不包含顺序信息,因此 Transformer 需要显式引入位置编码。原论文采用正弦—余弦位置编码,其定义如下:
这组公式的含义可以理解为:对序列中的第 pos 个位置,构造一个长度为 dmodel 的位置向量,并把这个向量加到词向量上,让模型知道“当前位置在序列中的哪里”。
其中,pos 表示位置编号,dmodel 表示模型向量维度,i 表示第几组维度。第 2i 维使用正弦函数,第 2i+1 维使用余弦函数,因此相邻两维共同描述同一个位置,只是表达方式不同。
分母中的 100002i / dmodel 决定了不同维度的变化速度。维度较小时,函数变化较快,更容易区分相邻位置;维度较大时,函数变化较慢,更适合表示较长距离的位置关系。于是,不同频率的正弦波与余弦波叠加起来,就能共同编码多尺度的位置信息。
之所以同时使用 sin 和 cos,是因为这样可以让每个位置形成更稳定、更丰富的表示,并使模型更容易从位置向量之间的组合关系中学习相对距离。
该设计的优点在于:
逐位置前馈网络(Position-wise Feed-Forward Networks, FFN)是 Transformer 编码器层与解码器层中的重要子层。在每个编码器层中,它位于多头自注意力之后;在每个解码器层中,它位于掩码自注意力和编码器—解码器注意力之后。该子层完全由全连接变换构成,用于对每个位置上的表示进一步做非线性映射。
所谓“逐位置”,是指该网络会对序列中的每一个位置独立地应用同一组变换。也就是说,同一层内不同 token 之间在 FFN 中并不直接交换信息,而是各自对自己的向量做相同形式的映射;不过,不同层的 FFN 参数彼此独立,因此各层学习到的变换功能并不相同。
上式中,x 表示前一子层的输出,W1、b1 与 W2、b2 是可学习参数。其结构可以理解为“两层线性变换 + 中间一个 ReLU 激活函数”:先将输入映射到更高维空间,再经过非线性激活,最后投影回原始维度。
在基础版 Transformer 中,输入与输出维度均为 dmodel = 512,前馈层内部维度为 dff = 2048。这意味着 FFN 会先把特征维度扩展到原来的 4 倍,再压缩回原维度。这种“扩张—压缩”的结构有助于模型学习更丰富的高阶特征表示。从卷积角度看,该操作也可以视为两个核大小为 1 的卷积,即两个 1 × 1 卷积。
在整体架构中,FFN 与其他子层一样,外部配有残差连接与层归一化,其输出形式可写为 LayerNorm(x + Sublayer(x))。训练时还会在 FFN 输出加入残差流之前施加 dropout,以提高训练稳定性并抑制过拟合。虽然 FFN 本身不负责位置之间的信息交互,但它与自注意力子层相互配合,使 Transformer 既能建模全局依赖关系,又能对每个位置的表示进行充分的非线性变换。
在 Transformer 中,每个子层外部都会配备残差连接(Residual Connection)与层归一化(Layer Normalization)。原论文将这一结构写为 LayerNorm(x + Sublayer(x)),其中 x 表示子层输入,Sublayer(x) 表示子层本身的输出,例如多头注意力的输出或前馈网络的输出。
残差连接的核心思想是“保留原始输入,再叠加新学到的变换结果”。也就是说,模型并不是完全用子层输出替换输入,而是把输入直接绕过子层后与其输出相加。这样做的好处在于:一方面可以让原始信息更容易在深层网络中持续传递,另一方面也有助于缓解深层网络训练中的梯度消失问题,使优化过程更加稳定。
层归一化的作用是对同一个位置上的特征维度进行标准化,使其数值分布保持在较稳定的范围内。与批归一化不同,层归一化不依赖 batch 维度,因此更适合处理长度可变的序列模型。经过层归一化后,各层输入输出的尺度更一致,从而有助于提高训练稳定性,并减轻参数更新过程中过大或过小的波动。
这两者通常配合使用:残差连接负责保留信息并改善梯度传播,层归一化负责稳定数值分布。前者解决“信息和梯度能否顺利传下去”的问题,后者解决“每层输出是否容易训练”的问题。正因为有了这两种机制,Transformer 才能在堆叠多层注意力与前馈网络的情况下仍保持较好的训练效果。
论文对自注意力、循环层与卷积层进行了复杂度对比,结果如下:
| 层类型 | 每层复杂度 | 序贯操作步数 | 最大路径长度 |
|---|---|---|---|
| 自注意力 | O(n² × d) | O(1) | O(1) |
| 循环层(RNN) | O(n × d²) | O(n) | O(n) |
| 卷积层 | O(k × n × d²) | O(1) | O(logk(n)) |
从该比较可以看出,自注意力机制在序贯操作步数和最大路径长度方面具有明显优势。尤其是在中等长度序列任务中,自注意力不仅有利于并行计算,而且能够更高效地捕获长距离依赖关系。然而,其代价在于时间和空间复杂度对序列长度呈二次增长,这一问题也成为后续高效注意力研究的重要出发点。
论文在 8 块 P100 GPU 上完成实验训练,并采用 Adam 优化器。参数设置为 β1 = 0.9、β2 = 0.98、ε = 10-9。同时,论文设计了具有 warmup 阶段的学习率调度策略:
该公式描述的是 Transformer 的学习率调度规则,其核心思想可以概括为“先升后降”。其中,dmodel-0.5 是与模型维度相关的整体缩放项,模型维度越大,学习率整体越保守。
min(stepnum-0.5, stepnum × warmup_steps-1.5) 表示从两种变化趋势中取较小值。在训练初期,学习率主要由 stepnum × warmup_steps-1.5 控制,并随着训练步数增加而线性上升,这一阶段称为 warmup,用于避免模型刚开始训练时参数更新过猛。
当训练步数超过 warmup_steps 后,学习率逐渐转为由 stepnum-0.5 主导,并按步数的反平方根形式缓慢下降,从而使模型在训练后期保持更稳定的收敛过程。
因此,这一策略的作用在于:前期通过“预热”提升训练稳定性,后期通过“衰减”帮助模型逐步收敛,在训练效率与优化稳定性之间取得平衡。
此外,论文还使用了 dropout 与标签平滑等正则化手段。dropout 的典型设置为 0.1,用于抑制过拟合;标签平滑参数设置为 0.1,其作用是降低模型对单一标签的过度确信,从而改善泛化性能和翻译质量指标。
在机器翻译任务中,Transformer 取得了显著优于既有模型的结果。论文报告的代表性结果包括:英德翻译任务达到 28.4 BLEU,英法翻译任务达到 41.8 BLEU。除性能优势外,Transformer 在训练效率方面同样表现突出,英法翻译实验的训练成本约为此前最优模型的四分之一。
这些结果表明,基于注意力机制的架构不仅能够提升模型效果,而且能够显著改善训练效率,验证了其作为通用序列建模框架的可行性。
Transformer 的意义主要体现在以下三个方面:
Transformer 的主要局限在于标准自注意力的二次复杂度。当输入序列长度显著增加时,计算成本和显存占用均会迅速上升。此外,原始位置编码方案虽具有一定泛化性,但对更长上下文和复杂结构的建模能力仍存在改进空间。这些问题推动了后续关于稀疏注意力、局部注意力、相对位置编码和线性注意力等方向的研究。
《Attention Is All You Need》并非仅提出了一种性能更优的模型结构,更重要的是,它完成了序列建模方法论的转向:模型不再依赖递归式状态传递,而是通过注意力机制直接构造输入内部及输入输出之间的全局关系。由此,序列建模从“按时间展开”转向“按相关性聚合”,这一路径直接影响了后续大规模语言模型与多模态模型的发展。
因此,Transformer 的历史地位不仅体现在实验指标上,更体现在其所开启的技术范式。BERT、GPT、T5、ViT 以及后续大量预训练模型,均可以视为这一架构思想的延展与深化。