Attention Is All You Need · 2017

TRANSFORMER
架构详解

The Architecture Behind ChatGPT · BERT · GPT-4
"我们提出了一种全新的网络结构 Transformer,它完全基于注意力机制,彻底摒弃了循环和卷积。它在机器翻译任务上取得了更好的表现,同时训练效率大幅提升。" — Vaswani et al., 2017
SCROLL
// 01
为什么需要 Transformer
在 Transformer 出现之前,序列建模主要依赖 RNN/LSTM/GRU。它们存在根本性的瓶颈,而 Transformer 用注意力机制彻底改变了这一切。

⛓️串行计算

RNN 必须按时间步依次处理,无法并行,训练速度极慢,难以利用 GPU 的并行能力。

📏长程依赖

序列越长,早期信息越难保留。即便有 LSTM 的门控机制,长距离依赖仍然是个难题。

🐌梯度问题

反向传播经过大量时间步会梯度消失或爆炸,限制了模型可处理的序列长度。

🔗单向信息

单向 RNN 只能看过去,无法利用未来上下文,限制了表征能力。

⏳ 传统 RNN / LSTM

  • 必须按时间步串行处理
  • 无法高效并行训练
  • 长距离信息会逐步丢失
  • 计算复杂度随长度 O(n) 增长
  • 难以扩展到超大规模

⚡ Transformer

  • 所有位置同时计算,高度并行
  • 充分利用 GPU 矩阵运算
  • 任意两位置直接相连,无距离衰减
  • 自注意力让全局建模成为可能
  • 可扩展到千亿参数(GPT-4)
// 02
整体架构
Transformer 是一个 Encoder-Decoder 结构。原始论文中编码器与解码器各堆叠 6 层(N=6),每一层都由注意力子层和前馈子层组成。
ENCODER ×N DECODER ×N Input Embedding + Positional Encoding Multi-Head Self-Attention Add & LayerNorm Residual Feed-Forward Network Add & LayerNorm Residual ↑ 重复 N 层 Output Embedding + Positional Encoding Masked Self-Attention Add & LayerNorm Cross-Attention (K,V from Encoder) Add & LayerNorm Feed-Forward Add & LayerNorm ↑ 重复 N 层 K, V Linear → Softmax

📥输入嵌入

将 token 转换为 dmodel=512 维向量,叠加位置编码后送入网络。

🔁N 层堆叠

编码器和解码器各堆叠 N=6 层,每层结构相同但参数独立,逐层提取更高层语义。

🎯输出概率

最终经线性层 + Softmax,输出每个词的概率分布,用于预测下一个 token。

// 03
自注意力机制 Self-Attention
这是 Transformer 的灵魂。它让序列中的每个位置都能"看到"所有其他位置,从而捕捉任意距离的依赖关系。

🔑三个核心角色:Q / K / V

每个输入向量被映射为三种向量:查询、键、值。可以用一个生动的类比来理解它们:

Query 查询 我在找什么
与每个 Key 键 匹配
加权求和 Value 值
Attention(Q,K,V) = softmax(Q K^T / sqrt(d_k)) V \[ \text{Attention}(Q,K,V)=\text{softmax}\!\left(\frac{QK^{T}}{\sqrt{d_k}}\right)V \]
Q
当前词的"提问":作为查询,去和其他词的相关性打分。
K
每个词的"标签":被查询时,用它来计算与查询的匹配程度。
V
每个词的"内容":根据匹配权重,对所有词的内容加权求和。
⚡ 交互式注意力热力图
点击任意格子查看注意力权重。颜色越亮(粉/紫),表示该词对其他词的关注度越高。这里展示句子 "The cat sat on the mat" 的注意力分布。
权重:低 → 高
点击矩阵中的格子查看注意力分数

📐缩放因子 √dk 的作用

当 dk 较大时,QKT 的点积结果方差会变大,把 Softmax 推到梯度极小的饱和区。除以 √dk 是为了稳定梯度,让训练更平稳。

score(q_i, k_j) = (q_i · k_j) / sqrt(d_k) \[ \text{score}(q_i,k_j)=\frac{q_i\cdot k_j}{\sqrt{d_k}} \]
// 04
多头注意力 Multi-Head
与其做单次注意力,不如把 Q/K/V 拆成多组(论文中 h=8 头),让模型从不同子空间、不同角度同时建模。

🔀为什么要"多头"?

单个注意力头只能学到一种关系模式。多头机制让不同的头分别关注:

  • 语法结构(主谓宾关系)
  • 指代消解("it" 指代什么)
  • 语义相关(近义、反义)
  • 长距离依赖
MultiHead(Q,K,V) = Concat(head_1,...,head_h) W^O \[ \text{MultiHead}(Q,K,V)=\text{Concat}(\text{head}_1,\dots,\text{head}_h)W^O \]

🧩维度切分

原始论文中 dmodel=512,使用 h=8 个头,每个头维度 dk=dv=64。8 个头并行计算,最后拼接后再做一次线性映射 WO

head_i = Attention(Q W_i^Q, K W_i^K, V W_i^V) \[ \text{head}_i=\text{Attention}(QW_i^Q,\,KW_i^K,\,VW_i^V) \]

