Lecture 05 · 多头先分别读取,再让通道重新混合

R43 · 多头先分别读取,再让通道重新混合

最小模型用一路读取闭合了预测。现在让同一位置保留多路内容,看看它们怎样合并回原来的表示宽度。

状态 b4

默认图为同一位置画出两路投影与读取。两路结果仍是内容向量,不是两个词表答案。

多头本身不改变哪些位置合法可读;这个范围仍由任务和mask决定。

同一位置,两路读取当前 xᵢ 提供 query;K/V 来自全部允许读取的位置xᵢhead 1投影 → 匹配 → 汇总head 2投影 → 匹配 → 汇总不同投影可以保留不同读取结果。

状态 b5

两路结果在concat处并列保留,观察通道如何从各自输出进入同一行。

同一位置,两路读取当前 xᵢ 提供 query;K/V 来自全部允许读取的位置xᵢhead 1投影 → 匹配 → 汇总head 2投影 → 匹配 → 汇总拼接先保留两路通道,再做可学习混合。

状态 b6

输出投影将合并内容变回模型宽度,为下一页与原表示相加作准备。

同一位置,两路读取当前 xᵢ 提供 query;K/V 来自全部允许读取的位置xᵢhead 1投影 → 匹配 → 汇总head 2投影 → 匹配 → 汇总拼接W_O得到同一位置的修正,再接回残差主路。

状态 b0

备用数值态追踪“我”的第一头:按给定特征投影,读取三个来源并形成二维读出。

X:我 (1,0,1,0) 给 (0,1,0,2) 书 (1,1,0,1)Head 1Q₁=K₁:取特征1,2;V₁:取3,4Q₁ = K₁100111V₁100201α₁ ≈ (0.401, 0.198, 0.401)z₁ ≈ (0.401, 0.797)构造数值 · 全可见读取 · 每头 dₖ = 2

状态 b1

第二套投影形成另一组权重与读出。比较两头的输入角色相同、参数不同。

X:我 (1,0,1,0) 给 (0,1,0,2) 书 (1,1,0,1)Head 1Q₁=K₁:取特征1,2;V₁:取3,4Q₁ = K₁100111V₁100201α₁ ≈ (0.401, 0.198, 0.401)z₁ ≈ (0.401, 0.797)Head 2Q₂:取3,4;K₂:取2,1;V₂:取1,2Q₂100201K₂011011V₂100111α₂ ≈ (0.198, 0.401, 0.401)z₂ ≈ (0.599, 0.802)构造数值 · 全可见读取 · 每头 dₖ = 2

状态 b2

两份二维结果拼接成四维,分别保留各头通道。拼接没有把两头逐项相加。

X:我 (1,0,1,0) 给 (0,1,0,2) 书 (1,1,0,1)Head 1Q₁=K₁:取特征1,2;V₁:取3,4Q₁ = K₁100111V₁100201α₁ ≈ (0.401, 0.198, 0.401)z₁ ≈ (0.401, 0.797)Head 2Q₂:取3,4;K₂:取2,1;V₂:取1,2Q₂100201K₂011011V₂100111α₂ ≈ (0.198, 0.401, 0.401)z₂ ≈ (0.599, 0.802)同一 token 的 concat:(0.401, 0.797, 0.599, 0.802)构造数值 · 全可见读取 · 每头 dₖ = 2

状态 b3

W_O混合拼接通道得到O₁。这一行接着进入R44,与同位置原x₁相加。

保留两头读出,拼接后再用 W_O 混合z₁ (0.401, 0.797)z₂ (0.599, 0.802)0.4010.7970.5990.802W_O:4×41010010110−10010−1O₁ = concat(z₁,z₂)W_O11.599−0.198−0.006四维输出,可以接回四维输入的残差。构造数值 · 全可见读取 · 每头 dₖ = 2

公式与算例详情

两头读取怎样合成一个位置的输出

以下是 R43–R45 连续使用的全可见、未训练 post-norm 局部算例,关闭 dropout;与 B01 的 causal 模型仅作算子对应,不是同一次前向。可从 b0 逐步复算,或回到默认解释 b4。

输入三行 $X=[(1,0,1,0);(0,1,0,2);(1,1,0,1)]$,分别标记我、给、书;标记只是保持 token 对应,数字不声称表达其真实语义。$d_{model}=4$,两个 head 各取 $d_k=d_v=2$,各自点积分数都除以 $\sqrt2$ 后再沿 key 轴做 softmax。

用从0开始、右端不含的 Python 切片记法,Head 1 的投影为 $Q_1=K_1=X[:,0:2]$,即取第一、第二特征;$V_1=X[:,2:4]$,即取第三、第四特征。Head 2 的 $Q_2$ 取第三、第四特征,$K_2$ 取第二、第一特征,$V_2$ 取第一、第二特征。写成参数矩阵时每个 W 都是 $4\times2$;源数值记录给出了这些矩阵,图中显示了投影等价的特征选择。对第一个 token,head 1 的权重约为 $(0.401112,0.197776,0.401112)$,读出 $(0.401112,0.796664)$;head 2 的权重为 $(0.197776,0.401112,0.401112)$,读出 $(0.598888,0.802224)$。

拼接得到 $r=(0.401112,0.796664,0.598888,0.802224)$。令 $W^O$ 的四行依次为 $(1,0,1,0),(0,1,0,1),(1,0,-1,0),(0,1,0,-1)$,则 $rW^O=(1.000000,1.598888,-0.197776,-0.005560)$。两头先各自产生结果,再由输出投影组合,而不是简单平均热图。真实 head 也不必固定承担“语法头”“语义头”等人工职业。

参考与采用

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

继续学习

如果两头结果怎样合并仍不清楚,先从完整局部数值核对两个 2 维读出、concat 与 Wᴼ;Transformer 的信息流的“沿一行目标表示走一遍”将其接回整块。CLS 02“7 · 多头、残差、FFN,各自改变什么”解释职责,LAB 03“F · 跟着一个 token 穿过完整 encoder block”复算同一链;之后另开 causal 配置时须重新检查 mask,不能混用全可见结果。