Transformer 架构详解:从 Attention 机制到行业范式

本文全面解析Transformer:首个完全基于注意力机制的序列转换模型。文章先对比RNN/CNN的不足,再介绍编码器-解码器架构、多头自注意力、Scaled Dot-Product Attention、位置编码与训练细节,最后给出WMT机器翻译实验结果,说明其训练效率与翻译质量优势。

A
AGISeed Team
AGISeed 作者

Transformer:完全基于注意力机制的序列转换模型

文章分类:大模型与架构

1. 研究背景与问题动机

在 Transformer 提出之前,主流的序列转换(sequence transduction)模型主要基于复杂的循环神经网络(RNN)或卷积神经网络(CNN),并普遍采用编码器-解码器(encoder-decoder)结构。其中,性能领先的模型还会通过注意力机制(attention mechanism)连接编码器与解码器。

然而,这类模型存在几个根本性问题:

  • RNN、LSTM、GRU 等序列模型按时间步串行计算。它们将输入/输出序列的位置与计算时间步对齐,生成隐藏状态 $h_t$ 时必须依赖前一个隐藏状态 $h_{t-1}$。这种固有的顺序性导致训练样本内部难以并行化;当序列变长时,内存限制还会进一步限制 batch 大小,从而影响训练效率。
  • CNN 类模型虽可并行计算,但关联两个任意位置信号所需的操作数随距离增长:ConvS2S 中线性增长,ByteNet 中对数增长,这使得学习长距离依赖变得困难。
  • 注意力机制此前多与循环/卷积网络结合使用。Transformer 则首次完全抛弃了 RNN 和 CNN,仅依赖自注意力(self-attention)来建模输入与输出之间的全局依赖关系。

实验表明,Transformer 在机器翻译任务上不仅取得了更优的翻译质量,而且更易于并行化、训练时间显著更短。下面将详细介绍其架构设计与核心机制。

2. Transformer 整体架构

Transformer 整体架构 图 1:Transformer 模型架构(来源:arXiv 1706.03762)

Transformer 沿用了编码器-解码器框架:

  • 编码器(Encoder):将输入符号序列 $(x_1, \dots, x_n)$ 映射为连续表示 $\mathbf{z} = (z_1, \dots, z_n)$。
  • 解码器(Decoder):给定 $\mathbf{z}$,以自回归(auto-regressive)方式逐个生成输出符号 $(y_1, \dots, y_m)$,即生成下一步时会利用已生成的符号作为额外输入。

2.1 编码器

编码器由 $N=6$ 层相同的层堆叠而成。每层包含两个子层:

  1. Multi-Head Self-Attention 子层;
  2. Position-wise Feed-Forward Network 子层。

每个子层均采用残差连接(residual connection)和层归一化(layer normalization):

$$ \text{LayerNorm}(x + \text{Sublayer}(x)) $$

为了方便残差连接,模型中所有子层以及嵌入层的输出维度统一为 $d_{\text{model}} = 512$。

2.2 解码器

解码器同样由 $N=6$ 层相同的层组成。除了编码器中的两个子层外,解码器还增加了第三个子层:

  • Encoder-Decoder Cross Attention:对编码器输出执行多头注意力计算。

此外,解码器中的自注意力子层被修改为掩码自注意力(masked self-attention),以防止当前位置关注到后续位置。结合输出嵌入偏移一个位置的设计,保证位置 $i$ 的预测只能依赖于位置小于 $i$ 的已知输出。

2.3 逐位置前馈网络

每个编码器/解码器层还包含一个逐位置(position-wise)全连接前馈网络:

$$ \text{FFN}(x) = \max(0, xW_1 + b_1)W_2 + b_2 $$

其输入/输出维度为 $d_{\text{model}} = 512$,中间隐藏层维度为 $d_{\text{ff}} = 2048$。

3. 注意力机制:从 Query-Key-Value 到 Scaled Dot-Product

Scaled Dot-Product Attention 与 Multi-Head Attention 图 2:Scaled Dot-Product Attention(左)与 Multi-Head Attention(右)(来源:arXiv 1706.03762)

注意力函数可以描述为:将 Query 与一组 Key-Value 对映射为输出。输出是 Value 的加权和,权重由 Query 与对应 Key 的兼容性函数决定。在 Transformer 中,这一机制被进一步发展为 Scaled Dot-Product Attention 与 Multi-Head Attention。

3.1 Scaled Dot-Product Attention

Transformer 采用的注意力称为 Scaled Dot-Product Attention。输入包括维度为 $d_k$ 的 Query 和 Key,以及维度为 $d_v$ 的 Value。计算 Query 与所有 Key 的点积,除以 $\sqrt{d_k}$,再经过 softmax 得到 Value 的权重:

$$ \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V $$

为什么需要缩放? 当 $d_k$ 较大时,点积的绝对值会变得很大,导致 softmax 进入梯度极小的饱和区域。除以 $\sqrt{d_k}$ 可以有效缓解这一问题。

与加性注意力(additive attention)相比,点积注意力能够借助高度优化的矩阵乘法实现,速度更快、空间效率更高。

3.2 Multi-Head Attention

多头注意力不直接对 $d_{\text{model}}$ 维的 Q、K、V 执行一次注意力,而是将它们通过 $h$ 组不同的可学习线性投影分别映射到 $d_k$、$d_k$、$d_v$ 维,并行执行 $h$ 次注意力计算,最后将结果拼接并再做一次线性投影:

$$ \begin{aligned} \text{MultiHead}(Q, K, V) &= \text{Concat}(\text{head}_1, \dots, \text{head}_h) W^O \ \text{where} \quad \text{head}_i &= \text{Attention}(Q W_i^Q, K W_i^K, V W_i^V) \end{aligned} $$

