线性代数之 矩阵求导(4)矩阵微分,迹与求导

前言

本次将记录如何进行矩阵求导(标量对矩阵)。由于矩阵求导涉及行列式、迹,因此比标量对向量、向量对向量都要复杂一些。

矩阵微分定义

定义矩阵 X X X、实值函数 f ( X ) f(X) f(X)的微分和偏导矩阵:
X = [ x 11 x 12 … x 1 n x 21 x 22 … x 2 n … … … … x n 1 x n 2 … x n n ] d X = [ d x 11 d x 12 … d x 1 n d x 21 d x 22 … d x 2 n … … … … d x n 1 d x n 2 … d x n n ] ∂ f ( X ) ∂ X = [ ∂ f ∂ x 11 ∂ f ∂ x 12 … ∂ f ∂ x 1 n ∂ f ∂ x 21 ∂ f ∂ x 22 … ∂ f ∂ x 2 n … … … … ∂ f ∂ x n 1 ∂ f ∂ x n 2 … ∂ f ∂ x n n ] 将 f ( X ) 看 做 关 于 矩 阵 元 素 的 多 元 函 数 , 则 d f ( X ) = ∑ i = 1 n ∑ j = 1 n ∂ f ∂ x i j d x i j 上 式 是 矩 阵 乘 积 的 内 积 , 即 矩 阵 A B T 的 迹 d f ( X ) = t r ( ∂ f ( X ) ∂ X ( d X ) T ) = t r ( ( ∂ f ( X ) ∂ X ) T d X ) = t r ( ( ∂ f ( X ) ∂ X T ) d X ) 就 将 矩 阵 求 导 , 微 分 和 矩 阵 的 迹 关 联 了 起 来 。 X=\begin{bmatrix} x_{11} & x_{12} & \dots & x_{1n} \\ x_{21} & x_{22} & \dots & x_{2n} \\ \dots & \dots & \dots & \dots \\ x_{n1} & x_{n2} & \dots & x_{nn} \\ \end{bmatrix} \\ \quad \\ dX=\begin{bmatrix} dx_{11} & dx_{12} & \dots & dx_{1n} \\ dx_{21} & dx_{22} & \dots & dx_{2n} \\ \dots & \dots & \dots & \dots \\ dx_{n1} & dx_{n2} & \dots & dx_{nn} \\ \end{bmatrix} \\ \quad \\ \frac {\partial f(X)}{\partial X} = \begin{bmatrix} \frac {\partial f}{\partial x_{11}} & \frac {\partial f}{\partial x_{12}} & \dots & \frac {\partial f}{\partial x_{1n}} \\ \frac {\partial f}{\partial x_{21}} & \frac {\partial f}{\partial x_{22}} & \dots & \frac {\partial f}{\partial x_{2n}} \\ \dots & \dots & \dots & \dots \\ \frac {\partial f}{\partial x_{n1}} & \frac {\partial f}{\partial x_{n2}} & \dots & \frac {\partial f}{\partial x_{nn}} \\ \end{bmatrix} \\ \quad \\ 将f(X)看做关于矩阵元素的多元函数,则 \\ \quad \\ df(X)=\sum_{i=1}^n\sum_{j=1}^n \frac {\partial f}{\partial x_{ij}}dx_{ij} \\ \quad \\ 上式是矩阵乘积的内积,即矩阵AB^T的迹\\ \quad \\ df(X)=tr(\frac {\partial f(X)}{\partial X} (dX)^T) \\ = tr((\frac {\partial f(X)}{\partial X})^TdX) \\ = tr((\frac {\partial f(X)}{\partial X^T})dX) \\ \quad \\ 就将矩阵求导,微分和矩阵的迹关联了起来。 X=x11x21xn1x12x22xn2x1nx2nxnndX=dx11dx21dxn1dx12dx22dxn2dx1ndx2ndxnnXf(X)=x11fx21fxn1fx12fx22fxn2fx1nfx2nfxnnff(X)df(X)=i=1nj=1nxijfdxijABTdf(X)=tr(Xf(X)(dX)T)=tr((Xf(X))TdX)=tr((XTf(X))dX)
因此,对实值函数进行矩阵求导,相当于求函数的全微分,并展开为 d f ( X ) = t r ( ( ∂ f ( X ) ∂ X T ) d X ) df(X)=tr((\frac {\partial f(X)}{\partial X^T})dX) df(X)=tr((XTf(X))dX)的形式,就能得到分子布局的求导结果 ∂ f ( X ) ∂ X T \frac {\partial f(X)}{\partial X^T} XTf(X)

