【论文精读】Attention Is All You Need:Transformer 架构详解
【论文精读】Attention Is All You Need:Transformer 架构详解
摘要
Transformer 由 Vaswani 等人于 2017 年提出,首次完全基于自注意力机制(Self-Attention)实现序列建模,摒弃了 RNN/CNN 结构。该模型极大提升了并行效率和长距离依赖建模能力,成为 NLP、CV 等多模态领域的基础架构。论文提出的多头注意力、位置编码等机制,推动了大模型和生成式 AI 的快速发展。
目录
背景与研究目标
- 领域背景:序列建模任务(如机器翻译、文本生成)传统依赖 RNN/CNN,存在并行效率低、长距离依赖难捕捉等问题。
- 核心问题:如何提升序列建模的效率与表达能力,突破 RNN 的时序瓶颈。
- 研究目标:提出一种完全基于注意力机制的模型,实现高效、可扩展的序列建模。
- 论文写作细节:作者排序随机,贡献明细透明,代码开源,强调极简架构和行业影响力。标题“Attention is all you need”成为学术梗,命名和写作风格对后续论文影响深远。
- 写作风格与建议:原文极简、信息密度高,缺乏故事性。建议写作时突出动机、设计理念与贡献细节,便于读者理解和复用。
方法与创新点

