矩阵微分
标签(空格分隔): 矩阵微分
矩阵微分
在学习机器学习算法时,发现对矩阵求导很不熟悉,去看了张贤达的矩阵分析,发现标量对矩阵求导的问题说的很清楚.关于如何求解 hessian矩阵,日后再来补上.
重要的事情说三遍
损失函数是标量函数!!!
损失函数是标量函数!!!
损失函数是标量函数!!!
主要介绍实值函数相对于实向量变量或者矩阵变量的偏导.这里首先对变元和函数符号做统一的规定以便后面介绍.
xx=[x1,...,xm]T∈Rm
x
x
=
[
x
1
,
.
.
.
,
x
m
]
T
∈
R
m
为实向量变元
XX=[xx1,...,xxm]T∈Rm×n
X
X
=
[
x
x
1
,
.
.
.
,
x
x
m
]
T
∈
R
m
×
n
为矩阵变元
f(xx)∈R为实值标量函数,其变元xx∈Rm,记做f:Rm→R
f
(
x
x
)
∈
R
为
实
值
标
量
函
数
,
其
变
元
x
x
∈
R
m
,
记
做
f
:
R
m
→
R
f(XX)∈R为实值标量函数,其变元XX∈Rm×n,记做f:Rm×n→R
f
(
X
X
)
∈
R
为
实
值
标
量
函
数
,
其
变
元
X
X
∈
R
m
×
n
,
记
做
f
:
R
m
×
n
→
R
ff(xx)∈Rp为p维实列向量函数,其变元xx∈Rm,记做f:Rm→Rp
f
f
(
x
x
)
∈
R
p
为
p
维
实
列
向
量
函
数
,
其
变
元
x
x
∈
R
m
,
记
做
f
:
R
m
→
R
p
ff(XX)∈Rp为p维实列向量函数,其变元XX∈Rm×n,记做f:Rm×n→Rp
f
f
(
X
X
)
∈
R
p
为
p
维
实
列
向
量
函
数
,
其
变
元
X
X
∈
R
m
×
n
,
记
做
f
:
R
m
×
n
→
R
p
FF(xx)∈Rp×q为p×q实矩阵函数,其变元xx∈Rm,记做f:Rm→Rp×q
F
F
(
x
x
)
∈
R
p
×
q
为
p
×
q
实
矩
阵
函
数
,
其
变
元
x
x
∈
R
m
,
记
做
f
:
R
m
→
R
p
×
q
FF(XX)∈Rp×q为p×q实矩阵函数,其变元XX∈Rm×n,记做f:Rm×n→Rp×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
1
×
m
行向量作为偏导算子,记为
实值标量函数
f(xx)在xx的偏导向量为1×m行向量,定义如下
f
(
x
x
)
在
x
x
的
偏
导
向
量
为
1
×
m
行
向
量
,
定
义
如
下
当实值标量函数
f(XX)的变元是p×q
f
(
X
X
)
的
变
元
是
p
×
q
维矩阵的时候,他有两种定义:Jacobian矩阵和行向量偏导.他的Jacobian矩阵定义为如下
当FF(XX)为p×q实矩阵函数时,定义他的Jacobian矩阵如下 当 F F ( X X ) 为 p × q 实 矩 阵 函 数 时 , 定 义 他 的 J a c o b i a n 矩 阵 如 下
梯度矩阵
采用列向量形式的偏导算子称为列向量偏导算子,也称为梯度算子
采用
m×1
m
×
1
向量作为偏导算子,记为
实值标量函数
f(xx)在xx的梯度向量为m×1列向量,定义如下
f
(
x
x
)
在
x
x
的
梯
度
向
量
为
m
×
1
列
向
量
,
定
义
如
下
实值标量函数
f(XX)的变元XX列向量化后,可以定义其矩阵变元XX的梯度向量为
f
(
X
X
)
的
变
元
X
X
列
向
量
化
后
,
可
以
定
义
其
矩
阵
变
元
X
X
的
梯
度
向
量
为
定义 f(XX)的其关于矩阵变元XX的梯度矩阵为 f ( X X ) 的 其 关 于 矩 阵 变 元 X X 的 梯 度 矩 阵 为
当实值标量函数数 f(XX)的变元是p×q维矩阵的时候,他的梯度向量定义为如下 f ( X X ) 的 变 元 是 p × q 维 矩 阵 的 时 候 , 他 的 梯 度 向 量 定 义 为 如 下
标量函数 f(xx) f ( x x ) 与Jacobian矩阵
以向量为变元的标量函数
f(xx)
f
(
x
x
)
的全微分形式可以写为
记AA=∂f(xx)∂xxT 记 A A = ∂ f ( x x ) ∂ x x T ,则有如下等价关系
也就是标量函数 f(xx) f ( x x ) 的Jacobian矩阵和微分矩阵存在着等价关系
标量函数 f(XX) f ( X X ) 与Jacobian矩阵
标量函数
f(XX)
f
(
X
X
)
和上面类似,其全微分可以写成如下形式
这里再利用行向量偏导和Jacobian矩阵的关系 DvecXXf(XX)=(vec(DTXXf(XX)))T,并令A=DTXXf(XX) 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 ) 可以得到
由向量化算子vec与迹函数的关系式 tr(BTC)=(vec(B))Tvec(C),令B=AT,C=dXX t r ( B T C ) = ( v e c ( B ) ) T v e c ( C ) , 令 B = A T , C = d X X ,则上式可以重写为
综合以上,可以得到如下结论:
Jacobian矩阵可以通过以下式子等价确定
矩阵微分
df(XX)
d
f
(
X
X
)
可以通过简单的变化转化为矩阵微分的标准形式
df(XX)=tr(AdXX)
d
f
(
X
X
)
=
t
r
(
A
d
X
X
)
.再由Jacobian和梯度矩阵的关系,进一步可以得到梯度矩阵.因而对求解梯度矩阵可以由矩阵微分的标准形式
df(XX)=tr(AdXX)
d
f
(
X
X
)
=
t
r
(
A
d
X
X
)
得到.
如下:
对于
tr(XXTXX)
t
r
(
X
X
T
X
X
)
我们可以得到
由以上结论,可以得到 XXTXX X X T X X 关于 XX X X 的梯度矩阵为
求解梯度矩阵是进行一阶优化算法的基础部分.
参考文献&学习资料
矩阵分析与应用 -张贤达
矩阵求导术-知乎
The Matrix Cookbook.