引言:一场架构革命的起源

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)}$,注意力的计算可分解为三步:

  1. 相似度评分:计算 query 与每个 key 的相似度 $s_i = f(q, k_i)$
  2. Softmax 归一化:将评分转化为概率分布 $\alpha_i = \frac{e^{s_i}}{\sum_j e^{s_j}}$
  3. 加权求和:输出为 $\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。

参考文献

  1. Vaswani, A., et al. (2017). Attention Is All You Need. NeurIPS.
  2. Dao, T., et al. (2022). FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness. NeurIPS.
  3. Dao, T. (2023). FlashAttention-2: Faster Attention with Better Parallelism and Work Partitioning. ICLR 2024.
  4. Ainslie, G., et al. (2023). GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints. EMNLP.
  5. Shazeer, N. (2019). Fast Transformer Decoding: One Write-Head is All You Need. arXiv:1911.02150.
  6. Voita, E., et al. (2019). Analyzing Multi-Head Self-Attention: Specialized Heads Do the Heavy Lifting. ACL.
  7. Jain, S., & Wallace, B.C. (2019). Attention is Not Explanation. NAACL.
  8. Press, O., et al. (2022). Train Short, Test Long: Linear Attention with Linear Biases Enables Input Length Extrapolation. ICLR.
点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部