本文整理自李建平机器学习中的矩阵向量求导系列和长躯鬼侠的矩阵求导术。
1. 符号说明
默认符号:
:标量
: 维列向量
: 维列向量
:矩阵
:矩阵
2. 矩阵向量求导布局
自变量\因变量 | 标量 | 向量 | 矩阵 |
---|---|---|---|
标量 | / |
分子布局:m维列向量(默认) 分母布局:维行向量 |
分子布局:p × q矩阵(默认) 分母布局:矩阵 |
向量 |
分子布局:维行向量 分母布局:n 维列向量(默认) |
分子布局:m × n 雅克比矩阵(默认) 分母布局: 梯度矩阵 |
/ |
矩阵 |
分子布局: 矩阵 分母布局:m × n 矩阵(默认) |
/ |
分母布局:mn × pq 矩阵 |
3. 矩阵向量求导大全
自变量\因变量 | 标量 | 向量 | 矩阵 |
---|---|---|---|
标量 |
大学微积分知识 |
定义法求导 |
定义法求导 |
向量 |
1. 定义法求导 2. 基本法则:线性法则、乘法法则、除法法则 3. 矩阵微分: 4. 链式法则: |
1. 定义法求导 2. 链式法则: |
—— |
矩阵 |
1. 定义法求导 2. 矩阵微分: 3. 矩阵微分性质 4. 迹技巧 5. 链式求导法则: |
—— |
1. 定义: 2. 微分法: 3. 运算法则 |
4. 标量对向量求导
已知:
求:
4.1 定义法求导
所谓标量对向量的求导,其实就是标量对向量里的每个分量分别求导,最后把求导的结果排列在一起,按一个向量表示而已。那么我们可以将实值函数对向量的每一个分量来求导,最后找到规律,得到求导的结果向量。
例1:
所以,将求导结果组成向量:
4.2 标量对向量求导基本法则
4.3 通过向量微分求导
利用导数和微分之间的关系:
例:
所以,根据导数与微分的联系:
4.4 标量对多个向量的链式求导法则
若标量 和向量 之间的依赖关系为: ,则:
推广到多个向量的情况, ,则有:
5. 标量对矩阵求导
已知:
求:
5.1 定义法求导
与标量对向量求导类似,标量对矩阵里的每个分量分别求导,最后把求导的结果排列在一起,用一个矩阵表示而已。
例: ,求
先对矩阵的任意一个位置的求导:
将所有位置求导结果排成矩阵,得:
5.2 通过矩阵微分求导
一元微积分中的导数(标量对标量的导数)与微分之间的关系:
多元微积分中的梯度(标量对向量的导数)与微分之间的关系:
矩阵导数与微分之间的关系:
利用导数与微分,以及迹技巧,可以求得标量函数 对于矩阵 的导数:
- 对标量函数 求微分,需用到矩阵微分运算法则;
- 使用迹技巧,对 套上迹,再将其它项移至 左侧;
- 对照导数与微分之间的联系,可求得
注:标量对矩阵的求导不能随意沿用标量的链式求导法则。
5.3 矩阵微分运算法则
矩阵加减法 | 法则 | 示例 |
---|---|---|
矩阵加减法 | ||
矩阵乘法 | ||
矩阵转置 | ||
矩阵的迹 | ||
矩阵的逆 | ||
行列式 | | | | 是的伴随矩阵 |
逐元素相乘 | ||
逐元素函数 |
5.4 迹技巧(trace trick)
运算 | 法则 | 备注 |
---|---|---|
标量套上迹 | ||
转置 | ||
线性 | ||
矩阵乘法交换 | 与维度相同,两侧都等于 | |
矩阵乘法/逐元乘法交换 | 尺寸相同,两侧都等于 |
5.5 标量对多个矩阵的链式求导法则
假设有这样的依赖关系: ,很难给出矩阵基于矩阵整体的链式求导法则,可以给出关于 中某一标量的链式求导:
5.6 计算示例
例1: ,求 。其中 是 列向量,是 矩阵, 是 列向量。
Step1: 使用矩阵乘法法则求微分:
这里因为是常量,所以
Step2: 套上迹,并做矩阵乘法交换:
Step3:对照导数与微分之间的联系:
例2:,求 。
Step1: 使用矩阵乘法法则求微分:
Step2: 套上迹,并做矩阵乘法交换:
Step3:对照导数与微分之间的联系:
例3【线性回归】,求 的最小二乘估计。其中是 列向量, 是矩阵, 是 列向量,是标量。
Step1: 将向量模平方改成向量与内积形式:
Step1: 使用矩阵乘法法则求微分:
Step2: 套上迹,并做矩阵乘法交换:
Step3:对照导数与微分之间的联系:
Step3:求的最小二乘估计
6. 向量对向量求导
向量对向量的求导比较麻烦, 为列向量 对 维列向量 求导,那么一共有 个标量对标量的求导。
分子布局(numerator layout):
求导结果矩阵的第一个维度以分子为准,结果是一个矩阵,一般叫作雅克比矩阵。
分母布局(denominator layout):
求导结果矩阵的第一个维度以分母为准,结果是一个矩阵,一般叫作梯度矩阵。
对于机器学习算法原理中的推导,究竟是采用什么布局一般是隐含的,需自己推导。本文以分子布局的雅克比矩阵为主。
6.1 定义法求导
例: ,其中 是 的矩阵, 分别是 维例向量。
Step1: 先求 的第 个分量对 的第 个分量的导数:
Step2: 将每个标量求导结果排列成矩阵,这里用分子布局:
6.2 向量对向量求导的链式法则
若向量之间有这样的依赖关系: ,则有下面的链式求导法则:
7. 矩阵对矩阵求导
7.1 矩阵对矩阵求导定义
, , 矩阵中的 个元素要分别对矩阵 中的 个元素求导,那么求导结果一共会有 个元素。求导结果的排列有很多种。这里只介绍目前主流的做法。
目前主流的矩阵对矩阵求导定义是对矩阵先做向量化,然后再使用向量对向量的求导。而这里的向量化一般是使用列向量化。也就是说,现在我们的矩阵对矩阵求导可以表示为:
的维度是 列向量,的维度是 列向量。结果使用分母布局,得到一个 的矩阵。
7.2 微分求导法
利用导数与微分的联系:
求解步骤:
- 使用矩阵微分运算法则对矩阵 求微分;
- 做向量化并使用迹技巧将其它项交换至的左侧;
- 根据导数与微分关系,得到矩阵对矩阵的微分结果。
7.3 矩阵向量化的运算法则
性质 | 法则 |
---|---|
线性性质 | |
矩阵乘法 | |
矩阵转置 | |
逐元素乘法 |
注:
:克罗内克(Kronecker)积, 与 的克罗内克积是 ;
:交换矩阵。若是 的列向量,则,将按列优先的向量化变为按行优先的向量化;
是用 的元素(列优先)排成的对角阵。
7.4 克罗内克积运算法则
7.5 计算实例
参见矩阵求导术(下)