缩放点积注意力:QKV 与加权取信息
本文基于模型知识整理(生成时未联网核对),公式与缩放因子推导建议对照原论文 §3.2 复核。
一句话定义
缩放点积注意力把每个 token 映射为三个向量——Query(我在找什么)、Key(我是什么标签)、Value(我的实际内容)——用 Q 与所有 K 的点积算相关性、除以 √d 缩放、softmax 成权重、对 V 加权求和: $$\text{Attention}(Q,K,V)=\text{softmax}\!\left(\frac{QK^\top}{\sqrt{d_k}}\right)V$$ 一句话:按内容相关性,从全序列加权取信息。
为什么重要
它是 Transformer 的唯一信息混合机制(FFN 不混 token 间信息)——所有"理解上下文"的能力(代词消解、语法依存、少样本对齐)都由这一行公式承担。它同时是完全可微分的"软字典查询":一个可学习的、端到端训练的检索系统。
前置知识
kp-001(全景);矩阵乘法、softmax。
核心概念
- 三向量的角色:
- Query:当前 token 的"提问"(代词"它"问:我指代的名词在哪); - Key:每个 token 的"可被检索的标签"(名词 token 的 K 携带"我是名词"特征); - Value:token 携带的实际内容(语义信息本身)。 三者由同一输入 x 经三个可学习矩阵 $W_Q,W_K,W_V$ 投影而来——注意力是有参数的操作。
- 缩放点积:$QK^\top/\sqrt{d_k}$。除以 √d 的原因:d 维独立分量点积的方差 ∝ d——不缩放时大 d 使点积值巨大 → softmax 进入饱和区 → 梯度近零(kp-023 概率 softmax 饱和的姊妹篇);√d 恰好把方差归一回 1。
- softmax 权重:每个 Query 对全序列的 Key 得到一排非负、和为 1 的权重——Value 的凸组合。权重矩阵(n×n)即"注意力图"(可视化:代词到指代对象的高权重连线)。
- 因果掩码(Decoder 版):把 K^TQ 中"未来位置"的分数置 −∞(softmax 后为 0)——自回归语言模型禁止偷看未来(kp-012)。
原理与机制
为什么"软字典"是正确抽象:硬字典查询=按 key 精确匹配返回一个 value;注意力=按 key 相似度返回所有 value 的加权和——且相似度可学习、查询可上下文相关。"可微分的软检索"使它嵌入神经网络端到端训练。
为什么用点积算相似度:① 高效——矩阵乘法一次算全对(GPU 最优操作);② 够用——训练后 W_Q/W_K 会把"相关的内容"旋转到同一方向(点积自动变大)。与加性注意力(Bahdanau,小 MLP 算分数)相比,点积在实现与速度上完胜(kp-033 的演进史)。
多 Query 并行即矩阵化:n 个 query 的 n×d_k 矩阵与 d_k×n 的 K 转置相乘 → n×n 分数矩阵 → 行 softmax → 乘 n×d_v 的 V 得 n×d_v 输出——一次前向 = 全序列所有位置的注意力(kp-001 并行优势的机制落实)。
信息如何流动:一层注意力后,每个 token 的表示已融合全序列的相关信息;堆叠 L 层 → 信息在"混合(注意力)—加工(FFN)"交替中逐层精化——残差连接(kp-006)保证信息高速路不中断。
图示
W_Q W_K W_V
x ──► Q, K, V (三个可学习投影)
分数 = Q·Kᵀ / √dₖ ← 相关性 + 缩放
(Decoder: 未来位置置 −∞ 因果掩码)
权重 = softmax(分数, dim=−1) 每行和为1
输出 = 权重 · V ← 加权取内容
例: "它"的Q 与 "猫"的K 高分 → 融合"猫"的V (指代消解)
直观类比
注意力像"带权查阅全体专家":你(Query)带着问题,向全房间每个人的名牌(Key)比对相关度,然后按相关度把他们 expertise(Value)按比例混合抄录——名不符实的人(K 华丽 V 空洞)会被训练过程纠正。√d 缩放像"控制音量":房间太大时大家声音都太大(点积饱和),统一调回正常音量才能听出相对强弱。
实例或案例
- 指代消解:"动物因为太累没有过桥。它太累了。"——"它"的 Q 与"动物"的 K 高匹配,V 的语义被吸入"它"的新表示。
- 语法依存:动词的 Q 对主语/宾语的 K 有稳定高权重——注意力图与句法树高度相关(可视化研究的著名发现)。
- 少样本对齐:GPT 的 ICL(kp-029)中,"问题 pattern"的 Q 检索上下文中示例的 K——注意力是上下文学习的执行层。
常见误区
- 误区一:"注意力权重=重要性/解释"。权重只说明"信息从此处流向彼处",因果解释需额外分析(注意力≠解释的学术争论)。
- 误区二:"忘记除 √d 也能训练"。小 d 无感,d=64/128 时 softmax 饱和、训练停滞——√d 不是可选优化而是必需。
- 误区三:"Q/K/V 是三种不同的数据"。它们是同一序列的三个线性投影——自注意力中 Q、K、V 全部来自 X 自己(Cross-attention 才有外部 K/V,kp-004)。
与其他知识点的关系
自测题
- 写出缩放点积注意力公式并解释每个矩阵的形状。
答:$\text{softmax}(QK^\top/\sqrt{d_k})V$;Q: n×d_k,K: n×d_k,Kᵀ: d_k×n,分数 n×n,V: n×d_v,输出 n×d_v。
- 为什么除以 √d_k 而不是 d_k?
答:d_k 维独立分量点积方差 ∝d_k——除以 √d_k 恰使方差归 1(保持 softmax 输入的标准量级)。
- 因果掩码加在哪里、为什么是 −∞?
答:加在 softmax 前的分数矩阵(上三角置 −∞);softmax(−∞)=0——未来位置的权重精确为零且梯度也为零。
延伸阅读
- Vaswani 等 2017 §3.2(原论文注意力节)。
- 3Blue1Brown《Attention in transformers》视频(QKV 的逐步动画)。
- Lilian Weng 博客 "Attention? Attention!"(注意力家族综述)。