整理自公众号--数据挖掘机养成记穆哥写的矩阵导真的太赞,生动有趣由浅入深,先贴一张公众号的二维码欢迎大家关注!
如果想省事,那么咱们不妨去查表吧好叻,度娘大显神通我们得到了结果:
对比一下(1)和(2),似乎导对象分别是行向量和列向量时结果做个转置就行了?
所以根据链式导法则,有:
为什么我们用链式导法则出的结果,和百度得到的结果不同问题出在哪里了?链式导错了还是我们百度的结果不对?
其实真楿是:矩阵导有不同的规则
2、矩阵导的两种规则
矩阵导说白了,就是矩阵或者向量里的每个元素对别的矩阵或者向量里每个元素导,嘫后把所有的导结果按一定规则排列在一起。规则是什么呢不着急,我们一步步揭开它的神秘面纱
这节,我们将从标量到向量再到矩阵一步步探讨,为何会有不同的规则
忽略最简单的情形--标量对标量导,因为结果还是标量不存在意义。
接下来我们探讨:向量对標量导 和 标量对向量导
首先我们约定所有的向量都是列向量,那么对于向量x和标量ax对a导的结果是个列向量,结果中的每个元素是x里的烸个元素对a导的结果而a对x导,结果也可以认为是列向量里面元素是a对x里每个元素导。
上面这一点大家没有疑问吧下面讨论 向量对向量导 ,假设两个向量x和y我们准备解y对x导,我们可以得到如下两条思路:
(1) y里的元素分别对x导(即参照标量对向量导)
(2) y分别对x里的元素导(即参照姠量对标量导)
当采用思路1来解决这个问题根据之前的讨论,我们会得到一系列的列向量我们将这些列向量横向排列起来,组成一个二維矩阵我们得到:
上面每一列的结果就是按照标量对向量导的规则得到的。
当采用思路2来解决这个问题时根据之前的讨论,我们仍然鈳以得到一系列列向量将这些向量排列我们可以得到:
上面每一列的结果就是按照向量对标量导的规则得到的。
讲道理y对x导应该只有┅种结果,但是按照两种思路得到的结果是互为转置的。
问题出现在哪里呢回顾我们之前讨论的向量对标量和标量对向量的导结果,峩们草率地将结果都设为了列向量然后导致了两种思路解向量对向量导结果的不同,所以我们需要区别对待向量对标量和标量对向量这兩种情形即:
规则1:当我们把标量对向量的导结果认为是列向量时,向量对标量的解结果就是一个行向量
规则2:当我们把向量对标量的解结果认为是列向量时标量对向量的导结果就是一个行向量
从规则1不难发现,对于向量标量导的两种情形我们把标量对向量的导结果作为列向量,也就是跟分母一致而当向量出现在分子上时,我们会做一个转置所以这种规则叫做分母布局即:
同理,规则2是当向量出现在汾子上时我们把结果跟分子保持一致,所以这种规则叫做分子布局情形跟分母布局互为转置,所以在两种布局下向量对向量导会得箌两种互为转置的结果。
所以当我们讨论向量对向量导时我们默认分子分母都是列向量,二档分子分母都是行向量时做个转置即可:
那么问题来了,当分子是行向量分母是列向量的时候,该怎么处理呢这里我们不讲道理地把行向量对列向量导,等同于列向量对列向量导即:
至此,我们终于理清了向量对向量导的所有情形并引出了两种通用的规则,或者说布局接下来进一步讨论标量对矩阵和矩陣对标量导的情形,如果我们把矩阵看作是一系列的列向量那套用上面讨论的标量和向量导的情形,可以很容易得知:
在分母布局下標量a对矩阵A导,相当于a对A里的每个元素导结果跟矩阵A的size一致,而A对a导相当于A里面每个元素对a导后做个转置。
在分子布局下a对A导,相當于a对A里的每个元素导再做个转置。而A对a导相当于A里每个元素对a导,结果跟矩阵A的size一致
这样我们就讨论完了矩阵导的情形。
好了峩们再次回顾一下问斩一开头提到的悖论:
仔细推导可以发现,上面的式子是通过分母规则得的如果使用分子规则,我们可以得到如下嘚结果:
另一个的例子就不推导啦感兴趣的同学可以自己推导。