矩阵求导链式法则详解
矩阵求导链式法则详解
矩阵求导的链式法则是机器学习和深度学习中非常重要的数学工具。本文详细介绍了向量对向量、标量对多个向量、标量对多个矩阵的求导规则,并通过多个实例进行了详细推导。对于从事机器学习和深度学习研究的读者来说,本文具有很高的参考价值。
一、向量对向量
假设多个向量存在依赖关系,比如三个向量存在依赖关系,则我们有下面的链式求导法则:
维度探讨:假设x y z的维度分别为m,n,p,∂z/∂x是 p×m,∂z/∂y是 p×n,∂y/∂x是 n×m,符合矩阵乘法维度原则。
二、标量对多个向量
2.1 3个向量
最后到1标量的依赖关系:**x → y →**z ,此时很容易发现维度不相容。不能再简单套用上面的式子,而做了对应的变形:
维度探讨:假设x yz 的维度分别为m,n,1,∂z/∂x是 m×1,(∂y/∂x)T是 m×n,∂z/∂x是 n×1,符合矩阵乘法维度原则。
2.2多个向量
对于更加复杂的形式:如:**y1 → y2 →…… yn →**z ,则表达式为:
2.3实际应用
ML-2最小二乘法中使用到的,最小二乘法优化的目标是最小化如下损失函数:
对上述进行如下假设:
很容易得到以下表达式:
三、标量对多个矩阵
假设:X → Y → z存在依赖关系,则我们有下面的链式求导法则:
上面的式子是矩阵迹性质来的,不是特别实用,也不便于推广。我们再看一个偏难得问题:
同样还是如此,
我们再来看看后半部分的导数:
那么最终的标签链式求导公式转化为:
排列成矩阵即为:
对上面的式子做个总结:
维度探讨:假设Y A X的维度分别为p×n,p×m,m×n,∂z/∂X是m×n,(A)T是 m×p,∂z/∂Y是 p×n,符合矩阵乘法维度原则。
这结论在是一个向量x的时候也成立,即
同理:如果要求导的自变量在左边,线性变换在右边,也有类似稍有不同的结论如下:
使用好上述四个结论,对于机器学习尤其是深度学习里的求导问题可以非常快的解决
四、矩阵向量求导小结
矩阵向量求导的三种方法:定义法,微分法和链式求导法。在同等情况下,优先考虑链式求导法,尤其是第三节的四个结论。其次选择微分法、在没有好的求导方法的时候使用定义法是最后的保底方案。
基本上大家看了系列里这四篇后对矩阵向量求导就已经很熟悉了,对于机器学习中出现的矩阵向量求导问题已足够。
主要来自:https://www.cnblogs.com/pinard/p/10825264.html