R

Transformer 注意力机制四问

创建 2026-05-16 更新 2026-05-18 2 条双链 共创

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_modelhd_k
BERT-base7681264
GPT-31228896128
Llama-2-70B819264128
DeepSeek-V3716812856(非标准)

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 的标志学习手法:拒绝接受惯例,要求每个工程选择都通过反事实测试。

关联节点