矩阵乘法与求导入门
金培晟 Jarfield
这篇笔记只做一件事:把矩阵乘法里最常见的几种求导规则讲清楚,尤其是当自变量分别是 1 阶变量(向量) 和 2 阶变量(矩阵) 的情况。
目标不是追求最一般的张量微积分,而是先建立一套在机器学习、线性代数和最优化里足够稳定的直觉。
0. 约定与记号
为了避免一开始就混乱,先统一约定:
- 标量记作
- 向量默认是列向量,记作
- 矩阵记作
- 若
是标量对向量求导,结果记作 ,形状与 相同 - 若
是标量对矩阵求导,结果记作 ,形状与 相同 - 我们主要使用 微分法 + trace 技巧
很多教材在“分子布局 / 分母布局”上记法不同,所以你会看到有的地方梯度写成行向量,有的写成列向量。
这篇笔记统一采用:梯度和变量保持同形状。
1. 先把矩阵乘法关系捋清楚
1.1 基本形状
若
则
若
则
这是最常见的一个标量型表达式。
1.2 三类最常见输出
矩阵乘法的结果通常分成三类:
- 标量:
- 向量:
- 矩阵:
求导时最重要的不是“公式长什么样”,而是先看清:
- 自变量是谁
- 输出是标量、向量还是矩阵
- 结果应该是什么形状
2. 向量变量求导:自变量是 1 阶
这一部分设自变量是列向量
2.1 线性型:
设
其中
则
这几乎是所有向量求导的起点。
理解
因为
对每个
2.2 二次型:
设
则
若
推导
从微分出发:
第二项可改写成
第一项则是
所以
因此梯度为
2.3 范数平方:
这是最优化里最常用的一类。
设
其中
则
若写成带
则
为什么这里一定有
因为
所以必须由
这个“前向乘了谁,反向通常就会乘谁的转置”是反向传播里非常核心的模式。
2.4 一页小结:向量变量
对于
3. 矩阵变量求导:自变量是 2 阶
现在设自变量是矩阵
这一部分最实用的工具是:
3.1 微分定义
若
则定义
换句话说,只要你能把微分整理成 某个矩阵 和
3.2 最基本的线性型:
设
其中
则
因为
这已经是标准形式了。
3.3 双边线性型:
设
其中
注意这是标量,因为形状是
把它改写成 trace:
所以
又因为
故
这是一个非常值得记住的公式:
3.4 Frobenius 范数平方:
设
其中
则
若写成
则
推导
记
则
因此
又因为
所以
利用 trace 循环性质:
因此
3.5 右乘型:
同理,若
则
这里的结构和上一条正好对应:
- 左边乘常量矩阵
,反向就出来一个 在左边 - 右边乘常量矩阵
,反向就出来一个 在右边
3.6 迹二次型:
设
其中
则
若
它就是向量二次型
4. 1 阶变量和 2 阶变量到底差在哪
4.1 本质区别
当自变量是向量
- 梯度是向量
- 常见模式是
当自变量是矩阵
- 梯度是矩阵
- 常见模式是把
单独提出,再整理成
4.2 一个非常实用的判断原则
先不要急着背公式,先问三个问题:
- 自变量是谁?
- 输出是不是标量?
- 最终梯度形状应该和谁一致?
很多时候只靠形状检查,就能排除一半错误。
例如:
对 求导,答案必须是 ,所以 很自然 对 求导,答案必须和 同形,所以只能是
4.3 为什么矩阵求导更适合用 trace
因为矩阵变量求导时,直接按元素展开会非常长。
而 trace 有三个很强的优点:
- 标量都能写成 trace
- trace 有循环交换性质
- 最终可以统一落到
所以一旦进入 2 阶变量求导,trace 基本就是主力工具。
5. 最常用公式清单
5.1 向量变量
5.2 矩阵变量
6. 一个统一视角
其实上面很多公式都在说同一件事:
- 前向是线性映射
- 反向就是把误差通过该线性映射的转置传回来
所以你可以把矩阵求导看成“线性算子的伴随”在起作用。
这也是为什么神经网络反向传播里,权重矩阵总是和转置绑在一起出现。
如果只记一句话,我会记这个:
向前乘了谁,向后大概率就会乘谁的转置;只不过要先保证维度对。
7. 这篇笔记的边界
这篇只覆盖最常见、最基础的场景:
- 标量对向量求导
- 标量对矩阵求导
- 线性型、二次型、范数平方型
还没有展开的内容包括:
- 分子布局 / 分母布局的系统区别
- 向量值函数对向量 / 矩阵求导
- 张量求导
- Kronecker 积与 vec 技巧
- 更复杂的 trace 恒等式
如果后面继续写,我觉得最自然的下一篇是:链式法则、矩阵求导与反向传播入门,专门讲清楚链式法则在矩阵情形下如何工作,以及为什么反向传播里总是出现转置。
