从直觉到证明3Blue1Brown 中文导学教材
1.4 矩阵乘法就是复合

1.4 矩阵乘法就是复合

分别跟踪先剪切后缩放与先缩放后剪切,找出两种结果最早出现差异的步骤。

例题练习Lean 对照原课

一步一步建立直观

先预测,再点“演示本步”核对右图。每一步都重设到指定情形,随后可以自由修改参数。

01每一幅图都是一次计算的状态

左图给出原始向量,中图是第一次动作的输出,右图才是最终结果。先让旋转角为零,只保留剪切,确认三幅图的含义。矩阵乘法不是把两个数表逐项相乘,而是把前一步产生的向量交给后一步处理。

02把中间状态代入第二条规则

令 BB 是旋转,AA 是剪切。先算 BxBx,再将这个新向量当成 AA 的输入,得到 A(Bx)A(Bx)。对每一根标准基箭头重复这个过程,就得到了乘积矩阵的各列。因此列的几何解释直接导出行列求和的计算公式。

03交换顺序是一项可检验的主张

切换为先剪切再旋转,中图首先发生改变,最后的红色向量通常也不同。原因是第二次操作面对的方向已由第一次改变。结合律只改变分组,动作队列不变;交换律却重排了队列,两者不能混为一谈。

1.4.1 从执行顺序推导乘法顺序

先把图形横向拉长两倍,再剪切,怎样用一个矩阵保存整个过程?必须知道每根标准基箭头经过两步后落在哪里。第一步的矩阵 BB 已把位置存进自己的列;第二步对每一列作用 AA。因此复合矩阵的列是 AA 乘以 BB 的各列,这就是矩阵乘法的来源。

ABvABv 的括号是 A(Bv)A(Bv):书写从左到右,执行从最靠近输入的右端开始,与 f(g(x))f(g(x)) 一样。把乘法读成动作,还能判断不同形状的矩阵能否相乘:前一步的输出维度必须接上后一步的输入维度。

1.4.2 交换顺序为什么改变结果

拿 (0,1)(0,1) 做实验。先横向拉长时,它在纵轴上,不动;再剪切,横坐标变成 11。若先剪切,它先到 (1,1)(1,1),随后拉长会把刚产生的横坐标放大,结果是 (2,1)(2,1)。第二步处理的是已经改变的对象,所以同样两步不必得到同一结果。

再看公式里的求和:第 ii 个输出分量,要累加中间层各分量对它的贡献。下标 kk 标记所有中间通道。神经网络层间计算与换基都会重用这个视角。

三个动作按 C,B,AC,B,A 执行,先把哪两步打包,不改变实际过程,所以 (AB)C=A(BC)(AB)C=A(BC)。结合律允许重新打包,却没有允许交换动作。以后读长矩阵公式时,给每个矩阵配一句实际指令,再决定能怎样移动括号。

定义 1.4.1 映射的复合次序

若 BB 把输入送到中间空间,AA 再作用于中间结果,则复合映射写成 A∘BA\circ B,矩阵写成 ABAB。最右侧的矩阵先作用。

命题 1.4.1 矩阵乘法的列规则

复合矩阵 ABAB 的第 jj 列是 AA 作用在 BB 的第 jj 列所得的向量。各矩阵的输入输出维度须匹配。

证明 · 展开纸笔推导

把标准基向量 eje_j 送入复合映射。第一步得到 BejBe_j,它就是 BB 的第 jj 列;第二步得到 A(Bej)A(Be_j)。

一个矩阵的第 jj 列也等于它作用在 eje_j 上的结果,所以复合矩阵的各列只能按此规则组成。交换 AA、BB 会改变动作顺序,通常也改变结果。

□

数学表述 1.4.1

矩阵乘法的列,是后一动作的基向量像经过前一动作后的结果。因此乘法次序有实际意义。

(AB)v=A(Bv)(AB)v=A(Bv),且 (AB)ij=∑kAikBkj(AB)_{ij}=\sum_k A_{ik}B_{kj}。令 A=[1101],B=[2001];AB=[2101],BA=[2201].A=\begin{bmatrix}1&1\\0&1\end{bmatrix},\quad B=\begin{bmatrix}2&0\\0&1\end{bmatrix};\quad AB=\begin{bmatrix}2&1\\0&1\end{bmatrix},\quad BA=\begin{bmatrix}2&2\\0&1\end{bmatrix}.

例 1.4.1 把概念用于具体计算

对 v=(0,1)v=(0,1),先 BB 后 AA 得 (1,1)(1,1),反过来得到 (2,1)(2,1)。这是不交换性的直接见证。

练习 1.4.1

为什么 (AB)C=A(BC)(AB)C=A(BC)?

展开解答与检查

两边都对向量执行 CC、BB、AA,或展开有限求和验证。

Lean 对照 1.4.1 命题、证明与适用边界

复用 mathlib 的矩阵作用复合定理,在任意实 2×22\times2 矩阵和向量上验证等式。

LinearAlgebra.matrix_composition

theorem matrix_composition (A B : Matrix (Fin 2) (Fin 2) ℝ) (v : Fin 2 → ℝ) :
    Matrix.mulVec A (Matrix.mulVec B v) = Matrix.mulVec (A * B) v :=
  Matrix.mulVec_mulVec v A B

查看完整定义与上下文 ↗ · 全书证明范围

原课对照 观课问题、视频与图示

分别跟踪先剪切后缩放与先缩放后剪切,找出两种结果最早出现差异的步骤。

官方课程与图示 ↗ · 原视频 ↗

点击后连接 YouTube;播放器不可用时可通过上方原链接观看。