Transformer 注意力机制四问
Transformer 注意力机制四问
核心命题:通过 W_V 物理含义、QK 点积的语境依赖、MHA vs 顺序 Single-Head 的非等价、d_model 必须均分给 head 的工程原因四条线索,把 Transformer 注意力机制的核心约束拆透——结论是 attention 的”魔力”全部来自残差流共享 + 多视角并行 + 维度切分的参数预算约束,没有一条是”必须”的数学定理,全部是工程权衡的稳态。
一、W_V 的物理与语言学含义
Self-attention:Q = XW_Q, K = XW_K, V = XW_V,计算 Attention(Q,K,V) = softmax(QK^T / √d_k) V。
关键分工:W_Q 和 W_K 共同决定路由模式(通信图,哪个 token 关注哪个);W_V 决定路由建立后流过的内容(消息内容)。
语言学类比:W_V 提取 token 的语义有效载荷——可被其它 token “吸收”以更新自身表示的语义内容。W_Q/W_K 是寻址机制,W_V 是内容选择机制。多层堆叠中每层的 W_V 都重新决定”这一层让哪些信息向下流”。
二、QK 点积是否在 token 对上唯一确定
反例测试:句子 A:a power bank dropped into the river. 句子 B:The river bank is close to here. 两个 bank 与 river 之间的 W_Q·W_K 点积相同吗?
第 0 层:token embedding 相同(上下文无关固定向量),但位置编码不同(A 中 bank 在位 2、river 在位 6;B 中 river 在位 1、bank 在位 2)→ Q_bank、K_river 都不同 → 点积不同。
更深层:输入是上一层 attention 的输出,是上下文相关表示。A 中 bank 已被”power…dropped…river”浸染;B 中 bank 已被”river…close to here”浸染——第 2 层后两个 bank 根本不是同一个向量。
结论:QK 点积是上下文敏感的,不是 token-对唯一确定——这是 Transformer 解决多义词问题的核心机制。第 0 层位置编码已造成差异;深层差异因上下文浸染指数级放大。
三、MHA vs 顺序 Single-Head 的非等价
MHA:输入切成 h 个 head,每个 head 独立 W_Q^i/W_K^i/W_V^i,concat 后过 W_O。MultiHead = Concat(head_1, …, head_h) · W_O。
假想顺序 Single-Head:单个全维度 attention 重复 96 次,每次输入是前一次输出。
两者不等价。MHA 是同层 h 个 head 在同一输入上的并行多视角投影;顺序 Single-Head 是 96 个不同输入上的 attention——每次看到的是已被前一次改写过的表示。数学上 MHA 在 h 维子空间做”水平展开”,顺序 Single-Head 在层数维度做”垂直深化”,两者是不同的归纳偏置。
直觉:MHA 让模型”同时从 h 个角度看一个句子”(同一时刻捕捉语法+语义+共指等多种关系);顺序 Single-Head 让模型”96 次重新理解一个句子”(只是更深的单一视角)。MHA 被工程上验证为更高效的关系编码方式。
四、注意力头数量的决定因素
硬约束
d_model 必须能被 h 整除。每个 head 维度 d_k = d_model / h,整除性排除了大量候选。BERT-base 的 d_model=768 → h 只能是 768 的因数(1, 2, 3, 4, 6, 8, 12, 16, 24…)。
核心 trade-off
头数多、每头维度小 vs 头数少、每头维度大——零和博弈。业界经验收敛到 d_k = 64 或 128:
| 模型 | d_model | h | d_k |
|---|---|---|---|
| BERT-base | 768 | 12 | 64 |
| GPT-3 | 12288 | 96 | 128 |
| Llama-2-70B | 8192 | 64 | 128 |
| DeepSeek-V3 | 7168 | 128 | 56(非标准) |
d_k 才是实际的锚定量,h 由 d_model / d_k 被动推导。模型越大 d_model 越大,头数自然越多——不是”需要更多注意力模式”,是维持 d_k 不变下的均匀分配。
算力与硬件
h 还受 GPU SM(Streaming Multiprocessor)数量、Flash Attention 实现的 block size 约束影响——这一层不在数学层,在工程效率层。
五、为什么 d_model 必须均分给 head(GPT-3 实例)
GPT-3:d_model=12288, h=96, d_k=128。等距切分不是数学必需,是工程必需。
备选 1(每 head 各自全维度投影):W_Q 形状 d_model × d_model 每 head 一份,参数量 3 × 96 × 12288² ≈ 4.34T,仅 attention 投影就吞掉全模型预算——经济上不可行。
备选 2(非均匀切分):不同 head 不同 d_k。问题是 W_O 需重新设计(不再是简单 concat)、CUDA kernel 假定 batch 维度对齐被破坏、且无证据表明能带来精度提升(d_k 在 64-128 区间内对单 head 已足够)。
均分的设计优势:参数预算与单头全维度等价(W_Q/W_K/W_V 是单个 d_model × d_model 矩阵被切 h 块);CUDA 并行性最优(无 padding 浪费);W_O 设计简洁;MQA/GQA 等变体的基础(MQA 让所有 head 共享 K/V 保留独立 Q;GQA 分组共享,都依赖均分基线)。
结论:均分切分是”参数预算固定 + 工程效率最优”的稳态选择,不是数学定理。DeepSeek-V3 的 d_k=56 是打破基线的例子,但需要在其他层补偿。
Rick 的关键介入
[!quote] Rick 的关键介入 Transformer 架构里 W_V 矩阵的物理含义 / 语言学含义是什么?
Rick 不满足于”W_V 是 Value 投影”这种循环定义,要求物理含义 + 语言学含义——这是从工程师入门级问题到 ML 研究问题的跃迁姿势。
[!quote] Rick 的关键介入 另一个问题,W_Q 和 W_K 的点积是针对 token 组唯一确定的吗?
比如:句子 A:a power bank dropped into the river. 句子 B:The river bank is close to hear.
两个句子里 bank 和 river 之间的 W_Q 和 W_K 的点积 是相同的吗?
Rick 用”bank”的多义词案例做反直觉测试——如果点积是唯一确定的,Transformer 就处理不了一词多义。“close to hear” 是 typo(应为 here),保留原貌。
[!quote] Rick 的关键介入 很好。我们来讨论 Multi-Head Attention. Multi Head Attention 是分别执行,然后累加。这和 Single Head Attention 执行相同次数(比如 96 次),但每次执行均在前一次的基础上完成,最终的结果会一致吗?为什么?逐步推理
这条问题暴露了 MHA 的真正功能——并行多视角而非串行迭代深化。Rick 用反事实架构问出归纳偏置的差异。
[!quote] Rick 的关键介入 后续讨论以 GPT3 的真实数字和处理方式为例。为什么 d_model 必须要被均匀切分给每个 head, 而不是其它方式?
Rick 锁死具体模型(GPT-3:d_model=12288, h=96, d_k=128)并追问设计选择的反事实——把”业界惯例”压成”为什么必须如此”的逻辑链。这是 Rick 的标志学习手法:拒绝接受惯例,要求每个工程选择都通过反事实测试。
关联节点
- Attention — 上位概念
- c03 - Transformer 核心机制与注意力变体 — 注意力变体演进
- KV Cache — Attention 推理阶段的关键
- MQA / GQA / MLA — 注意力变体演进的具体节点(节点待建)