引言:一场架构革命的起源
2017 年,Vaswani 等人在 Google Brain 发表了划时代论文 "Attention Is All You Need",提出了 Transformer 架构。这一架构彻底抛弃了传统的循环神经网络(RNN)和卷积神经网络(CNN),仅依赖注意力机制(Attention Mechanism)来完成序列建模任务。此后,Transformer 不仅统治了自然语言处理领域,还扩展到计算机视觉、语音识别、蛋白质结构预测等几乎所有 AI 核心领域。BERT、GPT、ViT、AlphaFold 2 等里程碑模型皆源于此。
本文将从数学基础、架构细节、计算复杂度和工程实现四个维度,深入剖析 Transformer 的核心机制。
1. 注意力机制的概率论直觉
注意力机制的本质是一种加权平均的推广。给定一个查询向量 $q$ 和一组键值对 ${(k_i, v_i)}$,注意力的计算可分解为三步:
- 相似度评分:计算 query 与每个 key 的相似度 $s_i = f(q, k_i)$
- Softmax 归一化:将评分转化为概率分布 $\alpha_i = \frac{e^{s_i}}{\sum_j e^{s_j}}$
- 加权求和:输出为 $\text{Output} = \sum_i \alpha_i \cdot v_i$
这一过程等价于从一个离散概率分布中采样:模型"决定"应该关注哪些位置的信息,分配越高的权重意味着越强的关注。信息论视角下,注意力熵 $H = -\sum_i \alpha_i \log \alpha_i$ 度量了模型注意力的分散程度。
2. 自注意力(Self-Attention)的数学构造
自注意力是注意力机制的特殊情形:query、key、value 三个向量全部来自同一个输入序列 $X \in \mathbb{R}^{n \times d}$,通过三个不同的线性变换矩阵得到:
$$Q = XW_Q, \quad K = XW_K, \quad V = XW_V$$
其中 $W_Q, W_K \in \mathbb{R}^{d \times d_k}$,$W_V \in \mathbb{R}^{d \times d_v}$。完整的 Scaled Dot-Product Attention 公式为:
$$\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right) V$$
2.1 缩放因子 $\sqrt{d_k}$ 的作用
当 $d_k$ 较大时,$q \cdot k$ 的方差随维度线性增长(假设权重初始化满足均值为 0、方差为 1),导致 softmax 的输入进入梯度饱和区。除以 $\sqrt{d_k}$ 将点积的方差归一化为 1,确保梯度在反向传播时保持稳定。形式化地,若 $q_i, k_j \sim \mathcal{N}(0,1)$,则 $\text{Var}(q \cdot k) = d_k$,缩放后 $\text{Var}(q \cdot k / \sqrt{d_k}) = 1$。
2.2 计算复杂度分析
自注意力的计算复杂度为 $O(n^2 \cdot d)$,其中 $n$ 是序列长度,$d$ 是隐层维度。空间复杂度同样是 $O(n^2)$,因为需要存储完整的注意力矩阵。这是 Transformer 处理长序列时的核心瓶颈,也催生了稀疏注意力、线性注意力、Flash Attention 等大量优化工作。
2.3 自注意力的表达能力
值得注意的是,标准自注意力本身是一个置换等变(permutation equivariant)操作:打乱输入顺序,输出也会相应打乱。为了引入顺序信息,Transformer 引入了位置编码(Positional Encoding)。此外,由于注意力权重是动态计算的,自注意力也被称为动态权重或内容寻址记忆(content-addressable memory)。
3. Multi-Head Attention:多子空间的并行投影
单次自注意力只能捕获一种"相关性模式"。为了让模型同时关注不同子空间中的不同表示,Transformer 设计了多头注意力:
$$\text{MultiHead}(Q,K,V) = \text{Concat}(\text{head}_1, \dots, \text{head}_h) W^O$$
$$\text{head}_i = \text{Attention}(QW_Q^i, KW_K^i, VW_V^i)$$
每个头使用独立的投影矩阵 $W_Q^i, W_K^i, W_V^i$ 将 $d_{model}$ 维的 query/key/value 映射到 $d_k = d_{model}/h$ 维的子空间中。以 BERT-Base 为例,$d_{model}=768$,$h=12$,因此每个头在 $d_k=64$ 维的子空间中独立计算注意力。
3.1 多头注意力的直观解释
不同注意力头可以自动学习到不同的语义关系模式:
- 语法头:关注主谓一致、修饰关系、依存关系
- 局部头:关注邻近词的组合(类似 CNN 的局部感受野)
- 全局头:关注长距离依赖和指代关系
- 罕见模式头:关注特定的语义或词汇共现模式
Voita et al. (2019) 的研究发现,多头注意力中存在明显的"专业化"现象:不同头对翻译任务的贡献差异显著,某些头甚至可以剪枝而不影响性能。
3.2 参数量分析
多头注意力的总参数量为 $4 \times d_{model}^2$(含 $W_Q, W_K, W_V, W_O$ 四个 $d_{model} \times d_{model}$ 矩阵)。与直觉相反,当 $h$ 增大时、$d_k$ 减小时,总参数量不变——多头减少的是每个头的维度,而非计算的总容量。
4. Transformer 完整架构中的注意力子层
标准的 Transformer Encoder Block 由两步残差连接组成:
$$\text{SubLayer}_1(x) = \text{LayerNorm}(x + \text{MultiHeadSelfAttn}(x))$$
$$\text{Output} = \text{LayerNorm}(\text{SubLayer}_1(x) + \text{FFN}(\text{SubLayer}_1(x)))$$
Decoder 在此基础上增加了一层 Cross-Attention(以 Decoder 的输出为 Q,Encoder 的输出为 K 和 V),实现了编码器到解码器的信息传递。
4.1 位置编码:注入顺序信息
原始 Transformer 使用正弦/余弦位置编码:
$$PE_{(pos, 2i)} = \sin(pos / 10000^{2i/d_{model}})$$
$$PE_{(pos, 2i+1)} = \cos(pos / 10000^{2i/d_{model}})$$
这种编码使得模型可以学习相对位置关系:$PE_{pos+k}$ 可以表示为 $PE_{pos}$ 的线性函数。后续改进包括可学习位置嵌入(BERT、GPT)、RoPE(旋转位置编码,LLaMA)、ALiBi(线性偏差插值)等。
5. 注意力机制的现代变体与优化
随着 Transformer 应用的深入,研究者提出了大量注意力优化方案:
5.1 稀疏注意力(Sparse Attention)
Longformer、BigBird 等通过将全连接注意力矩阵稀疏化(滑动窗口 + 全局 token + 随机连接),将复杂度从 $O(n^2)$ 降至 $O(n)$。ETC 和 Reformer 则分别通过全局 token 和 LSH 哈希来近似全局注意力。
5.2 线性注意力(Linear Attention)
Performer 和 Linear Transformer 通过核技巧(kernel trick)将 softmax 注意力改写为:
$$\text{softmax}(QK^T)V \approx \phi(Q)(\phi(K)^T V)$$
利用矩阵乘法结合律将复杂度从 $O(n^2 d)$ 降至 $O(n d^2)$,代价是注意力权重的表达能力略有下降。
5.3 Flash Attention:IO 感知精确计算
Flash Attention(Dao et al., 2022)开创性地从 GPU 内存层次结构的角度优化注意力计算:通过分块(tiling)将注意力矩阵的计算分割成小块,每块完全在 SRAM 中完成,避免将 $O(n^2)$ 的注意力矩阵写入 HBM。同时利用重计算(recomputation)技术,在反向传播时重新计算注意力权重而非存储,从而在不牺牲精确性的前提下将内存占用从 $O(n^2)$ 降至 $O(n)$。Flash Attention 2 进一步优化了并行策略和 IO 模式,在 A100 GPU 上实现了理论最大吞吐的 73%。
5.4 分组查询注意力(GQA)与多查询注意力(MQA)
Shazeer (2019) 提出的多查询注意力(MQA)让所有头共享同一组 K 和 V,大幅减少 KV Cache 的内存占用。Ainslie et al. (2023) 提出的分组查询注意力(GQA)则是在 MQA 和标准多头注意力之间取折中:将头分组,每组共享一组 KV。GQA 已成为 LLaMA 2/3、Mistral 等大规模语言模型的标准配置。
6. 注意力的信息论与可解释性
从信息论角度,注意力权重 $\alpha_{ij}$ 可以解释为:在给定整个序列的条件下,位置 $j$ 对位置 $i$ 的预测所提供的"信息量"。高注意力权重意味着模型认为该位置的信息对当前预测至关重要。
可解释性研究揭示了注意力的几个有趣性质:
- 注意力权重并非总是可靠的"重要性"指标(Jain & Wallace, 2019;Wiegreffe & Pinter, 2019)
- 注意力头存在"语言结构检测器"的功能分化
- 深层网络的注意力模式比浅层更多样化
- 对抗样本可以通过针对性操控注意力头来制造
7. 结语:注意力哲学
Transformer 的核心哲学是"关系重于位置"——不再依赖固定的循环或卷积结构,而是让模型动态地从数据中学习元素之间的关系。自注意力机制为模型提供了一个全局视角,每个元素都能"看到"并"关注"序列中的所有其他元素。
从 2017 年的原始论文到今天的 Flash Attention 3、Jamba(混合 Transformer-Mamba 架构),注意力机制的演进路线清晰地展示了深度学习研究的一个范式转变:从追求更大更深,到追求更高效的计算架构。当我们站在 2026 年回望,"Is All You Need"的宣言或许需要一个新的注脚:Attention Is All You Need, But How You Compute It Matters。
参考文献
- Vaswani, A., et al. (2017). Attention Is All You Need. NeurIPS.
- Dao, T., et al. (2022). FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness. NeurIPS.
- Dao, T. (2023). FlashAttention-2: Faster Attention with Better Parallelism and Work Partitioning. ICLR 2024.
- Ainslie, G., et al. (2023). GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints. EMNLP.
- Shazeer, N. (2019). Fast Transformer Decoding: One Write-Head is All You Need. arXiv:1911.02150.
- Voita, E., et al. (2019). Analyzing Multi-Head Self-Attention: Specialized Heads Do the Heavy Lifting. ACL.
- Jain, S., & Wallace, B.C. (2019). Attention is Not Explanation. NAACL.
- Press, O., et al. (2022). Train Short, Test Long: Linear Attention with Linear Biases Enables Input Length Extrapolation. ICLR.

发表评论 取消回复