自注意力机制:Q、K、V 详解
深入 Transformer 的心脏——自注意力:Query/Key/Value 的直觉与矩阵运算,手推一遍注意力分数。
一个直觉:图书馆检索
理解"猫追老鼠,它跑得很快"里的"它"指谁?每个词会发出查询(Query)"我在找我的指代对象",每个词挂着键(Key)"我是名词/主语…"和值(Value)"我的语义内容"。Q 和 K 匹配度高的词,其 V 就被大量吸收 —— "它"通过注意力直接"看到"了"老鼠"。
矩阵运算全过程
输入 X (n×d) 分别乘三个权重矩阵:
Q = X·Wq K = X·Wk V = X·Wv
注意力分数 = softmax( Q·Kᵀ / √d ) · V
└─ 相关性打分 ─┘ └ 加权取值 ┘
- Q·Kᵀ:n×n 的相关性矩阵,第 i 行第 j 列 = 第 i 个词对第 j 个词的关注度原始分;
- /√d:维度大时点积值过大,softmax 会饱和,缩放保持梯度健康;
- softmax:每行归一化成总和为 1 的注意力分布;
- 乘 V:每个词的新表示 = 全句词向量的加权平均,权重就是注意力分布。
关键性质
- 全连接一步到位:任意两词直接交互,长距离依赖不再"层层传话";
- 动态权重:普通神经网络的权重是训练后固定的,注意力的"权重"随每个输入动态计算 —— 这是它强大的根源;
- 计算量 O(n²):n 是序列长度 —— 这也是长上下文昂贵的根本原因(见推理优化课)。
自注意力 vs 交叉注意力
Q、K、V 来自同一个序列叫自注意力;Q 来自解码端、K/V 来自编码端(如翻译时看原文)叫交叉注意力。
📝 课后练习
quiz-1 自注意力中 Q·Kᵀ 矩阵乘法得到的是?