行向量对元素求导 |
|
列向量对元素求导 | |
矩阵对元素求导 | |
元素对行向量求导 | |
元素对列向量求导 | |
元素对矩阵求导 | |
行向量对列向量求导 | |
列向量对行向量求导 | |
行向量对行向量求导 | |
列向量对列向量求导 | |
矩阵对行向量求导 | |
矩阵对列向量求导 (这个略有不同) |
|
行向量对矩阵求导(这个略有不同) | |
列向量对矩阵求导 | |
矩阵对矩阵求导 |
我们先考虑一个问题:
维度为m的一个向量对一个标量的求导,那么结果也是一个m维的向量:∂/∂。
这个m维的求导结果排列成的m维向量到底应该是列向量还是行向量?
答案是行向量和列向量都可以(二者只相差一个转置运算)
但是在机器学习算法法优化过程中,如果行向量或者列向量随便写,那么结果就不唯一,乱套了。
为了解决矩阵向量求导的结果不唯一,我们引入求导布局。最基本的求导布局有两个:分子布局(numerator layout)和分母布局(denominator layout )。
对于分子布局来说,我们求导结果的维度以分子为主,比如对于我们上面对标量求导的例子,结果的维度和分子的维度是一致的。对于分母布局来说,我们求导结果的维度以分母为主。
但是在机器学习算法原理的资料推导里,我们并没有看到说正在使用什么布局,也就是说布局被隐含了,这就需要自己去推演,比较麻烦。
但是一般来说我们会使用一种叫混合布局的思路,即如果是向量或者矩阵对标量求导,则使用分子布局为准,如果是标量对向量或者矩阵求导,则以分母布局为准。(就是说,跟着维度大的走)
对于向量对对向量求导,有些分歧,可能得视情况而定了。
总的来说,我们可以做如下的总结:
——>雅可比矩阵
小写字母表示向量,大写字母表示矩阵
如果y是m维,x是n维,那么分子布局会得到一个m*n的矩阵;分母布局会得到一个n*m的矩阵
条件情况 | 典型表达式 |
分子布局 维度为 |
分母布局 维度为 (在这一小节中,以分母布局为主) |
向量a不是向量x的函数 | 0【这里是全零矩阵】 | ||
/ | I【这里是全1矩阵】 | ||
A不是关于x的函数 |
A | ||
A | |||
a不是关于x的函数 但是u是,u=u(x) |
|||
A不是关于x的函数 但是u是,u=u(x) |
|||
a=a(x) u=u(x) |
|||
u=u(x) v=v(x) |
|||
u=u(x) | |||
A不是x的函数 | |||
条件情况 | 典型表达式 |
分子布局 维度为y (在这一小节中,以分母布局为主) |
分母布局 维度为y^T |
a不是x的函数 | 0 | ||
a不是x的函数 u=u(x) |
|||
A不是x的函数 u=u(x) |
|||
u=u(x) | |||
u=u(x) v=v(x) |
|||
u=u(x) | |||
U=U(x) v=v(x) |
条件情况 | 典型表达式 |
分子布局 维度为Y 标量对矩阵一般来说只有分子布局 |
U=U(x) | ||
A,B不是x的函数 U=U(x) |
||
U=U(x) V=V(x) |
||
U=U(x,y) | ||
A不是X的函数 | ||
注意一点:此时的展开式除以的X也相当于是转置
参考资料
矩阵和向量的求导法则_jmhIcoding-CSDN博客_矩阵对向量求导
维基百科