date: 2019-03-10
tags: math
很长时间以来,虽然学习机器学习,但是我对最基本的矩阵求导仍然是非常模糊,在这里好好的整理一下。以下内容几乎全部来自Matrix calculus的维基页面。
从一个简单的标量函数对矩阵求导为例:
也可以写成矩阵形式,那就是标量函数关于向量求导:
更复杂一点的例子,就是标量函数对矩阵求导,被称为gradient matrix,其包含了对于矩阵每一个元素的导数。
再举另外一个例子,有的时候我们由n个因变量,m个自变量,那么因变量向量相对于自变量向量的导数为一个的矩阵,其中包含了所有的组合。
对于标量,向量,矩阵这三样东西,我们可以两两组合求导,但是这其中有几样是相对比较常见的
Types | Scalar | Vector | Matrix |
---|---|---|---|
Scalar | |||
Vector | |||
Matrix |
注意我们可以对矩阵函数关于向量求导,但是其会为超过2阶的张量了,所以不在这里进行讨论了。
这里面一一展示了上面的6种的展开模式:
在vector calculus种,这被成为的tangent vector。
在vector calculus中,向量函数对向量求导被称为Jacobian matrix。(注意这里用的是numerator layout。)
对于的结果有两种表示的方法,如果y是m维,而x是n维,那么结果可以是或者。一般有如下的几种表示方法:
下面是对于上面两种layout对应的一些结构:
对于矩阵相关的求导也会有对应的方式。
有的时候微分形式更好处理。
Expression | Result (numerator layout) |
---|---|
Expression | Result (numerator layout) |
---|---|
Canonical differential form | Equivalent derivative form |
---|---|
这里在原文中有很好的一个表,在这里会摘取一些机器学习中经常会用的式子。
矩阵的迹的导数可以用其循环和转置的性质求得,如:
注意很多时候,把变量结果转化为迹就可以更好的求得结果。
对于行列式,我们有: