矩阵微分

矩阵微分

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


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

主要介绍实值函数相对于实向量变量或者矩阵变量的偏导.这里首先对变元和函数符号做统一的规定以便后面介绍.
xx=[x1,...,xm]TRm x x = [ x 1 , . . . , x m ] T ∈ R m 为实向量变元
XX=[xx1,...,xxm]TRm×n X X = [ x x 1 , . . . , x x m ] T ∈ R m × n 为矩阵变元
f(xx)R,xxRm,f:RmR f ( x x ) ∈ R 为 实 值 标 量 函 数 , 其 变 元 x x ∈ R m , 记 做 f : R m → R
f(XX)R,XXRm×n,f:Rm×nR f ( X X ) ∈ R 为 实 值 标 量 函 数 , 其 变 元 X X ∈ R m × n , 记 做 f : R m × n → R
ff(xx)Rpp,xxRm,f:RmRp f f ( x x ) ∈ R p 为 p 维 实 列 向 量 函 数 , 其 变 元 x x ∈ R m , 记 做 f : R m → R p
ff(XX)Rpp,XXRm×n,f:Rm×nRp f f ( X X ) ∈ R p 为 p 维 实 列 向 量 函 数 , 其 变 元 X X ∈ R m × n , 记 做 f : R m × n → R p
FF(xx)Rp×qp×q,xxRm,f:RmRp×q F F ( x x ) ∈ R p × q 为 p × q 实 矩 阵 函 数 , 其 变 元 x x ∈ R m , 记 做 f : R m → R p × q
FF(XX)Rp×qp×q,XXRm×n,f:Rm×nRp×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 行向量作为偏导算子,记为

Dxx=def[x1,...,xm] D x x = d e f [ ∂ ∂ x 1 , . . . , ∂ ∂ x m ]

实值标量函数 f(xx)xx1×m, f ( x x ) 在 x x 的 偏 导 向 量 为 1 × m 行 向 量 , 定 义 如 下

Dxxf(xx)=f(xx)xxT=[f(xx)x1,...,f(xx)xm] D x x f ( x x ) = ∂ f ( x x ) ∂ x x T = [ ∂ f ( x x ) ∂ x 1 , . . . , ∂ f ( x x ) ∂ x m ]

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

DXXf(XX)=f(XX)XXT D X X f ( X X ) = ∂ f ( X X ) ∂ X X T
而他的行向量偏导定义为
DvecXXf(XX)=f(XX)vec(XX)T=[f(xx)x1,...f(xx)xm1,...,f(xx)x1n,...,f(xx)xmn] 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(XX) f ( X X ) 的Jacobian矩阵的转置 DTXXf(XX) D X X T f ( X X ) 的列向量化后即为他的行向量偏导 DvecXXf(XX) D v e c X X f ( X X ) ,这是后面介绍Jacobian矩阵相关知识的基础
FF(XX)p×q,Jacobian 当 F F ( X X ) 为 p × q 实 矩 阵 函 数 时 , 定 义 他 的 J a c o b i a n 矩 阵 如 下
DXXFF(XX)=defvec(FF(XX))(vecXX)T D X X F F ( X X ) = d e f ∂ v e c ( F F ( X X ) ) ∂ ( v e c X X ) T

梯度矩阵

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

xx=def[x1,...,xm]T ∇ x x = d e f [ ∂ ∂ x 1 , . . . , ∂ ∂ x m ] T

实值标量函数 f(xx)xxm×1, f ( x x ) 在 x x 的 梯 度 向 量 为 m × 1 列 向 量 , 定 义 如 下

xxf(xx)=[f(xx)x1,...,f(xx)xm]T ∇ x x f ( x x ) = [ ∂ f ( x x ) ∂ x 1 , . . . , ∂ f ( x x ) ∂ x m ] T

实值标量函数 f(XX)XX,XX f ( X X ) 的 变 元 X X 列 向 量 化 后 , 可 以 定 义 其 矩 阵 变 元 X X 的 梯 度 向 量 为

vecXXf(XX)=f(XX)vec(XX)=[f(xx)x1,...f(xx)xm1,...,f(xx)x1n,...,f(xx)xmn]T ∇ 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(XX)XX f ( X X ) 的 其 关 于 矩 阵 变 元 X X 的 梯 度 矩 阵 为
XXf(XX)=f(XX)XX ∇ X X f ( X X ) = ∂ f ( X X ) ∂ X X
比较 f(XX) f ( X X ) 的梯度矩阵和Jacobian矩阵,可以发现梯度矩阵即为Jacobian矩阵的转置
当实值标量函数数 f(XX)p×q, f ( X X ) 的 变 元 是 p × q 维 矩 阵 的 时 候 , 他 的 梯 度 向 量 定 义 为 如 下
XXFF(XX)=defvec(FF(XX))(vecXX)T ∇ X X F F ( X X ) = d e f ∂ v e c ( F F ( X X ) ) ∂ ( v e c X X ) T

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

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

df(xx)=f(xx)x1dx1+...+f(xx)xmdxm=f(xx)xxTdxx 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

AA=f(xx)xxT 记 A A = ∂ f ( x x ) ∂ x x T ,则有如下等价关系
df(xx)=tr(Adxx)Dxxf(xx)=f(xx)xxT=A d f ( x x ) = t r ( A d x x ) ⟺ D x x f ( x x ) = ∂ f ( x x ) ∂ x x T = A

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

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

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

df(XX)=f(XX)xxT1dxx1+...+f(XX)xxTndxxn=f(XX)vecT((X)d(vecXX)=DvecXXf(XX)d(vecXX) 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矩阵的关系 DvecXXf(XX)=(vec(DTXXf(XX)))TA=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 ) 可以得到
df(XX)=(vec(AT))Td(vecXX) d f ( X X ) = ( v e c ( A T ) ) T d ( v e c 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 ,则上式可以重写为
df(XX)=tr(AAdXX) d f ( X X ) = t r ( A A d X X )

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

df(xx)=tr(Adxx)Dxxf(xx)=Adf(XX)=tr(AdXX)DXXf(XX)=A 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

矩阵微分 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 ) 我们可以得到

dtr(XXTXX)=tr(d(XXTXX))=tr(d(XX)TXX+XXTdXX)=tr(d(XX)TXX)+tr(XXTdXX)=tr(XXTd(XX))+tr(XXTdXX)=tr(2XXTd(XX)) 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 ) )

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值