写在前面
【从零走向AGI 】旨在深入了解通用人工智能(AGI)的发展路径,从最基础的概念起,逐步构建完整的知识体系。
项目地址 🔗:https://github.com/AI-mzq/From-Zero-to-AGI.git
AIGC算法岗/开发岗面试面经交流社群 (涵盖AI Agent、AIGC图像创作、AI视频、LLM大模型、AI多模态、数字人、传统深度学习、具身智能等AIGC面试干货资源)欢迎大家加入:https://t.zsxq.com/YtJ09
Attention Is All You Need详解:Transformer如何用注意力重写序列建模
导读
2017 年的《Attention Is All You Need》提出 Transformer,直接移除了序列模型中的循环和卷积,只用注意力机制完成编码、解码和跨序列信息交互。在论文发表前,机器翻译主流方案依赖 RNN/LSTM 或 CNN:前者必须按时间步计算,后者需要堆叠卷积才能扩大感受野。Transformer 把整段序列一次性映射成 token 表示,训练阶段可以高度并行,同时让任意两个位置之间只经过一层注意力连接。
模型采用标准 encoder-decoder 结构。Encoder 和 decoder 各堆叠 6 层;每层包含多头自注意力和前馈网络,decoder 额外加入对 encoder 输出的 cross-attention。Scaled Dot-Product Attention 用 Q K T QK^T QKT 计算相关性,Multi-Head Attention 把表示投影到多个子空间并行处理,正弦位置编码则补回"第几个 token"这一顺序信息。
在 WMT14 英德翻译上,Transformer-Base 达到 27.3 BLEU,Transformer-Big 达到 28.4;英法任务达到 41.8 BLEU,8 张 P100 训练约 3.5 天。论文还用消融验证了多头数量、模型宽度、位置编码和 dropout 的影响,并在英文成分句法分析上展示了迁移能力。
猫先生认为,这篇论文的历史意义不只是提出一个更快的翻译模型,而是把"序列必须按顺序处理"从架构前提变成了可被重新设计的工程选择。Transformer 的通用接口------token 表示、注意力混合、位置注入和逐位置前馈网络------后来成为大语言模型的共同底座。
论文标题 :Attention Is All You Need论文地址 :https://arxiv.org/abs/1706.03762
论文 HTML 全文 :https://arxiv.org/html/1706.03762
原文脉络
论文依次说明 RNN/CNN 的顺序计算瓶颈,给出 Transformer 架构和注意力公式,比较 self-attention 与循环/卷积层的复杂度,再介绍训练细节和翻译、句法分析实验。
1-2. 背景与问题:序列建模为什么需要摆脱循环
RNN 在第 t t t 个位置依赖 h t − 1 h_{t-1} ht−1,所以一个样本内部的计算无法并行;序列越长,训练吞吐越容易受限。CNN 可以并行计算,但相距很远的两个 token 需要经过多层卷积,信息路径随距离增长,模型还要在卷积核大小和层数之间做折中。
Attention 允许当前位置直接读取序列中任意位置的表示,但当时通常只是 RNN encoder-decoder 的辅助模块。Transformer 的激进之处在于:把循环本身去掉,让全局注意力承担序列内依赖建模 。代价是每层 self-attention 对长度为 n n n 的序列需要 O ( n 2 d ) O(n^2d) O(n2d) 的相关性计算,这个代价在短文本上换来了并行性和较短的信息路径。
3. 模型架构:Encoder、Decoder 与注意力模块
3.1 Encoder 与 Decoder 堆栈

图 1:Transformer 的 encoder-decoder 总体结构。左侧 encoder 将输入序列编码为表示,右侧 decoder 以 masked self-attention 和 encoder-decoder attention 自回归地产生输出。来源:论文 Figure 1。
Encoder 由 N = 6 N=6 N=6 个相同层组成,每层依次是 Multi-Head Self-Attention 和 position-wise Feed-Forward Network。每个子层外都有残差连接与 LayerNorm:
L a y e r N o r m ( x + S u b l a y e r ( x ) ) . \mathrm{LayerNorm}(x+\mathrm{Sublayer}(x)). LayerNorm(x+Sublayer(x)).
所有子层和 embedding 的维度为 d m o d e l = 512 d_{model}=512 dmodel=512。Decoder 同样是 6 层,但每层多一个 encoder-decoder attention。Decoder 的 self-attention 使用上三角 mask,使位置 i i i 只能访问已经生成的 ≤ i \leq i ≤i 位置,避免训练时偷看未来 token。
3.2 Scaled Dot-Product Attention
注意力把 query 与一组 key-value 对映射为加权后的 value。Transformer 使用缩放点积形式:
A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k ) V . \mathrm{Attention}(Q,K,V)=\mathrm{softmax}\left(\frac{QK^{T}}{\sqrt{d_k}}\right)V. Attention(Q,K,V)=softmax(dk QKT)V.
点积 Q K T QK^T QKT 提供 query-key 兼容度,softmax 将兼容度变成权重,再对 V V V 加权求和。除以 d k \sqrt{d_k} dk 是为了抑制高维点积的方差,避免 softmax 进入梯度很小的区域;点积形式还能直接使用高效矩阵乘法。
3.3 Multi-Head Attention


