R36.md · 可读全文

这里保留原文的中文、公式标记、代码和链接。可直接交给 Agent 读取,也可选取下方原文复制。此入口返回 HTML;原始 .md / .py 文件仍保留,完整候选包同时包含 UTF-8 原件。

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

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

<span id="r36-b0"></span>

## 状态 b0

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

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

<span id="r36-b2"></span>

## 状态 b2

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

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

<span id="r36-b3"></span>

## 状态 b3

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

<span id="r36-b1"></span>

## 状态 b1

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

## 公式与算例详情

### 用矩阵一次写出多次读取

本讲统一按行存 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 矩阵与读取对应](sources.html#M22)。页码均按PDF物理页计。

### 继续学习

用[两 query、三来源的形状表](lecture.html#read-R36)逐项写 Q/K/V、scores、A 与 Y 的维度,检查 A 每行和为 1。[从读取到词预测](https://codingai-lec05.pages.dev/course/knowledge/attention-to-prediction.html)中的读取链与[LAB 02](https://deepnote.com/workspace/ise3309jingao-5ba66b0a-4283-4f5a-ae06-3f68d3201e99/project/Fall-26-Lecture-05-841ec8e7-e352-4840-b628-d3742b03d6d0/notebook/LAB-02-bba1d024d8e64a589c290b09381de692?utm_content=bba1d024d8e64a589c290b09381de692&utm_source=openai&utm_medium=mcp&utm_campaign=openaimcp&utm_term=get_notebook)“E · 只改 q 或只改 V,分别会改变什么?”可继续核对两行 Y;加上 batch 与 head 后,确认 softmax 仍落在最后的 key 轴。