定义实矩阵函数 F ( X ) F(X) F(X)的微分:
d F ( X ) = [ d f 11 ( X ) d f 12 ( X ) … d f 1 n ( X ) d f 21 ( X ) d f 22 ( X ) … d f 2 n ( X ) … … … … d f n 1 ( X ) d f n 2 ( X ) … d f n n ( X ) ] dF(X)=\begin{bmatrix} df_{11}(X) & df_{12}(X) & \dots & df_{1n}(X) \\ df_{21}(X) & df_{22}(X) & \dots & df_{2n}(X) \\ \dots & \dots & \dots & \dots \\ df_{n1}(X) & df_{n2}(X) & \dots & df_{nn}(X) \\ \end{bmatrix} dF(X)=df11(X)df21(X)dfn1(X)df12(X)df22(X)dfn2(X)df1n(X)df2n(X)dfnn(X)
仍然是一个与 F ( X ) F(X) F(X)同型的矩阵。引入矩阵函数的目的只是为了方便微分计算。

矩阵微分计算法则

矩阵微分的计算法则,与标量微分的计算法则相同,将标量变量替换为矩阵变量后,需要注意的只有乘积顺序不能改变

常矩阵

d A m × n = 0 m × n dA^{m\times n}=0^{m\times n} dAm×n=0m×n

线性

d ( c 1 F ( X ) + c 2 G ( X ) ) = c 1 d F ( X ) + c 2 d G ( X ) d(c_1F(X)+c_2G(X))=c_1dF(X)+c_2dG(X) d(c1F(X)+c2G(X))=c1dF(X)+c2dG(X)

乘积

d ( F ( X ) G ( X ) ) = ( d F ( X ) ) G ( X ) + F ( X ) d ( G ( X ) ) d(F(X)G(X))=(dF(X))G(X)+F(X)d(G(X)) d(F(X)G(X))=(dF(X))G(X)+F(X)d(G(X))

转置

( d F ( X ) ) T = d ( F T ( X ) ) (dF(X))^T=d(F^T(X)) (dF(X))T=d(FT(X))
特例:
d X T = ( d X ) T dX^T=(dX)^T dXT=(dX)T

d ( t r ( f ( X ) ) ) = d f ( X ) = t r ( d f ( X ) ) d ( t r ( F ( X ) ) ) = d ∑ i = 1 n f i i ( X ) = ∑ i = 1 n d f i i ( X ) = t r ( d F ( X ) ) d(tr(f(X)))=df(X)=tr(df(X)) \\ \quad \\ d(tr(F(X)))=d\sum_{i=1}^nf_{ii}(X)=\sum_{i=1}^ndf_{ii}(X)=tr(dF(X)) d(tr(f(X)))=df(X)=tr(df(X))d(tr(F(X)))=di=1nfii(X)=i=1ndfii(X)=tr(dF(X))

通过矩阵微分进行求导

例:
求 : ∂ t r ( X T X ) ∂ X T 解 : d ( t r ( X T X ) ) = t r ( d ( X T X ) ) = t r ( d ( X T ) X + X T d X ) = t r ( ( d X ) T X + X T d X ) = t r ( ( d X T ) X ) + t r ( X T d X ) = t r ( X T ( d X T ) T ) + t r ( X T d X ) = t r ( X T d X ) + t r ( X T d X ) = t r ( 2 X T d X ) ∂ t r ( X T X ) ∂ X T = 2 X T 求:\\ \quad \\ \frac {\partial tr(X^TX)}{\partial X^T} \\ \quad \\ 解:\\ \quad \\ d(tr(X^TX))=tr(d(X^TX)) \\ = tr(d(X^T)X+X^TdX) \\ = tr((dX)^TX+X^TdX) \\ = tr((dX^T)X)+tr(X^TdX) \\ =tr(X^T(dX^T)^T)+tr(X^TdX) \\ = tr(X^TdX)+tr(X^TdX) \\ = tr(2X^TdX) \\ \quad \\ \frac {\partial tr(X^TX)}{\partial X^T} = 2X^T XTtr(XTX)d(tr(XTX))=tr(d(XTX))=tr(d(XT)X+XTdX)=tr((dX)TX+XTdX)=tr((dXT)X)+tr(XTdX)=tr(XT(dXT)T)+tr(XTdX)=tr(XTdX)+tr(XTdX)=tr(2XTdX)XTtr(XTX)=2XT

实际上,所有的实值函数求导,包括标量对向量、矩阵求导,都能通过这样的求全微分、迹的交换、转置得到最终结果。

常用的矩阵微分

行列式:
d ∣ X ∣ = t r ( ∣ X ∣ X − 1 d X ) d|X|=tr(|X|X^{-1}dX) dX=tr(XX1dX)

逆矩阵:
d ( X − 1 ) = − X − 1 ( d X ) X − 1 d(X^{-1})=-X^{-1}(dX)X^{-1} d(X1)=X1(dX)X1

后记

把矩阵求导转换为求矩阵微分,可以有效降低求导的难度。

本节是矩阵求导的最后一个部分。SLAM中涉及矩阵求导的部分很多,后续碰到SLAM中的矩阵求导时,会加到这一篇的求导例子中。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值