矩阵数学系列收官篇。前三篇建立了完整的矩阵世界观:变换与复合(一)、谱与低秩(二)、前向反向的矩阵三定律(三)。这篇做总装——把现代 AI 架构里的明星组件逐一"验明正身",你会发现Transformer、CNN、MoE 的每一处设计,都是在回答"怎样把智能塞进矩阵乘法这一个原语"。

1. 架构组件的矩阵身份证

先给一张总表,后文逐个展开:

组件 矩阵身份 视角
Embedding one-hot · E(稀疏矩阵乘 → 查表) 列(一)
QKV 投影 X·W_Q / W_K / W_V 列(一)
注意力分数 Q·Kᵀ / √d_k 元素(一)
注意力输出 softmax 行算子 · V 行(一)
LayerNorm/RMSNorm 逐行缩放(块对角矩阵) 谱(二)
FFN/SwiGLU 三个矩阵乘 + 逐元素门控 列(一)
LoRA 旁路 ΔW = B·A 低秩修正 外积/低秩(一二)
卷积 im2col 重排 + GEMM 元素(一)
MoE 路由 one-hot 稀疏 · 专家堆叠 列(一)
KV Cache 增量矩阵乘的缓存 元素(一)

2. Attention:一个 Transformer 层的矩阵解剖

把 Transformer 篇的公式全部还原成矩阵语言(配合站内的交互式 QKV 图解食用):

Q = X·W_Q          [B,T,D]·[D,D]      列视角: 换一套"查询坐标系"
K = X·W_K          同上
S = Q·Kᵀ/√d_k      [B,T,T]            元素视角: 每对 token 一次点积 —— 全部相关性
A = softmax(S)     [B,T,T]            逐行归一化(见下)
O = A·V            [B,T,D]            行视角: 每行 = V 各行的加权混合

值得强调的是 softmax 的矩阵身份:行算子。它对矩阵的每一行独立归一化——用分块矩阵写,等价于乘一个由各行权重构成的(行内归一化的)块结构。行与行之间零交互,所以:

  • 全部行可以完全并行(GPU/NPU 上 softmax 是带宽受限的逐行 kernel);
  • 推理篇"每行和恒为 1"的约束正是行算子的定义;
  • LayerNorm/RMSNorm 同理:减均值除方差(或除 RMS)也是逐行算子——架构里的"Norm"与"softmax"本质是插在 GEMM 之间的逐行缩放,这也是 CANN 篇算子融合(把 Norm 融进相邻 GEMM)能够成立的数学原因。

因果掩码则是矩阵语言里最优雅的一笔:左乘/右乘一个下三角 0/1 矩阵就能实现"只看过去",掩码 = 特殊结构的矩阵乘。

3. 卷积:被"重排"成矩阵乘的局部连接

CNN 的滑动窗口看似与矩阵无关——直到 im2col 出场:把每个感受野的元素抄成矩阵的一行,卷积核展平成一列,一次 GEMM 吃下整个卷积层:

im2col(X) [9×(C·kh·kw)] · K_flat [(C·kh·kw)×K] → [9×K] → reshape

下面的组件用 4×4 输入 × 2×2 核的最小例子双视角对照——左边滑动窗口每步 4 次乘法,右边 im2col 重排后一次矩阵乘。切换到矩阵视角走完五步:

两个要点:

  1. 代价是显存膨胀:im2col 矩阵比原输入大好几倍(重叠区域被复制),所以现代框架对大通道用隐式 GEMM/Winograd 优化——但"卷积本质是矩阵乘"的等价性不变;
  2. NPU/GPU 的设计动机:把一切归一到 GEMM,意味着芯片只需要把一种 kernel 做到极致(硬件篇的 Cube、Tensor Core)。im2col 是"用重排换统一"的经典工程交换。

4. MoE:稀疏矩阵乘换来的万亿参数

MoE(混合专家)层的路由逻辑:每个 token 过一个门控网络,得到"选哪些专家"的决策——one-hot/top-k 的形式。数学上:

y = Σ_e G(x)_e · Expert_e(x)      G(x) 是稀疏路由向量

用矩阵视角读:门控是一个稀疏(近 one-hot)行向量,专家堆叠是一个大矩阵——每个 token 的计算 = 稀疏向量 · 大矩阵 = 只"查"出少数几列。这与 Embedding 查表同构(第三篇):MoE = 参数空间的稀疏寻址。换来的是:总参数(矩阵列数)可以做到万亿,而每个 token 的实际计算量(参与的列)保持稀疏——推理篇"MoE 撑起万亿参数"的矩阵本质。

5. KV Cache:增量矩阵乘的缓存不变性

自回归生成的第 t 步,新 token 只有一行 q_t,但要和全部历史 K/V 做乘法:

scores_t = q_t · Kᵀ[所有历史行]     [1×d]·[d×T] → [T]

推理篇已经给出工程结论(缓存 K/V 的复用);矩阵视角的补充:这是一行 × 全矩阵的矩阵乘——每步的"新增计算"只有一行,历史行作为矩阵的另一操作数保持不变。分块矩阵写出来,新增块与历史块无写冲突——这正是 PagedAttention 能把 KV 当成独立块管理的代数原因。

6. 检索与生成之外:矩阵思想串联全站

用矩阵视角回看整个系列的连接点:

  • 训练:AdamW 的二阶动量 v 是梯度外积统计的对角近似;LoRA 的 B·A 是显式低秩参数化——二篇的 Eckart-Young 是其"合法性证明";
  • 推理:投机解码的"草稿-验证"等价于对同一矩阵乘的不同 tile 划分;量化的 per-channel scale 是给矩阵各列独立选择表示精度(量化篇的离群通道 = 个别列范数异常大);
  • 硬件/集群:GEMM 的分块复用直接映射 Cube 的 16×16×16 tiling(硬件篇);集合通信同步的"矩阵"是梯度本身——Ring All-Reduce 分块流经全环(集群篇的模拟器)。

一句话总结这个系列:现代 AI = 大规模数据 + 一族精心设计的矩阵(可学习参数)+ 硬件上被极致优化的矩阵乘法原语。理解矩阵,就同时理解了模型在算什么、硬件在优化什么、以及 LoRA/量化/注意力这些"技巧"为什么成立。

7. 小结

  • Transformer 层的矩阵解剖:三次 GEMM(投影/分数/混合)+ 两个行算子(softmax/Norm)+ 一个结构化掩码乘;
  • 卷积 = im2col 重排 + GEMM,"用重排换统一"是工程交换的经典;
  • MoE = 参数空间的稀疏寻址(one-hot · 专家矩阵),与 Embedding 查表同构;
  • KV Cache 的可管理性源于增量矩阵乘"新行 × 旧矩阵"的无冲突分块结构;
  • 矩阵语言是贯穿模型、系统、硬件三个层次的通用语——这也是本站 LLM/Infra 各系列反复回到的原点。

系列至此完结:从网格的变形出发,走过谱与低秩,穿过前向反向,最终在现代架构的每个组件里都认出了同一副骨架。