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

线性代数之 矩阵求导(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=⎣⎢⎢⎡​x11​x21​…xn1​​x12​x22​…xn2​​…………​x1n​x2n​…xnn​​⎦⎥⎥⎤​dX=⎣⎢⎢⎡​dx11​dx21​…dxn1​​dx12​dx22​…dxn2​​…………​dx1n​dx2n​…dxnn​​⎦⎥⎥⎤​∂X∂f(X)​=⎣⎢⎢⎢⎡​∂x11​∂f​∂x21​∂f​…∂xn1​∂f​​∂x12​∂f​∂x22​∂f​…∂xn2​∂f​​…………​∂x1n​∂f​∂x2n​∂f​…∂xnn​∂f​​⎦⎥⎥⎥⎤​将f(X)看做关于矩阵元素的多元函数,则df(X)=i=1∑n​j=1∑n​∂xij​∂f​dxij​上式是矩阵乘积的内积,即矩阵ABT的迹df(X)=tr(∂X∂f(X)​(dX)T)=tr((∂X∂f(X)​)TdX)=tr((∂XT∂f(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((∂XT∂f(X)​)dX)的形式,就能得到分子布局的求导结果 ∂ f ( X ) ∂ X T \frac {\partial f(X)}{\partial X^T} ∂XT∂f(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(c1​F(X)+c2​G(X))=c1​dF(X)+c2​dG(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=1∑n​fii​(X)=i=1∑n​dfii​(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 求:∂XT∂tr(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)∂XT∂tr(XTX)​=2XT

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

常用的矩阵微分

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

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

后记

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

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

上一篇:shell 学习笔记 常用命令 tr md5sum


下一篇:欢乐豆(happybean)