一句话定义
自注意力让序列中每个位置用「查询-键-值(QKV)」三组投影计算与所有位置的相关度并加权聚合信息,多头设计则让不同子空间并行关注不同类型的关系。
为什么重要
注意力是 Transformer 中唯一的「跨位置通信」算子,也是 LLM 上下文能力的物理来源——模型「记得前文」「引用指令」都发生在注意力里。它是面试、论文、工程优化(KV 缓存、稀疏化)中出现频率最高的机制,必须掌握到公式级。
前置知识
- kp-010(Transformer 总览)
核心概念
- 查询 Q / 键 K / 值 V:由隐藏状态经三个线性投影得到;Q 与 K 点积衡量相关度,V 携带被聚合的信息。
- 缩放点积注意力:点积除以 √d_k 抑制方差膨胀,防止 softmax 饱和。
- 多头(Multi-Head):h 组独立 QKV 并行计算再拼接投影,分组捕捉句法、指代、位置等不同模式。
- 注意力权重:softmax 后的概率,可解释为「本位置对各上下文位置的关注分配」(解释性有限,需谨慎)。
- 自注意力 vs 交叉注意力:前者 QKV 同源,后者 Q 来自解码侧、KV 来自编码侧。
原理与机制
对每个位置 t:其查询向量与所有位置(含自身)的键做点积得到分数,经缩放与掩码后 softmax 归一化成权重,按权重对值向量加权求和得到新表示。复杂度 O(T²·d):长文本下平方项主导,是长上下文难题的根源(见 kp-014)。多头把 d_model 切成 h 份分别投影,参数量不变但表达能力分组增强。因果掩码把未来位置的分数置为负无穷,softmax 后权重为 0。
公式或模型
缩放点积注意力与多头拼接:
Attention(Q,K,V) = softmax(QKᵀ / √d_k + M) · V
MultiHead(X) = Concat(head_1, ..., head_h) · W_O
MultiHead(X) = Concat(head_1, ..., head_h) · W_O
其中 M 为因果掩码(未来位置为 −∞)。
图示
"它" ←指代→ "猫": Q("它")·K("猫") 分数高 → softmax 后权重 0.7
→ 新的 h("它") ≈ 0.7·V("猫") + 0.3·V(其他)
句法头: 关注相邻词 指代头: 关注名词短语 位置头: 关注固定偏移
直观类比
像开卷考试:题目是 Query,书里每段话有标题索引(Key)与正文内容(Value)。你先扫标题判断哪段相关(点积打分),再按相关度把内容「按比例抄进答案」(加权求和)。多头像多位阅卷人,各自关注不同章节。
实例或案例
指代消解:在「猫追老鼠,它钻进了洞」中,指代头的注意力把「它」大量权重分配给「猫」或「老鼠」之一(由语义与语序决定),从而在表示中携带正确指代。工程侧,注意力矩阵是显存大户(T² 量级),催生了 kp-014 的整条优化线。
常见误区
- 「注意力权重 = 模型的解释」:权重图直观但不可靠,注意力不等于归因。
- 「softmax 后的权重就是概率意义上的置信」:只是归一化的关注分配,数值含义有限。
- 「去掉缩放因子影响不大」:d_k 较大时点积方差随维度线性增长,无缩放会导致梯度消失般的饱和。
与其他知识点的关系
自测题
- 写出缩放点积注意力公式并解释每个成分。答案要点:softmax(QKᵀ/√d_k + M)V;Q 找谁、K 被找到、V 给信息、缩放稳方差、M 因果掩码。
- 为什么用 √d_k 缩放?答案要点:d_k 维独立点积方差随维度累积,除以 √d_k 使分数方差近似为 1,避免 softmax 饱和。
- 多头注意力相对单头的收益来源?答案要点:不同头在不同表示子空间学习不同关系模式,等于并行多视角。
延伸阅读
- Attention Is All You Need(Vaswani 等,2017):QKV 与多头机制的原始定义