矩阵微分

矩阵微分

标签(空格分隔): 矩阵微分


在学习机器学习算法时,发现对矩阵求导很不熟悉,去看了张贤达的矩阵分析,发现标量对矩阵求导的问题说的很清楚.关于如何求解 hessian矩阵,日后再来补上.
重要的事情说三遍
损失函数是标量函数!!!
损失函数是标量函数!!!
损失函数是标量函数!!!

主要介绍实值函数相对于实向量变量或者矩阵变量的偏导.这里首先对变元和函数符号做统一的规定以便后面介绍.
x x = [ x 1 , . . . , x m ] T R m 为实向量变元
X X = [ x x 1 , . . . , x x m ] T R m × n 为矩阵变元
f ( x x ) R , x x R m , f : R m R
f ( X X ) R , X X R m × n , f : R m × n R
f f ( x x ) R p p , x x R m , f : R m R p
f f ( X X ) R p p , X X R m × n , f : R m × n R p
F F ( x x ) R p × q p × q , x x R m , f : R m R p × q
F F ( X X ) R p × q p × q , X X R m × n , f : R m × n R p × q

Jacobian 矩阵

采用 1 × m 行向量作为偏导算子,记为

D x x = d e f [ x 1 , . . . , x m ]

实值标量函数 f ( x x ) x x 1 × m ,

D x x f ( x x ) = f ( x x ) x x T = [ f ( x x ) x 1 , . . . , f ( x x ) x m ]

当实值标量函数 f ( X X ) p × q 维矩阵的时候,他有两种定义:Jacobian矩阵和行向量偏导.他的Jacobian矩阵定义为如下

D X X f ( X X ) = f ( X X ) X X T
而他的行向量偏导定义为
D v e c X X f ( X X ) = f ( X X ) v e c ( X X ) T = [ f ( x x ) x 1 , . . . f ( x x ) x m 1 , . . . , f ( x x ) x 1 n , . . . , f ( x x ) x m n ]
这里需要注意的是,实值标量函数 f ( X X ) 的Jacobian矩阵的转置 D X X T f ( X X ) 的列向量化后即为他的行向量偏导 D v e c X X f ( X X ) ,这是后面介绍Jacobian矩阵相关知识的基础
F F ( X X ) p × q , J a c o b i a n
D X X F F ( X X ) = d e f v e c ( F F ( X X ) ) ( v e c X X ) T

梯度矩阵

采用列向量形式的偏导算子称为列向量偏导算子,也称为梯度算子
采用 1 × m 向量作为偏导算子,记为

x x = d e f [ x 1 , . . . , x m ] T

实值标量函数 f ( x x ) x x m × 1 ,

x x f ( x x ) = [ f ( x x ) x 1 , . . . , f ( x x ) x m ] T

实值标量函数 f ( X X ) X X , X X

v e c X X f ( X X ) = f ( X X ) v e c ( X X ) = [ f ( x x ) x 1 , . . . f ( x x ) x m 1 , . . . , f ( x x ) x 1 n , . . . , f ( x x ) x m n ] T

定义 f ( X X ) X X
X X f ( X X ) = f ( X X ) X X
比较 f ( X X ) 的梯度矩阵和Jacobian矩阵,可以发现梯度矩阵即为Jacobian矩阵的转置
当实值标量函数数 f ( X X ) p × q ,
X X F F ( X X ) = d e f v e c ( F F ( X X ) ) ( v e c X X ) T

标量函数 f ( x x ) 与Jacobian矩阵

以向量为变元的标量函数 f ( x x ) 的全微分形式可以写为

d f ( x x ) = f ( x x ) x 1 d x 1 + . . . + f ( x x ) x m d x m = f ( x x ) x x T d x x

A A = f ( x x ) x x T ,则有如下等价关系
d f ( x x ) = t r ( A d x x ) D x x f ( x x ) = f ( x x ) x x T = A

也就是标量函数 f ( x x ) 的Jacobian矩阵和微分矩阵存在着等价关系

标量函数 f ( X X ) 与Jacobian矩阵

标量函数 f ( X X ) 和上面类似,其全微分可以写成如下形式

d f ( X X ) = f ( X X ) x x 1 T d x x 1 + . . . + f ( X X ) x x n T d x x n = f ( X X ) v e c T ( ( X ) d ( v e c X X ) = D v e c X X f ( X X ) d ( v e c X X )

这里再利用行向量偏导和Jacobian矩阵的关系 D v e c X X f ( X X ) = ( v e c ( D X X T f ( X X ) ) ) T A = D X X T f ( X X ) 可以得到
d f ( X X ) = ( v e c ( A T ) ) T d ( v e c X X )

由向量化算子vec与迹函数的关系式 t r ( B T C ) = ( v e c ( B ) ) T v e c ( C ) , B = A T , C = d X X ,则上式可以重写为
d f ( X X ) = t r ( A A d X X )

综合以上,可以得到如下结论:
Jacobian矩阵可以通过以下式子等价确定

d f ( x x ) = t r ( A d x x ) D x x f ( x x ) = A d f ( X X ) = t r ( A d X X ) D X X f ( X X ) = A

矩阵微分 d f ( X X ) 可以通过简单的变化转化为矩阵微分的标准形式 d f ( X X ) = t r ( A d X X ) .再由Jacobian和梯度矩阵的关系,进一步可以得到梯度矩阵.因而对求解梯度矩阵可以由矩阵微分的标准形式 d f ( X X ) = t r ( A d X X ) 得到.
如下:
对于 t r ( X X T X X ) 我们可以得到

d t r ( X X T X X ) = t r ( d ( X X T X X ) ) = t r ( d ( X X ) T X X + X X T d X X ) = t r ( d ( X X ) T X X ) + t r ( X X T d X X ) = t r ( X X T d ( X X ) ) + t r ( X X T d X X ) = t r ( 2 X X T d ( X X ) )

由以上结论,可以得到 X X T X X 关于 X X 的梯度矩阵为
t r ( X X T X X ) X X = ( 2 X X T ) T = 2 X X

求解梯度矩阵是进行一阶优化算法的基础部分.

参考文献&学习资料
矩阵分析与应用 -张贤达
矩阵求导术-知乎
The Matrix Cookbook.

猜你喜欢

转载自blog.csdn.net/xfzero/article/details/80336043
今日推荐