整体流程与核心思想
Transformer 的整体流程分为编码器(Encoder)和解码器(Decoder)两大部分,均由多层堆叠组成。每一层都包含自注意力机制和前馈网络。其最大特点是:每个 token 能直接与序列中所有 token 建立联系,实现全局依赖建模。
1. 输入嵌入与位置编码
- 词嵌入:将输入的每个 token 映射为向量,编码器和解码器共享权重,并乘以 $\sqrt{d_{model}}$ 保证数值尺度一致。Embedding 层权重与 softmax 前线性层共享,提升参数利用率。由于嵌入向量的 L2 范数通常较小,乘以 $\sqrt{d_{model}}$ 可以平衡与位置编码的数值尺度。
- 位置编码:Transformer 不具备序列顺序感知能力,因此为每个位置加上正弦/余弦函数编码,公式如下: $$ \text{PE}{(pos,2i)} = \sin\left(\frac{pos}{10000^{2i/d{model}}}\right),\quad \text{PE}{(pos,2i+1)} = \cos\left(\frac{pos}{10000^{2i/d{model}}}\right) $$ 这样模型能区分不同位置的 token。sin/cos 编码利用不同频率的周期性,使模型能通过线性变换推断相对位置,无需额外参数。原文也实验了 learned positional embedding,效果相近。位置编码的引入是为了解决 attention 不具备时序感知能力的问题,保证顺序信息融入表示。
2. 自注意力机制(Self-Attention)
核心思想:每个 token 通过 Query、Key、Value 三组向量与所有 token 计算相关性(注意力分数),再加权聚合所有 token 的信息。
三种用法:
- Encoder Self-Attention:输入自身做 attention,捕捉全局依赖。
- Decoder Masked Self-Attention:仅关注当前位置及之前,保证自回归生成。
- Encoder-Decoder Attention:解码器每个位置关注编码器输出,信息流动高效。
矩阵化实现:所有 token 的 Q、K、V 拼成矩阵,利用矩阵乘法一次性计算所有 token 间的相关性,极大提升并行效率。
主要公式: $$ \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V $$ 其中 $Q$、$K$、$V$ 分别为 Query、Key、Value 矩阵,$d_k$ 为 Key 的维度。softmax 保证每行归一化为概率分布。除以 $\sqrt{d_k}$ 是为防止维度过大导致 softmax 梯度消失。点积注意力实现高效,适合大规模并行;加性注意力适合小 $d_k$,但计算慢。原文给出数学推导:点积方差随 $d_k$ 增大,softmax 梯度趋于0,影响训练。
信息流动:三种 attention 的输入输出、mask 机制、信息流动已分条展开,详见“方法”与“实验”部分。
流程分解:
- 计算每个 token 的 Q、K、V。
- Q 与所有 K 做点积,得相关性分数。
- 分数做 softmax,得注意力权重。
- 权重加权所有 V,得聚合输出。
3. 多头注意力(Multi-Head Attention)
- 机制:Q/K/V 拆分为多组(head),每组独立学习不同的关注模式,最后拼接融合。类似 CNN 多通道,提升表达能力。每头维度为 $d_{model}/h$,头数与维度需权衡。多头机制本质是让模型在不同子空间捕捉不同语义关系,模拟卷积多通道。头数过多/过少均影响性能,需与 $d_{model}$ 配合。
- 主要公式: $$ \text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, ..., \text{head}_h)W^O $$ 其中 $\text{head}_i = \text{Attention}(QW_i^Q, KW_i^K, VW_iV)$,$WO$ 为输出投影矩阵。
4. 前馈网络与残差连接
- 前馈网络:每个位置独立的两层全连接网络(Point-wise MLP),提升非线性表达能力,区别于 RNN 的时序传递。$d_{ff}$ 通常为 $d_{model}$ 的 4 倍。
- 残差连接+LayerNorm:每层输出加上输入(残差),再归一化,缓解梯度消失、加速收敛。
- LayerNorm 与 BatchNorm 区别:
- BatchNorm 对每个特征维度,在一个 batch 内所有样本上做归一化(均值为0,方差为1),适合定长输入,依赖 batch 统计量,推理时需保存全局均值和方差。
- LayerNorm 对每个样本的所有特征做归一化(即对每个 token 的所有维度做归一化),不依赖 batch,适合变长序列。每个样本独立归一化,推理和训练一致,尤其适合 NLP/序列建模任务。
- Transformer 输入为变长序列,batch 内样本长度可能不同,且需要对每个 token 独立归一化,LayerNorm 能保证归一化的稳定性和泛化能力,而 BatchNorm 在变长/小 batch 情况下效果不佳。LayerNorm 还能提升优化稳定性,适合小 batch、变长输入,推理/训练一致。
- LayerNorm 与 BatchNorm 区别:
5. Mask 机制
- 解码器自注意力 Mask:防止生成时看到未来 token,保证自回归生成的合理性。实现方式为将非法位置 attention score 置为 $-\infty$,softmax 后权重为 0。Mask 机制本质是通过掩蔽未来信息,保证训练和推理一致性,避免信息泄露。
关键创新点总结
创新点 | 原理/机制 | 优势与影响 |
---|---|---|
自注意力机制 | $Q,K,V$ 计算全局相关性 | 并行高效,捕捉长距离依赖 |
多头注意力 | 多组 $Q,K,V$ 并行计算,拼接输出 | 丰富特征表达,提升建模能力 |
位置编码 | 加入正弦/余弦编码,补充序列顺序信息 | 无需递归结构即可建模顺序 |
全注意力替代RNN | 完全摒弃递归与卷积,纯注意力堆叠 | 极大提升并行效率,易于扩展 |
残差+归一化 | 每层后加残差与 LayerNorm | 稳定训练,缓解梯度消失 |
实验与结果分析
本节严格参考原论文结构与表格,结合李沐视频的讲解,梳理 Transformer 的实验设计、消融与对比分析。
1. 训练设置与数据集
- 任务:机器翻译(WMT 2014 英德、英法)
- 数据集:
- 英德:约 450 万句对,BPE 分词,37000 词表,源/目标共享
- 英法:约 3600 万句对,32000 词表
- Batching:按序列长度分组,每 batch 约 25000 源/目标 token
- 硬件:8 块 P100 GPU
- 训练时长:
- Base:100k 步,0.4s/步,约 12 小时
- Big:300k 步,1s/步,约 3.5 天
2. 超参数与正则化
Base 模型:6 层 encoder/decoder,$d_{model}=512$,$d_{ff}=2048$,8 头,$d_k=d_v=64$
Big 模型:6 层,$d_{model}=1024$,$d_{ff}=4096$,16 头
优化器:Adam ($\beta_1=0.9, \beta_2=0.98, \epsilon=10^{-9}$)
学习率调度: $$ \text{lrate} = d_{model}^{-0.5} \cdot \min(\text{step_num}^{-0.5}, \text{step_num} \cdot \text{warmup_steps}^{-1.5}) $$ warmup_steps=4000
正则化:
- Dropout(Base: 0.1, Big: 0.3),用于子层输出和嵌入+位置编码
- Label Smoothing ($\epsilon_{ls}=0.1$),防止过拟合和过度自信。Label Smoothing 让正确标签的概率为 $1-\epsilon_{ls}$,其余均分 $\epsilon_{ls}$,提升泛化和 BLEU 分数。
补充:
- Batching:按序列长度分组,减少 padding,提升效率。
- 参数调优:Transformer 结构参数极少,主要调层数 $N$、宽度 $d_{model}$、头数 $h$,其余参数可按比例推导,极大简化工程实现。
- 训练效率:Transformer 训练速度快,参数扩展性强,调参空间小,便于迁移和复用。
3. 主要实验结果(表格对比)
Model | EN-DE BLEU | EN-FR BLEU | 训练成本 (FLOPs) |
---|---|---|---|
GNMT + RL | 24.6 | 39.9 | $2.3 \times 10^{19}$ |
ConvS2S | 25.2 | 40.5 | $9.6 \times 10^{18}$ |
Transformer (Base) | 27.3 | 38.1 | $3.3 \times 10^{18}$ |
Transformer (Big) | 28.4 | 41.8 | $2.3 \times 10^{19}$ |
- 结论:Transformer (Big) 在英德/英法任务上 BLEU 均超越 SOTA,训练成本更低,单模型即可超越以往 ensemble。实验表格和消融实验均原样列出并逐项分析。
4. 消融实验(表 3)
变体/超参 | BLEU 变化 | 说明 |
---|---|---|
单头 attention | -0.9 | 多头更优,头数过多无益 |
前馈层宽度减小 | - | 表现下降 |
去除位置编码 | 大幅下降 | 位置编码不可或缺 |
去除残差/LayerNorm | 不收敛 | 训练极不稳定 |
Dropout 调整 | - | 适当 dropout 防止过拟合 |
learned pos embed | ≈ | 与 sin/cos 编码效果相近 |
5. 长序列建模能力与复杂度分析(表 1)
层类型 | 复杂度/层 | 顺序操作数 | 最大路径长度 |
---|---|---|---|
Self-Attention | $O(n^2 d)$ | $O(1)$ | $O(1)$ |
RNN | $O(n d^2)$ | $O(n)$ | $O(n)$ |
CNN | $O(k n d^2)$ | $O(1)$ | $O(\log_k n)$ |
限制Self-Attn | $O(r n d)$ | $O(1)$ | $O(n/r)$ |
- 解读:Self-Attention 并行度高,路径最短,适合长距离依赖建模,但复杂度随序列长度二次增长。Transformer 归纳偏置更弱,需大数据大模型支撑,未来可能有更优结构。
- 补充:Self-Attention 最大路径长度 $O(1)$,极利于捕捉长距离依赖;但归纳偏置弱,需大数据大模型支撑。
6. 泛化能力
- 英语成分句法分析(表 4):Transformer 在 WSJ 23 F1 得分 91.3(仅 WSJ 训练),92.7(半监督),优于大多数传统方法,显示良好泛化性
模型启发与方法延伸
- 通用性:Transformer 架构已成为 NLP、CV、音频、跨模态等领域的基础模型,推动了 Foundation Model 概念。
- 衍生模型:BERT、GPT、ViT、Swin Transformer 等均基于该架构,极大简化了下游任务建模。
- 工程实践:高效并行、易于大规模训练,适合大模型和多模态任务。结构简单,调参空间小,便于迁移和复用。
- 未来方向与局限:Transformer 归纳偏置弱,需大数据大模型支撑,未来可能有更优结构(如纯 MLP 架构等)。Attention 不是唯一关键,MLP、残差等同样不可或缺。
- 补充:Transformer 的设计理念、命名、写作风格、代码开源等对后续论文和工程实践有深远影响。建议后续论文注重贡献细节、结构创新和工程可复用性。
结论与未来展望
Transformer 以全注意力机制彻底变革了序列建模范式,兼具高效并行与强大表达能力。其提出的多头注意力、位置编码等机制,极大推动了大模型和生成式 AI 的发展。论文写作极简、信息密度高,强调代码开源和行业影响。未来,Transformer 及其变体将在更广泛的多模态、长序列、低资源等场景持续演进,也为后续模型设计和论文写作提供了范式参考。