其中投影矩阵为 $W_i^Q, W_i^K \in \mathbb{R}^{d_{\text{model}} \times d_k}$,$W_i^V \in \mathbb{R}^{d_{\text{model}} \times d_v}$,$W^O \in \mathbb{R}^{h d_v \times d_{\text{model}}}$。

注意力机制示例 图 3:注意力机制捕捉长距离依赖的示例(来源:arXiv 1706.03762)

原文中采用的超参数为:

$$ h = 8, \quad d_k = d_v = \frac{d_{\text{model}}}{h} = 64 $$

由于每个头的维度降低,多头注意力的总计算成本与单头全维注意力相当。多头机制使模型能够在不同表示子空间中联合关注不同位置的信息,缓解了单头平均化带来的信息损失。

4. 注意力在 Transformer 中的三种应用

基于上述注意力机制,Transformer 在不同位置使用了三种变体。

4.1 编码器自注意力(Encoder Self-Attention)

编码器中的 Q、K、V 都来自上一层编码器的输出。每个位置都能关注输入序列的所有位置,从而直接建模全局依赖。

4.2 解码器掩码自注意力(Decoder Masked Self-Attention)

解码器中的自注意力允许每个位置关注该位置及之前的所有位置。通过在 softmax 输入中将非法连接设为 $-\infty$ 进行掩码,保证生成第 $i$ 个词时只能依赖已生成的左侧输出,维护自回归特性。

4.3 编码器-解码器交叉注意力(Encoder-Decoder Cross Attention)

在此层中,Query 来自解码器上一层的输出,Key 和 Value 来自编码器输出。这使得解码器每个位置都能关注输入序列的所有位置,完成源序列与目标序列之间的对齐。

5. 位置编码、嵌入与训练细节

5.1 嵌入与位置编码

模型使用可学习的嵌入将输入/输出 token 映射为 $d_{\text{model}}$ 维向量,并通过线性变换和 softmax 将解码器输出转换为下一 token 的概率分布。输入嵌入、输出嵌入以及 softmax 前的线性变换共享权重矩阵,嵌入权重乘以 $\sqrt{d_{\text{model}}}$。

由于模型不含循环和卷积,必须显式注入位置信息。Transformer 使用正弦/余弦位置编码:

$$ \begin{aligned} PE_{(pos, 2i)} &= \sin\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right) \ PE_{(pos, 2i+1)} &= \cos\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right) \end{aligned} $$

作者也尝试了可学习的位置嵌入,发现两者效果几乎相同,但正弦版本更便于外推到训练时未见的更长序列。

5.2 训练配置

  • 优化器:Adam,$\beta_1 = 0.9$,$\beta_2 = 0.98$,$\epsilon = 10^{-9}$。
  • 学习率调度

$$ \text{lrate} = d_{\text{model}}^{-0.5} \cdot \min\left(\text{step_num}^{-0.5}, \text{step_num} \cdot \text{warmup_steps}^{-1.5}\right) $$

其中 $\text{warmup_steps} = 4000$。

  • 正则化
    • Residual Dropout:$P_{\text{drop}} = 0.1$;
    • Label Smoothing:$\epsilon_{\text{ls}} = 0.1$。

5.3 实验结果

下表总结了 Transformer 在 WMT 2014 翻译任务上的主要结果:

模型EN→DE BLEUEN→FR BLEU训练配置
Transformer(base)8 张 P100,约 12 小时
Transformer(big)28.441.88 张 P100,3.5 天
此前最优单模型26.138.9
此前最优集成模型26.3641.0

注:数据来自 arXiv:1706.03762 原文 Table 2。

在 WMT 2014 英德翻译任务上,Transformer 大模型取得了 28.4 BLEU,超越此前所有模型(包括集成模型)超过 2 BLEU。在 WMT 2014 英法翻译任务上,大模型在 8 块 P100 GPU 训练 3.5 天后取得 41.8 BLEU 的单模型最优结果。基础模型在 8 块 P100 GPU 上训练约 12 小时即可收敛。

此外,Transformer 也被成功应用于英语成分句法分析任务,显示出良好的泛化能力。

6. 总结

Transformer 是首个完全基于注意力机制的序列转换模型,它用多头自注意力取代了传统 encoder-decoder 架构中的循环层。该架构具有高度并行性,训练速度显著快于基于 RNN/CNN 的模型,同时在翻译质量上达到了新的 state-of-the-art。其提出的 Scaled Dot-Product Attention、Multi-Head Attention、残差连接与层归一化、位置编码等设计,奠定了后续大语言模型架构的基础。


原文来源

Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., Kaiser, Ł., & Polosukhin, I. (2017). Attention Is All You Need. arXiv:1706.03762. https://arxiv.org/abs/1706.03762

相关文章

大模型与架构

大语言模型是怎么工作的?

大语言模型工作原理深度解析:从Transformer架构到预训练、微调、推理的完整技术链路。

阅读更多
大模型与架构

Prompt Engineering 技巧大全

Prompt Engineering技巧大全:链式思考、少样本学习、角色设定等高级提示工程方法论。

阅读更多
大模型与架构

dair-ai 提示工程指南平台介绍

本文介绍 GitHub 开源项目 dair-ai/Prompt-Engineering-Guide,系统梳理提示工程基础、CoT/ReAct/RAG/AI Agents 等进阶技术、应用场景与模型适配,并总结对抗性提示、事实性与偏见等风险及配套资源,帮助开发者构建从理论到实践的完整学习路径。

阅读更多