拓展阅读

注意力机制,逐步算清

手算 Q、K、V、softmax 和因果掩码。

推荐阅读 02 / 12本地中文导读

对应资料:Attention Is All You Need [S008]

沿着对象与状态理解本章

先在可见性表里选一个查询行,决定哪些Key位置允许参与;再看如何缩放和混合。多头改变表示的分组方式,位置旋转改变Q/K的比较,反向传播计算参数的影响,三者不是同一个步骤。

下方图解的固定输入在“输入与适用条件”中声明。它用于解释本章机制,不与本章其他独立例子的数值暗中接续。

动态图解 · F12

Mask是可见性表,不是额外语义

怎样防止读到未来,或者把PAD读成内容?

把注意力的分数表看成一张“谁可以读谁”的座位表。行代表接收者,列代表提供者;禁止格子不能参与概率分母。因果限制、PAD限制可以同时存在,但一个负责时间顺序,一个负责有效内容,不能互相替代。

因果当前位置不读取将来位置。
加性mask允许处加0,禁止处用−∞等价地排除。
绝对位置加上历史前缀后的位置,而不是当前小批次中的行号。

输入与适用条件:前3帧用3个有效位置;第4帧是明确的屏蔽数值对照;第5帧另设past=3、new=2展示缓存偏移。图内始终标出当前条件。

1 / 5 · 处理绝对位置0

第1步,共5步

窄屏可左右滑动图形,或点击“放大图形”。文字解释紧随图后。

Mask是可见性表,不是额外语义:处理绝对位置0行:当前Query;列:可被读取的KeyK0K1K2Q0100Q1110Q2111现在读第0行:1=允许,0=禁止。

位置不是数字大小比赛。因果规则只允许当前查询读取自己和更早的Key;后面的位置即使已经在训练输入数组中,也不能读。

允许Key位置 ≤ 0

默认静止。用“下一步”看完解释再继续;播放到最后一步自动停止。键盘聚焦播放器后,可用左右键逐步查看、空格播放/暂停。图中颜色辅助区分,含义同时用文字注明。

为什么需要

防止训练偷看目标,并排除只为组批存在的填充内容。

怎样实现

先按实际位置和有效长度构造关系,再核对所用API布尔mask语义。

可能的代价与误解

不同API的True可能表示允许或禁止;全行无可见Key还需明确策略,不能直接做普通softmax。

如何判断是否做对

用能暴露未来泄漏的数据,比较正确掩码与故意写错偏移的结果。

注意力公式的每个量对应什么

本篇对应《Attention Is All You Need》的核心机制。设三个Token的当前表示为矩阵X,投影得到Q、K、V。Query用来与Key匹配,匹配权重再作用于Value。它是模型内部连续计算,不是外部数据库检索。[S008]

Q = X Wq       K = X Wk       V = X Wv
scores = Q Kᵀ / √d_k
weights = softmax(scores + mask)
output = weights V

如果X有n行,每行隐藏维度d,Q和K每个头有d_k维,那么QKᵀ是n×n。它描述查询位置与被查询位置的配对分数。检查维度是理解公式最有效的方法之一。

手算一次组合

以下全部数值为原创教学例子。假设某位置对三个可见位置的分数是[0,1,2]。指数约为[1,2.718,7.389],归一化后权重约为[0.0900,0.2447,0.6652]。若Value某一维是[10,20,30],该维输出约为25.75。

输出不是直接复制30,而是加权组合。最高权重提供主要贡献,但另外两个仍有作用。真正模型还有多个头、残差和后续层,因此某个注意力最大位置不能完整解释最终回答。

加上因果掩码会怎样

假设当前位置只能看到前两个位置,第三个分数被掩码设为负无穷。softmax后第三个权重为零,前两个重新归一化为约[0.269,0.731]。Value第三项不应影响这个位置的输出。

这提供一个可测试性质:改变未来Value,当前因果输出应保持不变。配套实验用小矩阵验证这一点,不需要训练模型,也不声称复现任何商业模型的内部数值。

多头、位置与前馈为什么还需要

不同头使用不同投影,提供多个关系子空间;位置机制提供顺序信息;前馈网络对组合后的特征做非线性处理。它们共同形成表达能力,不能把模型简化成一个相似度矩阵。[S008][S012]

GQA让多个查询头共享较少KV头,影响缓存成本;MoE改变前馈专家的选择。二者都属于模型内部结构,和外部多个Agent协作不是一回事。[S013][S014]

两个常见误解

“注意力权重就是模型置信度。”不是。它是某层某头的信息组合权重,并非最终答案正确概率。

“有注意力就不会遗漏输入。”不是。计算允许信息交互,不保证训练后的网络对所有复杂约束都可靠使用。长上下文研究必须通过任务表现评价。[S085][S088]

完成本篇后,应能追踪矩阵形状、解释Mask、手算softmax,并知道公式没有承诺哪些能力。

继续深入:第1章 · 模型内部 或阅读拓展阅读目录1.3的逐项讲义。所有链接均为本地内容。

运行示例 · G02

从两段内容到一个混合向量,而不是选中一句话

输入与条件。当前查询 q=[1,0],可见Key为 k0=[1,0]、k1=[0,1],对应Value为 v0=[10,0]、v1=[0,20]。每头宽度2。

步骤与对象内部动作中间结果 / 新状态
1匹配分别算q与两个Key的点积得到 [1,0]。
2缩放两个分数都除以√2约 [0.707107,0]。
3归一化对两个可见位置做softmax约 [0.669762,0.330238]。
4混合第1个特征用两份Value的第1格加权0.6697615493×10+0.3302384507×0≈6.697615。
5混合第2个特征用两份Value的第2格加权0.6697615493×0+0.3302384507×20≈6.604769。
6得到输出把两格放一起约 [6.697615,6.604769],不是任何一份原始Value。

把过程连起来。匹配分数决定读取份额,Value决定混合什么。只改Value时,读取份额可以完全不变,但输出会变。

边界与反例。直接给Q/K/V以隔离注意力运算;真实网络还需先由输入投影得到它们。

依据与适用范围:[SDPA]。示例输入和场景由本书明确设定。

记录保存在本机浏览器。

输入关键词即可检索。

↑ ↓ 选择 Enter 打开Esc 关闭 · 仅本地搜索

阅读设置

阅读设置仅保存在本机浏览器,不上传任何数据。