注意力机制
假设两份信息分别用下面两个向量表示:
各取一半再相加,就得到
那么,各取多少由什么决定?注意力根据内容计算这些权重,不必始终各取一半。
算出两份信息的权重
要混合的两个向量称为值(value)。为了确定它们的权重,先引入查询(query),也就是用来检索信息的向量。
每份值还配有一个键(key),用来与查询比较、计算匹配分数。本例取
先只用 query 和 key 算权重。两个点积分别是 、。key 有两个分量,除以维数的平方根 后,分数为 。
Softmax 把分数转换为非负且总和为 1 的权重:先对分数取指数,再除以总和。
接着才混合 value:每个权重乘以同一位置的 value,再把结果相加。用舍入后的权重计算,输出约为
第一项更匹配,但输出仍包含第二个 value。温度、score 差异、重复 key 和 mask 都会改变混合;“关注了一个位置”通常不是二值事实。
在下图中改变 的任一分量,key 和 value 保持不变。取 时,两个分数都是零,权重为 ,输出为 ;取 时,两个权重对调,输出约为 。分数决定混合比例,value 决定混合的内容。
k1 = [1, 0]得分 0.707
权重 67.0%
k2 = [0, 1]得分 0.000
权重 33.0%
推广到任意多组 key/value,同样的计算写成
Query、key、value 是计算角色,不是天然语义标签。它们通常由输入经过不同学习投影得到;value 也不必与 key 相同。根据内容计算权重、再混合值的这种可微运算称为内容寻址。
两种常见打分
加性注意力可写为
缩放点积注意力为
若 query 与 key 的各坐标相互独立、均值为零且方差为 1,未经缩放的点积方差为 ,标准差为 ,Softmax 更容易进入饱和区域; 是控制尺度的一种设计,不是所有 attention 的普遍定律。
矩阵形式、形状和 mask
对 、、:
因此 的形状是 , 是 。mask 应在 Softmax 前作用:
- padding mask 排除占位元素;
- causal mask 排除未来位置;
- 结构 mask 可限制局部、图或块状连接。
采用 加性掩码时,整行被屏蔽会使所有 logits 都变成 ,普通 Softmax 无法定义概率分布。应查看所用 API 的行为并明确处理这类行,不能假设各实现都会返回同一个值。只要允许位置的 Q/K/V 表示保持不变,改变被屏蔽 token 的内容就不应改变未被屏蔽的输出。
沿 key 维归一化
中的 Softmax 分别沿每一行,也就是 key 维计算。加性掩码对允许连接取 ,对禁止连接取 。三个位置的因果序列中,第一行只能看 key 一,第二行能看 key 一和二,第三行能看全部三个。若允许位置的分数均为零,三行权重依次为 、、。当当前位置的输入用于预测下一个 token 时,对角线允许连接。原始 Transformer采用的就是这种约定。
key-padding mask 不会自动消除填充位置的 query 输出,损失或后续池化还须排除这些输出。不同 API 的布尔掩码约定不同,要确认 True 表示允许还是禁止。改变被屏蔽 token 不影响输出这一测试,前提是允许位置的 Q/K/V 保持不变:上游操作不能已经把被屏蔽的内容混入这些表示。
Self、Cross 与 Multi-head
- Self-attention:Q/K/V 来自同一组表示,但投影参数可不同;
- Cross-attention:query 来自一侧,key/value 来自另一侧;
- Multi-head attention:在多个投影子空间并行执行 attention,再拼接并投影。
多头提供多个计算通道,但不能保证每个 head 自动对应“语法”“指代”等稳定人类概念。head 可以冗余,也可能在重新参数化后改变而保持输出接近。
现代序列模型中的注意力并非从 Transformer 才开始。Bahdanau 等人在 RNN encoder–decoder 中,让每个解码步从多个 encoder state 构造不同 context;Luong 等又比较了 global/local 形式。Transformer 后来把 self-attention 提升为主要层内操作。
现代效率设计不是一回事
全连接 self-attention 形成 score,在 head 维数固定时,朴素实现的时间和中间显存随序列长度平方增长。常见改动解决不同瓶颈:
MQA/GQA 主要减少自回归解码的 K/V cache 和内存带宽;它们不会减少 query head 数,也不能从名字推断质量。报告时应写出 query head、K/V head、head dimension、窗口、dtype 和 kernel。
当任务只需固定状态的流式更新时,RNN/状态空间方法可能更合适;当局部结构很强时,卷积可能更节省数据和计算。attention 不是所有关系的默认答案。
注意力权重能解释什么
权重确实描述了某次前向计算中的路由系数,但它通常不足以证明因果重要性:
- 不同权重可能产生相似输出;
- value 与后续层会改变最终影响;
- 梯度、反事实替换和干预可能给出不同排序;
- 极尖或极平的分布都不自动代表好坏。
“Attention is not Explanation” 展示了把权重直接当解释的问题;后续反驳指出,在明确定义诊断目标和反事实测试时,attention 仍可能提供信息。合理结论是:权重可以成为诊断证据,但应与删除、替换或其他干预及任务验证结合,不能单独充当因果解释。
与其他笔记的连接
权重归一化使用的运算与 Softmax 回归相同,但这里的权重用来混合 value,不是在预测类别标签。Transformer解释注意力如何与位置信息、残差连接、归一化和前馈层组合。注意力变体与 KV Cache则沿着同一套 Q/K/V 形状,继续说明自回归推理与内存成本。
本文采用序列建模中的 Q/K/V 表述,因而偏重 NLP/Transformer 传统;视觉、集合、图和更早的统计核方法只覆盖到概念边界。