Lecture 05 · 很多次读取,可以并列成一次矩阵运算

R36 · 很多次读取,可以并列成一次矩阵运算

前页每个位置都有自己的读取结果。把这些需求并列成矩阵,检查行列与归一化轴是否还保留同样含义。

状态 b0

两个query并排成为两行,三个来源成为三列。先在分数表中定位第一行对应哪一次查询。

两query、三来源是通用读取子集,不是完整三token self-attention只有两行输出。

两次读取并列:2 query / 3 key;每行沿 key 归一化Q:2×2Kᵀ:2×3分数:2×31001×101011=101011未缩放点积;每行沿 key 轴归一化

状态 b2

A乘同一V后得到两行输出,第一行对应前面的单次手算。来源共享,但输出按需求分别保留。

两行输出属于两个query;不要把它们再次平均成一个“整句输出”。

两次读取并列:2 query / 3 key;每行沿 key 归一化Q:2×2Kᵀ:2×3分数:2×31001×101011=101011沿 key列归一化softmax → A0.4220.1550.4220.1550.4220.422×V:3×2200412=Y:2×21.2671.4660.7332.534一行输出对应一次查询未缩放点积;每行沿 key 轴归一化

状态 b3

高亮移到第二个query,并贯穿分数、权重和输出的第二行。K/V未变,输出身份始终由query行决定。

两次读取并列:2 query / 3 key;每行沿 key 归一化Q:2×2Kᵀ:2×3分数:2×31001×101011=101011沿 key列归一化softmax → A0.4220.1550.4220.1550.4220.422×V:3×2200412=Y:2×21.2671.4660.7332.534一行输出对应一次查询未缩放点积;每行沿 key 轴归一化

状态 b1

两行各自在三个key列间归一化。检查每行和为一;沿query方向归一化会改变问题。

两次读取并列:2 query / 3 key;每行沿 key 归一化Q:2×2Kᵀ:2×3分数:2×31001×101011=101011沿 key列归一化softmax → A0.4220.1550.4220.1550.4220.422未缩放点积;每行沿 key 轴归一化

公式与算例详情

用矩阵一次写出多次读取

本讲统一按行存 token。若 $Q\in\mathbb R^{n_q\times d_k}$,$K\in\mathbb R^{n_k\times d_k}$,$V\in\mathbb R^{n_k\times d_v}$,则 $QK^{\mathsf T}$ 是 $n_q\times n_k$ 的分数表。行 i 表示第 i 次查询;列 j 表示它对第 j 个可读位置的匹配。

$A=\operatorname{softmax}_{\text{key}}(QK^{\mathsf T})$ 在每一行内归一化,随后 $Y=AV\in\mathbb R^{n_q\times d_v}$。把 R31–R32 两次查询合成 $Q=[(1,0);(0,1)]$,K、V 不变,得到两行权重 $(0.422,0.155,0.422)$ 与 $(0.155,0.422,0.422)$;输出分别为 $(1.267,1.466)$ 与 $(0.733,2.534)$。

一个 query 应在可读位置之间分配总权重 1;若沿 query 行轴归一化,就变成每个 key 在不同查询之间分配总量,改变了读取定义。加入 batch、head 后,最后的 key 轴仍是 softmax 轴。批量多头的一般形状分别为 $Q:B\times H\times n_q\times d_k$、$K:B\times H\times n_k\times d_k$、$V:B\times H\times n_k\times d_v$,分数为 $B\times H\times n_q\times n_k$,每头输出为 $B\times H\times n_q\times d_v$。self-attention 才令两侧长度都等于 n;cross-attention 不要求相等。本页为对照前例暂未缩放;Transformer 页加入 $1/\sqrt{d_k}$ 与 mask。

原课页采用记录:M22 矩阵与读取对应。页码均按PDF物理页计。

继续学习

用两 query、三来源的形状表逐项写 Q/K/V、scores、A 与 Y 的维度,检查 A 每行和为 1。从读取到词预测中的读取链与LAB 02“E · 只改 q 或只改 V,分别会改变什么?”可继续核对两行 Y;加上 batch 与 head 后,确认 softmax 仍落在最后的 key 轴。