总计算量与单头注意力几乎相当,但表征能力大幅提升。这就是"并行关注不同模式"的精髓。

🌐 多头注意力可视化
观察不同"头"如何关注不同的关系模式。每个头用不同颜色,线条越亮表示注意力越强。
// 05
位置编码 Positional Encoding
自注意力本身没有顺序概念——打乱输入顺序结果不变。为了让模型感知位置,需要显式注入位置信息。

🧮正弦/余弦编码

论文使用不同频率的 sin/cos 函数生成位置编码,再与词嵌入相加:

PE(pos,2i) = sin(pos / 10000^(2i/d_model)) \[ PE_{(pos,2i)}=\sin\!\left(\frac{pos}{10000^{2i/d_{model}}}\right) \]
PE(pos,2i+1) = cos(pos / 10000^(2i/d_model)) \[ PE_{(pos,2i+1)}=\cos\!\left(\frac{pos}{10000^{2i/d_{model}}}\right) \]

不同维度对应不同频率的波,从高频到低频,编码出"位置指纹"。

设计的精妙之处

  • 有界性:sin/cos 值在 [-1,1],与嵌入相加后数值稳定。
  • 相对位置可学:任意固定偏移 k,PEpos+k 可表示为 PEpos 的线性函数。
  • 泛化性:可外推到训练时未见的更长序列。
  • 无需学习:固定公式生成,不增加参数。
〰️ 位置编码波形可视化
下方每一行是一个维度,展示不同位置的 sin/cos 值。拖动滑块改变序列长度,观察波形变化。

📌其他位置编码方案

Learned PE
每个位置学一个向量(BERT 使用),效果与正弦编码相近,但无法外推。
Relative PE
编码相对位置(T5、Transformer-XL),更适合长序列。
RoPE 旋转位置编码
通过旋转矩阵注入位置(LLaMA 系列),兼顾绝对与相对位置。
// 06
其他核心组件
除了注意力,Transformer 还依赖前馈网络、残差连接和层归一化,它们共同保证训练的稳定性与表达能力。

⚙️前馈网络 FFN

对每个位置独立做两层全连接,中间用 ReLU/GELU 激活。维度先扩展到 4 倍(2048)再映射回 dmodel

FFN(x) = max(0, x W1 + b1) W2 + b2 \[ \text{FFN}(x)=\max(0,\,xW_1+b_1)W_2+b_2 \]

🔗残差连接

每个子层都包裹 Add 操作:将输入直接加到输出上。这缓解了深层网络的梯度消失,让信息顺畅流动。

output = LayerNorm(x + Sublayer(x)) \[ \text{output}=\text{LayerNorm}(x+\text{Sublayer}(x)) \]

📊层归一化

对每个样本的特征维度做归一化,稳定训练、加速收敛。现代变体常用 RMSNormPre-Norm 结构。

LayerNorm(x) = gamma * (x - mean) / sqrt(var + eps) + beta \[ \text{LN}(x)=\gamma\cdot\frac{x-\mu}{\sqrt{\sigma^2+\epsilon}}+\beta \]

🔧训练细节补充

Adam 优化器
β₁=0.9, β₂=0.98
学习率预热
前 4000 步线性增长,后按 √d 反比衰减
Dropout
P=0.1,应用于子层输出与位置编码
Label Smoothing
ε=0.1,提升泛化与模型置信度校准
512
d_model 模型维度
8
注意力头数 h
6
编码器/解码器层数 N
2048
FFN 隐藏维度
// 07
应用与深远影响
Transformer 不仅革新了 NLP,更成为现代 AI 的基石。几乎所有最先进的模型都建立在它之上。

📝NLU 理解

BERT(仅编码器):文本分类、命名实体识别、问答系统。双向注意力捕捉完整上下文。

💬生成式 AI

GPT 系列(仅解码器):对话、写作、代码生成。ChatGPT、GPT-4 掀起 AI 革命。

🌍翻译

原始 Transformer(编码器-解码器):Google 翻译、DeepL,机器翻译质量飞跃。

🎨多模态

ViT 图像分类、DALL·E 文生图、Whisper 语音识别、Sora 视频生成。

发展时间线
2017 · 06

Transformer 诞生

Google 团队发表《Attention Is All You Need》,提出完全基于注意力的架构。

2018 · 06

GPT-1 / BERT

OpenAI 与 Google 分别发布 GPT 与 BERT,预训练 + 微调范式确立,NLP 进入新纪元。

2020 · 05

GPT-3 (1750 亿参数)

展示惊人的少样本学习能力,证明模型规模的力量。

2020 · 10

ViT · 跨越模态

Vision Transformer 证明 Transformer 在视觉领域同样强大,统一了多模态架构。

2022 · 11

ChatGPT 引爆

基于 GPT-3.5 的对话产品风靡全球,AI 真正走入大众视野。

2023+ · 多模态大模型

GPT-4 / Gemini / Claude

支持图文多模态、长上下文、Agent 智能体,持续推动 AGI 边界。

💡核心洞察

Transformer 的成功源于一个深刻的设计哲学:用全局注意力替代局部递归。这一改变带来了三重红利——高度并行(训练效率)、长程建模(效果)、可扩展性(scaling law)。当一个架构既能高效训练、又能随规模持续变强时,它注定会定义一个时代。