Overview

多头注意力机制将查询(Query)、键(Key)、值(Value)向量拆分为多个头,在每个头的子空间中独立计算注意力,再将结果拼接合并。这种设计使模型能够同时关注不同位置的不同表示子空间中的信息,捕获丰富的语义特征。多头注意力后续演化出 MHA(多头独立 KV)、MQA(全局共享单 KV)和 GQA(分组共享 KV)三种变体。

Key Ideas

  • 拆分与并行:将维度 d_model 拆分为 h 个头,每个头维度 d_k = d_model / h,各头独立计算 Attention(Q_i, K_i, V_i)
  • 拼接与投影:多头结果 Concat 后通过输出投影矩阵 W_O 映射回 d_model 维度
  • 多头优势:不同头可以关注不同类型的依赖关系(如语法、语义、位置),提供更丰富的表示
  • 三种变体:MHA 每头独立 KV(质量最高)、MQA 全局共享单个 KV(效率最高)、GQA 按组共享 KV(平衡方案)
  • 因果注意力掩码:在自回归生成中使用下三角掩码,防止看到未来位置的信息
  • Transformer — 多头注意力是 Transformer 的核心组件
  • LinearTransformation — QKV 投影本质上是线性变换
  • GQA — Grouped-Query Attention 是多头注意力在效率上的优化变体
  • FlashAttention — Flash Attention 优化了多头注意力的计算效率
  • KVCache — KV Cache 缓存多头注意力中的 Key/Value 矩阵