本文从直觉、图像和几何角度解释 Transformer 的核心思想:自注意力(Self-Attention)、多头机制(Multi-Head Attention)、位置编码(Positional Encoding)与整体结构的"并行信息建模"思想。
1. 背景:从序列到全局关系
传统的序列模型(RNN、LSTM)逐步处理输入:
$$ x_1 \to x_2 \to x_3 \to \dots \to x_T $$
这使得模型难以捕捉远距离依赖(例如,句首与句尾的语义关系)。Transformer 用自注意力机制(Self-Attention)替代循环结构,实现并行处理,同时建模任意位置间的关系。
关键突破:Transformer 彻底改变了序列建模的范式,从"逐步处理"转向"全局关联"。
2. Transformer 的整体结构
2.1 模块化视角
Transformer 由 编码器(Encoder) 与 解码器(Decoder) 堆叠组成,每层包含:
- 多头自注意力层(Multi-Head Self-Attention)
- 前馈神经网络(Feed-Forward Network, FFN)
- 残差连接 + 层归一化(Residual + LayerNorm)
2.2 编码器-解码器结构示意图
输入序列: [我, 爱, 机器, 学习]
↓
词嵌入 + 位置编码
↓
┌─────────────────────────────────┐
│ 编码器堆叠 │
│ ┌─────────────────────────────┐ │
│ │ 多头自注意力 + 前馈网络 │ │
│ └─────────────────────────────┘ │
│ ┌─────────────────────────────┐ │
│ │ 多头自注意力 + 前馈网络 │ │
│ └─────────────────────────────┘ │
│ ... │
└─────────────────────────────────┘
↓
上下文感知的表示
↓
┌─────────────────────────────────┐
│ 解码器堆叠 │
│ ┌─────────────────────────────┐ │
│ │ 掩码多头注意力 + 编码器-解码器│ │
│ │ 注意力 + 前馈网络 │ │
│ └─────────────────────────────┘ │
│ ... │
└─────────────────────────────────┘
↓
输出序列: [I, love, machine, learning]多层堆叠后,模型能抽象出越来越高层的语义结构。
3. Self-Attention 的核心直觉
3.1 "每个词看所有词"
每个输入向量(词表示)通过计算与其他词的相似度来调整自身的表示。
公式形式:
$$ \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V $$
其中:
- $Q$:Query(当前词的查询向量)
- $K$:Key(所有词的键向量)
- $V$:Value(所有词的值向量)
直观解释:
当前词在语义空间中"询问"所有其他词的相关性,根据权重加权平均它们的表示,形成新表示。
3.2 几何理解
可以想象每个词是一个点,注意力操作相当于在空间中计算它与所有其他点的"夹角相似度",然后朝这些方向加权移动。结果是——每个词的新位置包含了上下文语义。
3.3 计算过程示意图
输入: [词1, 词2, 词3, 词4]
↓ ↓ ↓ ↓
Q1 Q2 Q3 Q4 ← 查询向量
K1 K2 K3 K4 ← 键向量
V1 V2 V3 V4 ← 值向量
注意力分数计算:
词1 词2 词3 词4
词1 s11 s12 s13 s14
词2 s21 s22 s23 s24
词3 s31 s32 s33 s34
词4 s41 s42 s43 s44
Softmax归一化 → 注意力权重
↓
加权求和: 新词1 = w11*V1 + w12*V2 + w13*V3 + w14*V44. 多头注意力(Multi-Head Attention)
单一注意力头只能捕捉一种类型的关系(例如,句法或语义)。Transformer 使用多个独立注意力头并行处理:
$$ \text{MultiHead}(Q,K,V) = \text{Concat}(head_1,\dots,head_h)W^O $$
其中 $head_i = \text{Attention}(QW_i^Q, KW_i^K, VW_i^V)$
直觉:不同的头关注不同层面的依赖关系:
- 一个头捕捉动词-主语关系
- 另一个头关注代词-先行词对应
- 再一个头关注情感、时间顺序等特征
4.1 多头注意力示意图
输入向量
│
├─头1→ 关注语法关系 →│
├─头2→ 关注语义关系 →│ → 拼接 → 线性变换 → 输出
├─头3→ 关注指代关系 →│
└─头4→ 关注位置关系 →│
实际例子("苹果公司发布了新款iPhone"):
头1: [苹果, 公司] ← 修饰关系
头2: [发布, iPhone] ← 动作-对象关系
头3: [新款, iPhone] ← 属性关系
头4: [公司, 发布] ← 主语-谓语关系4.2 多头注意力的优势
- 表示多样性:每个头学习不同的关注模式
- 模型容量:增加参数而不显著增加计算复杂度
- 鲁棒性:即使某些头失效,其他头仍能工作
- 可解释性:可以可视化不同头的注意力模式
5. 位置编码(Positional Encoding)
由于 Transformer 不具备顺序结构(不像 RNN 那样按顺序处理),需要显式地注入位置信息:
$$ PE_{(pos,2i)} = \sin\left(\frac{pos}{10000^{2i/d}}\right),\quad PE_{(pos,2i+1)} = \cos\left(\frac{pos}{10000^{2i/d}}\right) $$
这样模型能区分词序,并学习到相对位置关系。
5.1 位置编码示意图
词嵌入: [0.1, 0.3, -0.2, ...] (d维)
位置编码: [sin(p/1), cos(p/1), sin(p/100), cos(p/100), ...]
↓ 逐元素相加
最终输入: [0.1+sin(p/1), 0.3+cos(p/1), -0.2+sin(p/100), ...]5.2 位置编码的性质
- 唯一性:每个位置有唯一的编码
- 相对位置:$PE_{pos+k}$ 可以表示为 $PE_{pos}$ 的线性函数
- 有界性:所有编码值在 [-1, 1] 范围内
- 连续性:相邻位置的编码相似
5.3 其他位置编码方案
- 学习的位置编码:将位置编码作为可学习参数
- 相对位置编码:关注相对距离而非绝对位置
- 旋转位置编码:通过复数旋转表示位置信息
6. 残差连接与层归一化
Transformer 采用残差结构:
$$ \text{output} = \text{LayerNorm}(x + \text{SubLayer}(x)) $$
它使模型训练稳定,并让低层特征能直接流向高层。
直觉:像是高速公路,让梯度"畅通无阻"。
6.1 残差连接示意图
输入 x
│
├──────────────┐
↓ │
子层处理 f(x) │
↓ │
加法 x + f(x) ←──┘
↓
层归一化
↓
输出6.2 层归一化的作用
- 训练稳定性:防止梯度爆炸/消失
- 收敛加速:允许使用更大的学习率
- 批次独立性:对小批次大小不敏感
7. 前馈神经网络(FFN)
每个位置独立应用相同的前馈网络:
$$ \text{FFN}(x) = \text{ReLU}(xW_1 + b_1)W_2 + b_2 $$
作用:提供非线性变换能力,增强模型表达能力。
8. 解码器的特殊结构
8.1 掩码自注意力
在训练时,解码器使用掩码确保当前位置只能关注之前的位置:
# 掩码矩阵示例(序列长度=4)
[[1, 0, 0, 0],
[1, 1, 0, 0],
[1, 1, 1, 0],
[1, 1, 1, 1]]8.2 编码器-解码器注意力
解码器关注编码器的输出,实现源语言到目标语言的对齐。
9. Transformer 的宏观直觉
| 概念 | 类比直觉 | 数学意义 | 实际作用 |
|---|---|---|---|
| Self-Attention | 所有词之间的"群体交流" | $\text{softmax}(QK^T)V$ | 建立全局依赖关系 |
| Multi-Head | 不同专家关注不同模式 | 并行多个注意力空间 | 捕捉多样化关系 |
| Positional Encoding | 给每个词加上时间标签 | 正弦余弦编码 | 提供序列信息 |
| Residual + Norm | 信息高速通道 | $x + f(x)$ 然后归一化 | 稳定训练、保持梯度 |
| Feed-Forward | 个体深度处理 | $\text{ReLU}(xW_1)W_2$ | 增强非线性表达能力 |
Transformer 并不是"逐字阅读",而是"同时理解全局",像人类快速扫视整段文字的注意模式。
10. Transformer 变体与扩展
10.1 主要变体
- BERT:仅使用编码器的双向预训练模型
- GPT:仅使用解码器的自回归生成模型
- T5:编码器-解码器结构的文本到文本模型
- Vision Transformer:将Transformer应用于图像处理
- Swin Transformer:引入层次化设计的视觉Transformer
10.2 改进技术
- 线性注意力:降低计算复杂度从$O(n^2)$到$O(n)$
- 相对位置编码:更好地处理长序列
- 稀疏注意力:只计算重要的注意力对
- 分块计算:处理超长序列
11. 实际应用示例
11.1 机器翻译
输入: "我爱你"
编码器 → 上下文表示 → 解码器 → 输出: "I love you"11.2 文本生成
输入: "今天天气很好,"
模型自回归生成: "适合出去散步。"11.3 代码理解与生成
输入: "写一个快速排序函数"
输出: Python代码实现12. 结语:Transformer 的革命性影响
Transformer 的核心是 全局注意力 + 并行建模:
- 它摒弃了传统时间步依赖,使学习"长程依赖"成为可能
- 结构上"像图神经网络",但运算上更高效、可扩展
- 为大规模预训练模型(如GPT、BERT)奠定了基础
可视化总结:
输入序列 → 词嵌入 → 位置编码 → [编码器]×N → 上下文表示
↓
输出序列 ← 词嵌入 ← 位置编码 ← [解码器]×N ← 编码器输出注释: Transformer 就像一个"语义显微镜"——它让每个词都能"看见"全局,从而捕捉上下文关系的精细结构,这种设计思想已经深刻改变了自然语言处理乃至整个人工智能领域的发展轨迹。