Skip to content

第 6 章:把逐个向量的计算写成矩阵,再变成多头 ​

返回目录

前面我们逐个q与k计算,再逐个v加权。现在才把这些运算装进矩阵,说明一次处理整句时每一行仍在做同样的事。大写字母只是把已经理解的计算合在一起。

6.1 先看前五个位置怎样同时得到五个新向量 ​

这里用前五块“患者、服用、华法林、后、出现”作输入。下面的5×5只表示这个输入长度;完整句子包含七块,长度变化后矩阵的行数与列数相应变化。

我们已经知道:

Q=XW_Q,\quad K=XW_K,\quad V=XW_V

假设输入 5 个 Token,每个注意力头的 Q、K 都是 64 维。

那么:

Q,K\in\mathbb R^{5\times64}

接下来:

QK^T\in\mathbb R^{5\times5}

也就是说,模型计算了一个 5\times5 的匹配分数矩阵。

经过缩放、因果掩码和 Softmax,得到注意力矩阵 A。

下面用一个假设的权重矩阵展示它的结构。

最终:

\boxed{Z=AV}

这里的 Z 不只是一个向量,而是一个矩阵:

Z=
\begin{bmatrix}
z_1\\
z_2\\
z_3\\
z_4\\
z_5
\end{bmatrix}

也就是说,输入整句话的五个向量,经过注意力计算,得到五个新的向量。

它们随后还会经过输出投影、残差连接、前馈网络等处理,进入下一个 Transformer Block。

6.2 一次矩阵乘法怎样完成全部点积与组合 ​

你之前也讨论过矩阵乘法能够把大量向量运算合并进行。

假设输入有 n 个 Token:

X\in\mathbb R^{n\times d}

投影后:

Q,K\in\mathbb R^{n\times d_k},\qquad
V\in\mathbb R^{n\times d_v}

那么:

QK^T\in\mathbb R^{n\times n}

这个矩阵中的第 i 行、第 j 列,就是:

(QK^T)_{ij}=q_i\cdot k_j

也就是说,一次矩阵乘法就计算了每一个 Token 对其他所有 Token 的匹配分数。

接下来,对每一行使用 Softmax:

A=\operatorname{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)

再做一次矩阵乘法:

Z=AV

把整个过程合并:

\boxed{
\operatorname{Attention}(Q,K,V)
=
\operatorname{softmax}
\left(\frac{QK^T}{\sqrt{d_k}}\right)V
}

这是 Transformer 最经典的一条公式。

注意它的几何含义:

  • QK^T:计算点积,决定权重。
  • Softmax:把每一行变成非负且和为 1 的系数。
  • AV:逐行构造 Value 的凸组合。

你可以把注意力矩阵 A 理解为一个由当前输入动态生成的加权组合矩阵。

这点很重要:

W_Q,W_K,W_V 是训练后相对固定的参数,而 A 会随着每次输入的文本发生改变。

6.3 把矩阵乘法展开一项,就能核对 ​

QK^{\mathsf T}第i行第j列为:

(QK^{\mathsf T})_{ij}=\sum_{r=1}^{d_k}Q_{ir}K_{jr}=q_i\cdot k_j.

r在这里遍历向量坐标,i/j遍历输入位置。接着:

(AV)_{iu}=\sum_{j=1}^{n}a_{ij}V_{ju}.

u是输出向量中的一个坐标。让u遍历全部坐标,得到的正是z_i=\sum_j a_{ij}v_j。因此矩阵写法与逐向量计算严格相同。

6.4 为什么还需要多头注意力 ​

假设输入:

患者服用华法林后出现黑便,血红蛋白明显下降。

模型可能同时需要识别不同种类的联系:

  • 药物与不良反应的联系。
  • 症状与实验室检查的联系。
  • 句法结构中不同词语之间的联系。

如果仅有一个注意力头,那么每个 Token 就只有一套 Q、K、V 变换。

Transformer 采用多个不同的投影矩阵:

W_Q^{(1)},W_K^{(1)},W_V^{(1)}\ldots

更准确地写,各头有各自的 W_Q^{(h)},W_K^{(h)},W_V^{(h)}。

每个头独立计算:

Z^{(h)}=\operatorname{Attention}(Q^{(h)},K^{(h)},V^{(h)})

最后拼接并进行线性变换:

\boxed{
Z=\operatorname{Concat}(Z^{(1)},\ldots,Z^{(H)})W_O
}

这就是 Multi-Head Attention(多头注意力)。

可以把它类比为多个不同的坐标投影方式,各自提取信息后再重新整合。但各头并不保证严格对应某种可解释的语法或医学关系。

6.5 拼接后为什么还要乘 WO ​

设有 H 个头,每头分别计算 Z^{(r)}\in\mathbb R^{n\times d_v}。拼接与投影是:

O=\operatorname{Concat}(Z^{(1)},\ldots,Z^{(H)})W_O,
\quad W_O\in\mathbb R^{Hd_v\times d}.

拼接后是 n\times Hd_v,乘 W_O 回到 n\times d,才能与原输入相加。多头允许多个混合分布同时存在,不要求“药物头”“语法头”这样人为固定的语义分工。

保留每一次追问,认真走完每一步证明。