图 2:左图是 Scaled Dot-Product Attention 的计算路径,右图展示多个 attention head 并行投影、计算并拼接。来源:论文 Figure 2。
Multi-Head Attention 不在一个完整维度上只做一次加权,而是把 Q , K , V Q,K,V Q,K,V 分别投影到 h h h 个较小子空间:
M u l t i H e a d ( Q , K , V ) = C o n c a t ( h e a d 1 , ... , h e a d h ) W O , \mathrm{MultiHead}(Q,K,V)=\mathrm{Concat}(\mathrm{head}_1,\ldots,\mathrm{head}_h)W^O, MultiHead(Q,K,V)=Concat(head1,...,headh)WO,
h e a d i = A t t e n t i o n ( Q W i Q , K W i K , V W i V ) . \mathrm{head}_i=\mathrm{Attention}(QW_i^Q,KW_i^K,VW_i^V). headi=Attention(QWiQ,KWiK,VWiV).
Base 模型使用 h = 8 h=8 h=8,每个 head 的 d k = d v = 64 d_k=d_v=64 dk=dv=64,总计算量与单个 512 维 attention 接近。不同 head 可以分别关注词法、句法、位置或长距离关系,避免单头加权平均把不同类型的信息抹平。
3.4 三种注意力使用方式
Transformer 在三个位置调用 Multi-Head Attention:
- Encoder self-attention: Q , K , V Q,K,V Q,K,V 都来自 encoder 当前层,每个输入位置可以读取整段输入。
- Decoder masked self-attention: Q , K , V Q,K,V Q,K,V 来自 decoder,因 causal mask 只能读取当前位置及其左侧历史。
- Encoder-decoder attention: Q Q Q 来自 decoder, K , V K,V K,V 来自 encoder 输出,生成每个目标 token 时可以对齐输入序列。
猫先生认为,Multi-Head Attention 的价值不在于简单复制 8 次 attention,而在于给模型提供了多套"相关性坐标系"。同一层可以同时处理当前位置、远距离依赖和跨序列对齐。
3.5 Position-wise FFN、Embedding 与位置编码
注意力负责 token 之间的信息混合,FFN 则对每个位置独立做非线性变换:
F F N ( x ) = max ( 0 , x W 1 + b 1 ) W 2 + b 2 . \mathrm{FFN}(x)=\max(0,xW_1+b_1)W_2+b_2. FFN(x)=max(0,xW1+b1)W2+b2.
Base 配置中 d m o d e l = 512 d_{model}=512 dmodel=512、 d f f = 2048 d_{ff}=2048 dff=2048。输入输出 embedding 和 pre-softmax 线性投影共享权重,embedding 输出再乘以 d m o d e l \sqrt{d_{model}} dmodel 。
因为模型没有 RNN 或卷积,token embedding 需要叠加位置编码。论文采用固定的正弦、余弦函数:
P E ( p o s , 2 i ) = sin ( p o s / 10000 2 i / d m o d e l ) , PE_{(pos,2i)}=\sin\left(pos/10000^{2i/d_{model}}\right), PE(pos,2i)=sin(pos/100002i/dmodel),
P E ( p o s , 2 i + 1 ) = cos ( p o s / 10000 2 i / d m o d e l ) . PE_{(pos,2i+1)}=\cos\left(pos/10000^{2i/d_{model}}\right). PE(pos,2i+1)=cos(pos/100002i/dmodel).
不同维度使用不同频率,波长从 2 π 2\pi 2π 到 10000 ⋅ 2 π 10000\cdot2\pi 10000⋅2π。作者希望固定的相对位移关系帮助模型外推更长序列;消融中 learned positional embedding 与正弦编码的结果几乎相同。
4. 为什么选择 Self-Attention
论文用每层复杂度、最少顺序操作数和最长信息路径比较 self-attention、RNN、卷积和受限 attention。Self-attention 的单层复杂度为 O ( n 2 d ) O(n^2d) O(n2d),但顺序操作数为 O ( 1 ) O(1) O(1),任意两点路径长度也是 O ( 1 ) O(1) O(1);RNN 的顺序操作和最长路径都是 O ( n ) O(n) O(n)。因此在论文涉及的句子长度中,self-attention 通常更容易并行,也更容易学习远距离依赖。
代价是长度较大时的二次显存与计算。局部受限 attention 可把复杂度降到 O ( r n d ) O(rnd) O(rnd),但信息路径会变成 O ( n / r ) O(n/r) O(n/r)。训练可并行,decoder 推理仍按 token 顺序生成。
5. 训练设置:让架构优势真正落地
英德任务使用约 450 万句对和约 3.7 万词共享 BPE 词表;英法任务使用约 3600 万句对和 3.2 万 word-piece 词表。训练按相近长度组成 batch,每个 batch 约含 25k source 和 25k target tokens。
优化器为 Adam,参数 β 1 = 0.9 \beta_1=0.9 β1=0.9、 β 2 = 0.98 \beta_2=0.98 β2=0.98、 ϵ = 10 − 9 \epsilon=10^{-9} ϵ=10−9。学习率采用带 warmup 的反平方根衰减:
l r a t e = d m o d e l − 0.5 ⋅ min ( s t e p − 0.5 , s t e p ⋅ w a r m u p − 1.5 ) , \mathrm{lrate}=d_{model}^{-0.5}\cdot\min(\mathrm{step}^{-0.5},\mathrm{step}\cdot\mathrm{warmup}^{-1.5}), lrate=dmodel−0.5⋅min(step−0.5,step⋅warmup−1.5),
warmup 步数为 4000。Base 使用 8 张 P100 训练约 12 小时,Big 训练约 3.5 天。残差连接和 embedding+position encoding 使用 dropout,Base 的 dropout 为 0.1;label smoothing ϵ l s = 0.1 \epsilon_{ls}=0.1 ϵls=0.1 能降低困惑度并提高 BLEU。
6. 实验结果与消融
6.1 机器翻译
Transformer-Base 在 WMT14 英德测试集达到 27.3 BLEU,Transformer-Big 达到 28.4 BLEU;英法任务 Big 模型达到 41.8 BLEU,并以单模型、约 3.5 天训练成本刷新当时结果。摘要指出,英德结果比当时包含 ensemble 的最佳结果高出 2 BLEU 以上。
6.2 模型变化
消融显示,单头 attention 的 BLEU 约为 24.9,4 头约 25.5,8 和 16 头约 25.8,头数继续增加到 32 反而下降。减小每个 head 的 d k d_k dk 也会损失效果,说明"多个子空间"与每个子空间的表达容量需要平衡。增加层数、模型维度和 FFN 宽度通常带来收益,dropout 对抑制过拟合有效;learned 位置编码与正弦编码几乎持平。
6.3 英文成分句法分析
在 Penn Treebank/WSJ 句法分析任务上,Transformer 也能迁移到非翻译场景。仅使用 WSJ 数据时 F1 为 91.3,加入半监督数据后达到 92.7,说明 self-attention 学到的表示不只服务于翻译。
7. 局限与后续影响
Transformer 把训练并行性和长距离路径优化得很好,但 self-attention 的 O ( n 2 ) O(n^2) O(n2) 成本限制了超长上下文;decoder 生成仍然串行,推理延迟也没有被彻底消除。位置编码、注意力稀疏化、线性 attention 和 KV cache 等后续研究,基本都在回应这两类边界。
论文的实验重点是机器翻译和句法分析,不能直接说明模型在所有序列任务上都同样有效;更大的模型和数据也会带来算力、内存与过拟合问题。它真正留下的,是一个可扩展的模块组合,而不是一组对所有任务固定不变的超参数。
总结:注意力成为主干之后
《Attention Is All You Need》的主线可以浓缩为:用 self-attention 取代循环,靠 Multi-Head Attention 保留多种依赖关系,用位置编码恢复顺序,再用 FFN 和残差归一化堆叠出可训练的 encoder-decoder。
Transformer 的优势来自三种改变:训练可并行;任意位置之间的路径短;输入、输出和跨序列对齐都由同一种注意力接口表达。代价是长序列的二次复杂度和 decoder 生成的顺序性,但这组权衡开启了 BERT、GPT、T5 以及多模态 Transformer 的路线。
参考资料
推荐阅读
► 技术资讯: 魔方 AI 新视界
► 项目应用:开源视界
► 技术专栏: 多模态大模型最新技术解读专栏 | AI 视频最新技术解读专栏 | 大模型基础入门系列专栏 | 视频内容理解技术专栏 | 从零走向 AGI 系列