本文符号定义
:标量或者:n维向量:维的矩阵:标量或者:m维向量:维的矩阵
1 求导定义与布局方式
1.1 矩阵求导术
根据求导的自变量和因变量是标量,向量还是矩阵,我们有9种可能的矩阵求导定义,如下:
依旧使用一个m维向量
答案是:都可以。求导的本质是把导数信息,即求导的结果排列起来,至于是按行排列还是按列排列都是可以的。但是这样也有问题,在我们机器学习算法法优化过程中,如果行向量或者列向量随便写,那么结果就不唯一,所以为了解决这个问题,我们引入求导布局的概念。
- 分子布局:导数的维度以分子为主。
- 分母布局:导数的维度以分母为主。
向量对标量求导(表第2项):
比如上面的
标量对向量求导(表第4项):
比如
标量对矩阵求导(表第7项):
比如,标量
矩阵对标量求导(表第3项):
比如,矩阵
向量对向量求导(表第5项):
比如,
如果按分母布局,则结果矩阵的第一个维度以分子为准,即结果是个
结论:分子布局和分母布局的结果相差一个转置。
在机器学习的算法推导里,通常遵循以下布局的规范:
- 如果向量或者矩阵对标量求导,则以分子布局为准。
- 如果标量对向量或者矩阵求导,则以分母布局为准。
- 对于向量对对向量求导,有些分歧,一般以分子布局的雅克比矩阵为主。
总结如下:
2 标量对矩阵的求导术的基本思想
2.1 定义法
在进行标量对矩阵的求导时我们默认按照分母布局,即求导的结果与矩阵的维度一致。比如
如果求
所以最后的结果应该长成这个样子:
是
当然,上面的做法相当于是硬生生把标量对矩阵的求导拆成了一堆标量对标量的求导,再把这些结果按照分母布局给组合了起来。这种方法可以称为定义法,但是它只适用于表达式不复杂,你能展开的情况。就像上面的
但如果表达式很复杂,你没法展开成分量的形式,那就没法转化成标量对标量的求导,这种方法就不再适用了。定义法所遵循的逐元素求导破坏了整体性。求导时不宜拆开矩阵,而是要找一个从整体出发的算法。即下面的微分法。
2.2 微分法
- 在高等数学的一元微积分中,导数(标量对标量的导数)与微分有联系:
- 在多元微积分中,梯度(标量对向量的导数)也与微分有联系:
这里第一个等号是全微分公式,第二个等号表达了梯度与微分的联系。
全微分
对尺寸相同的矩阵
- 把多元微积分中的梯度与微分之间的联系扩展到矩阵,则有:
其中tr代表迹(trace)是方阵对角线元素之和,最后一步的变换是根据上面的矩阵迹的性质。
全微分
从上面矩阵微分的式子,我们可以看到矩阵微分和它的导数也有一个转置的关系,不过在外面套了一个迹函数而已。由于标量的迹函数就是它本身,那么矩阵微分和向量微分可以统一表示,即:
- 得到这2个式子的作用是什么?
答:这2个式子里面的
换句话说,假定题目给任意一个函数
我们只需要先想方设法搞出来
这就是微分法求对矩阵导数的基本思想,算法如下:
1. 根据给定的寻找。 2. 给套上迹。等号左边因为是个标量,所以不受影响,等号右边根据迹的技巧进行化简。 3. 等号右边化简之后先找到,根据导数与微分的联系得到。
根据上述Algorithms,理论上对于任何求对矩阵导数的问题可以三步搞定。
但只有基本思想还远远不够,因为要搞出来
- 常用的矩阵微分运算法则:
- 加减法:
- 矩阵乘法:
- 转置:
- 迹:
。
- 逐元素乘法:
,表示尺寸相同的矩阵逐元素相乘。
- 逆:
。此式可在两侧求微分来证明。
- 行列式:
,其中表示X的伴随矩阵,在可逆时又可以写作。
- 逐元素函数:
,是逐元素标量函数运算,是逐元素求导数。
例如:
除此之外,微分法求对矩阵导数的基本思想的很重要的一步是给
- 迹技巧(trace trick):
标量的迹等于自己:
转置:
线性:
交换律:
矩阵乘法/逐元素乘法交换:
以上就是微分法求对矩阵导数的方法,在实际操作时万不可随意套用微积分中标量导数的结论,比如认为
下面举2个很经典的例子:
例1:
解:根据上面的Algorithms:
1. 先使用矩阵乘法法则求微分
这里的
2. 给
3. 使用迹技巧做矩阵乘法交换。根据
根据导数与微分的联系
与一开始所用的定义法结果吻合。
例2:
解:根据上面的Algorithms:
1. 先使用矩阵乘法法则求微分
2. 给
3. 使用迹技巧做矩阵乘法交换:
根据
根据导数与微分的联系
例3:
解:依然是求标量对向量的导数。首先解决这个向量模的平方的问题:
根据上面的Algorithms:
1. 先使用矩阵乘法法则求微分
2. 给
根据导数与微分的联系
令
例4:样本
解:本题可以转化成求
根据上面的Algorithms:
1. 先使用矩阵乘法法则求微分
但是要求出
逆:。
行列式:,其中表示X的伴随矩阵,在可逆时又可以写作。
第1项:
第2项:
2. 再给第二项套上迹
其中定义
综上,
根据导数与微分的联系
例5:
解:首先把
根据上面的Algorithms:
1. 先使用矩阵乘法法则求微分
根据迹技巧:
矩阵乘法/逐元素乘法交换:,其中尺寸相同。两侧都等于。
所以:
2. 给
根据导数与微分的联系
2.3 迹函数对向量或矩阵的求导
迹函数对对向量矩阵求导这一大类问题,其实更简单,因为它省去了Algorithms中的第1,2步,相当于已经帮你套上了
例6:求
解:直接假设
1. 先使用矩阵乘法法则求微分
矩阵
根据导数与微分的联系
例7:求
解:直接假设
1. 先使用矩阵乘法法则求微分
我们一项一项化简:
第1项
第2项
所以:
根据导数与微分的联系