跳转到内容
输入关键词后按 Enter 打开第一个结果。

Transformer 注意力机制 三级解读:从入门到精通

Transformer 注意力机制 · 三级解读

Section titled “Transformer 注意力机制 · 三级解读”

想象你在一个嘈杂的聚会上,同时有十个人在跟你说话。但你不是平均地听每个人——你会根据”谁说的更重要”来分配注意力。如果老板在说下周的截止日期,你会全神贯注;如果有人在聊午饭吃什么,你可能就忽略。

Transformer 的注意力机制做的事情完全一样:当它处理一段文字时,对于每一个词,它会去”看”句子里的所有其他词,然后决定每个词有多重要。比如:

“那只趴在的垫子上”

当 AI 读到”它”这个字的时候,注意力机制会让它把最多的注意力放在”猫”上,而不是”垫子”或”趴”。这样 AI 就能理解”它”指的是猫,而不是垫子。

这就是注意力的全部精髓——动态地决定”现在该关注什么”


注意力机制的核心是三个矩阵:Query(查询)Key(键)Value(值)。这是一个经典的检索类比:

  • 你在搜索引擎输入关键词 → Query
  • 每篇文档的标题/摘要 → Key
  • 文档的实际内容 → Value
输入序列: [我, 爱, 自然, 语言, 处理]
线性投影 (3个不同的权重矩阵)
Q = X @ Wq K = X @ Wk V = X @ Wv
scores = Q @ K.T # 计算每对 token 的关联分数
scores = scores / sqrt(d_k) # 缩放,防止数值过大
weights = softmax(scores) # 归一化为概率分布
output = weights @ V # 加权求和,得到最终表示

不只用一组 Q/K/V,而是同时用多组(比如 8 组),每组学不同的关注模式:

  • 头 1 可能关注语法关系(主语↔谓语)
  • 头 2 可能关注语义相似度(近义词)
  • 头 3 可能关注位置信息

最后把所有头的输出拼接起来,再做一次线性变换。

纯注意力没有位置概念(“猫吃鱼”和”鱼吃猫”的分数一样),所以要用位置编码注入顺序信息:

PE(pos, 2i) = sin(pos / 10000^(2i/d_model))
PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))
x_input = token_embedding + PE
类型Q 来源K/V 来源用途
Self-Attention输入序列同一输入编码器内部、理解自身
Cross-Attention目标序列源序列解码器关注源语言
Masked Self-Attention输入序列同一输入(屏蔽未来)解码器自回归生成

1. Scaled Dot-Product Attention 的数学定义

Section titled “1. Scaled Dot-Product Attention 的数学定义”

给定查询矩阵 Q ∈ ℝ^(n×d_k),键矩阵 K ∈ ℝ^(n×d_k),值矩阵 V ∈ ℝ^(n×d_v):

Attention(Q, K, V) = softmax(QK^T / √d_k) · V

缩放因子 √d_k 的动机:当 d_k 较大时,点积的方差为 d_k,会导致 softmax 进入饱和区(梯度消失),除以 √d_k 将方差归一化为 1。

MultiHead(Q, K, V) = Concat(head_1, …, head_h) · W^O

其中 head_i = Attention(QW_i^Q, KW_i^K, VW_i^V)。典型配置 d_k = d_v = d_model / h。

方法每层复杂度顺序操作数最大路径长度
Self-AttentionO(n² · d)O(1)O(1)
RecurrentO(n · d²)O(n)O(n)
CNN (受限核)O(n · k · d²)O(1)O(n/k)

注意力的 O(n²) 复杂度是核心瓶颈,驱动了后续大量高效注意力研究。

Tiled 分块计算 + IO-aware:将 Q/K/V 分块加载到 SRAM,计算分块 softmax,避免物化完整的 n×n 注意力矩阵。实现精确注意力,但 IO 复杂度从 O(n²) 降至 O(n²d/M)(M 为 SRAM 大小),实际加速 2-4x。

Linear Attention (Katharopoulos et al., 2020)

Section titled “Linear Attention (Katharopoulos et al., 2020)”

利用 kernel trick 将 softmax 近似为特征映射,先计算 S = φ(K)^T V,再计算 φ(Q)S,复杂度从 O(n²d) 降至 O(nd²)。

  • Longformer:局部窗口 + 全局 token
  • BigBird:random + window + global,证明是 Turing complete
  • StreamingLLM:仅缓存最近 n 个 token + attention sink,实现无限上下文推理

Multi-Query Attention / Grouped-Query Attention

Section titled “Multi-Query Attention / Grouped-Query Attention”
  • MQA:多个头共享同一组 K/V,推理时 KV cache 减少 h 倍
  • GQA:折中方案,g 组共享,Llama 2/3 采用此设计

分布式注意力:将序列切分到多个 GPU,通过 ring communication 传递 KV block,实现超长序列(100K+ tokens)的分布式训练。

Olsson et al. (2024) 发现训练后的 Transformer 中,注意力头的行为趋近线性组合,许多头的 softmax 温度极高(接近均匀分布),表明大部分头可能在执行比预期更简单的操作

Elhage et al. (2021) 发现 Transformer 通过组合两个注意力头实现 in-context learning:Head A 在前文复制 token 表示,Head B 利用这些表示检索之前出现过的序列完成 next-token prediction。这是 grokking 现象的关键机制。


  1. Vaswani et al., “Attention Is All You Need”, NeurIPS 2017
  2. Dao et al., “FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness”, NeurIPS 2022
  3. Katharopoulos et al., “Transformers are RNNs: Fast Autoregressive Transformers with Linear Attention”, ICML 2020
  4. Ainslie et al., “GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints”, EMNLP 2023
  5. Elhage et al., “A Mathematical Framework for Transformer Circuits”, 2021
  6. Olsson et al., “Are Sparse Mixture of Experts a Substitute for Dense Models?”, 2024