机器学习-矩阵求导

整理自公众号--数据挖掘机养成记,穆哥写的矩阵求导真的太赞,生动有趣,由浅入深,先贴一张公众号的二维码,欢迎大家关注!

好了,正式进入正题:

1、引言

比如我们要计算:

如果想省事,那么咱们不妨去查表吧,好了,度娘大显神通,我们得到了结果:

好像还有这么个公式:

对比一下(1)和(2),似乎求导对象分别是行向量和列向量时,结果做个转置就行了?

所以,根据链式求导法则,有:

为什么,我们用链式求导法则求出的结果,和百度得到的结果不同?问题出在哪里了?链式求导错了,还是我们百度的结果不对?

其实真相是:矩阵求导有不同的规则

2、矩阵求导的两种规则

矩阵求导,说白了,就是矩阵或者向量里的每个元素,对别的矩阵或者向量里每个元素求导,然后把所有的求导结果,按一定规则排列在一起。规则是什么呢?不着急,我们一步步揭开它的神秘面纱。

这节,我们将从标量到向量再到矩阵,一步步探讨,为何会有不同的规则

忽略最简单的情形--标量对标量求导,因为结果还是标量,不存在意义。

接下来我们探讨:向量对标量求导标量对向量求导
首先我们约定,所有的向量都是列向量,那么对于向量x和标量a,x对a求导的结果是个列向量,结果中的每个元素是x里的每个元素对a求导的结果,而a对x求导,结果也可以认为是列向量,里面元素是a对x里每个元素求导。

上面这一点大家没有疑问吧,下面讨论 向量对向量求导 ,假设两个向量x和y,我们准备求解y对x求导,我们可以得到如下两条思路:
(1) y里的元素分别对x求导(即参照标量对向量求导)
(2) y分别对x里的元素求导(即参照向量对标量求导)

当采用思路1来解决这个问题,根据之前的讨论,我们会得到一系列的列向量,我们将这些列向量横向排列起来,组成一个二维矩阵,我们得到:

上面每一列的结果就是按照标量对向量求导的规则得到的。

当采用思路2来解决这个问题时,根据之前的讨论,我们仍然可以得到一系列列向量,将这些向量排列我们可以得到:

上面每一列的结果就是按照向量对标量求导的规则得到的。
讲道理,y对x求导应该只有一种结果,但是按照两种思路得到的结果,是互为转置的。
问题出现在哪里呢?回顾我们之前讨论的向量对标量标量对向量的求导结果,我们草率地将结果都设为了列向量,然后导致了两种思路求解向量对向量求导结果的不同,所以我们需要区别对待向量对标量标量对向量这两种情形,即:

规则1:当我们把标量对向量的求导结果认为是列向量时,向量对标量的求解结果就是一个行向量
规则2:当我们把向量对标量的求解结果认为是列向量时,标量对向量的求导结果就是一个行向量

这就引出了布局的概念

2.1 分母布局

从规则1不难发现,对于向量标量求导的两种情形,我们把标量对向量的求导结果作为列向量,也就是跟分母一致,而当向量出现在分子上时,我们会做一个转置,所以这种规则叫做分母布局即:
标量对向量求导:

向量对标量求导:

2.2 分子布局

同理,规则2是当向量出现在分子上时,我们把结果跟分子保持一致,所以这种规则叫做分子布局,情形跟分母布局互为转置,所以在两种布局下,向量对向量求导会得到两种互为转置的结果。

所以当我们讨论向量对向量求导时,我们默认分子分母都是列向量,二档分子分母都是行向量时,做个转置即可:

那么问题来了,当分子是行向量,分母是列向量的时候,该怎么处理呢?这里我们不讲道理地把行向量对列向量求导,等同于列向量对列向量求导,即:

至此,我们终于理清了向量对向量求导的所有情形,并引出了两种通用的规则,或者说布局,接下来进一步讨论标量对矩阵矩阵对标量求导的情形,如果我们把矩阵看作是一系列的列向量,那套用上面讨论的标量和向量求导的情形,可以很容易得知:
分母布局下,标量a对矩阵A求导,相当于a对A里的每个元素求导,结果跟矩阵A的size一致,而A对a求导,相当于A里面每个元素对a求导后做个转置。
分子布局下,a对A求导,相当于a对A里的每个元素求导,再做个转置。而A对a求导,相当于A里每个元素对a求导,结果跟矩阵A的size一致。

这样我们就讨论完了矩阵求导的情形。

3、再回首

好了,我们再次回顾一下问斩一开头提到的悖论:

仔细推导可以发现,上面的式子是通过分母规则求得的,如果使用分子规则,我们可以得到如下的结果:

推导过程如下:

 

另一个的例子就不推导啦,感兴趣的同学可以自己推导。

4、常见的矩阵求导公式:

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值