http://blog.csdn.net/pipisorry/article/details/68961388
复杂的矩阵函数求导。著名的matrix cookbook为广大的研究者们提供了一本大字典,里面有着各种简单到复杂矩阵和向量的求导法则。
布局(Layout)
矩阵求导有两种布局,分子布局(numerator layout)和分母布局(denominator layout)。
为了阐明这两种布局的区别,我们先来看最简单的求导规则。
首先是向量
在分子布局下,
而在分母布局下,
你可以随时在两种布局间进行转换,只要你自己不犯迷糊。
向量求导规则
基本的求导规则
标量函数关于向量的导数
定义:若是中向量的数量函数,则对的导数(即数量函数的梯度)为
在此,数量函数是指函数的输出是标量。由以上定义可知,我们所说的对向量的导数是函数关于向量元素的偏导数。因此,得到的导数结果是一向量,与向量的维度一致。
标量函数关于矩阵的导数
本质上,向量就是矩阵,如果理解了数量函数关于向量的导数,就不难理解数量函数关于矩阵的导数。
标量
y
对向量
x
求导
注意到,标量对向量求导和向量对标量求导刚好反过来。
向量对向量求导,
标量对矩阵求导,
矩阵对标量求导,
事实上,直观上看,凡是对标量求导,结果的形式都要转置,而标量对向量和矩阵求导则位置保持不动。这样总结方便我们记忆。
总的来说,涉及矩阵和向量的求导不外乎五大类别,
- 向量对标量
- 标量对向量
- 向量对向量
- 矩阵对标量
- 标量对矩阵
常用向量求导公式:实值标量函数对向量x的偏导
机器学习中常用的矩阵求导公式
Y = A * X --> DY/DX = A'
Y = X * A --> DY/DX = A
Y = A' * X * B --> DY/DX = A * B'
Y = A' * X' * B --> DY/DX = B * A'
更多[http://en.wikipedia.org/wiki/Matrix_calculus]
向量求导的示例
逐项展开分析
向量求导与标量求导法则不同的是,向量的求导还要注意结果的排法问题。注意排法是因为当一个目标函数是多个成分相加时,如果不注意排法可能导致有些结果是行,有些是列,无法继续进行运算。我总结的向量求导的基本推导准则是(以f(x)对向量求导为例):
1)先对f(x)求向量分量的导数,也就是标量的导数,该导数可能是标量,也可能是向量;
2)如果第一步求导结果为标量,直接将结果排列成x的形状(本例为列);如果第一步求出的结果是向量,在按照x排列结果时:
2.1)如果求导结果与x形状相同,则将结果取转置排成矩阵;
2.3)如果求导结果与x形状不同,则直接将结果排成矩阵。
两个例子
以下约定向量x是列向量,是矩阵,是A的转置。
例1
1)求分量导数
2.1)排列:求导结果与x形状相同,将取转置按列排好,即A的转置:
例2
1)
[矩阵分析与应用-张贤达]
2)上述结果是标量,直接排成一列,整理一下得:
有了基本求导规则,就可以求一些更复杂基本函数的导数。对于矩阵的行列式,向量的叉积,矩阵的逆这些更复杂的导数的求法以及向量的链式求导规则,下篇再表。
如果变量是矩阵,上述法则是很容易推广到矩阵上去的:矩阵是由向量组成的,先利用上述向量的求导法则求导,再对结果进行排列,排列的讨论与2)非常类似。
示例3
首先是
理论上对于任意的表达式,我们都可以通过定义出发,利用上面这种形式推导得到。
但是对于一些复杂的求导,这个时候恐怕逐项展开分析就不是很靠谱了。
维度分析
考虑假如
同样对于
我们发现,虽然乘积法则的精准形式无法应用于矩阵求导中,然而这种非精确的乘积法则可以准确的告诉我们哪些项一定会出现在结果中,然后通过分析维度,我们就可以写出结果。再看
我们利用非精确的乘积法则,可以将这个分成两部分
于是结果和两部分相关,一个是
因此
最后看一个式子
注意到
所以(注意到
矩阵求导整理
1. 矩阵Y对标量x求导:
2. 标量y对列向量X求导:
3. 行向量Y'对列向量X求导:
4. 列向量Y对行向量X’求导:
5. 向量积对列向量X求导运算法则:
6. 矩阵Y对列向量X求导:
7. 矩阵积对列向量求导法则:
8. 标量y对矩阵X的导数:
9. 矩阵Y对矩阵X的导数:
from: http://blog.csdn.net/pipisorry/article/details/68961388
ref: [刘丁酉《矩阵分析》]
[闲话矩阵求导]*