矩阵微分:推导与应用

入门实例

单变量线性函数: $f(x) = ax$ (1)

偏导数定义: $\frac{\partial f}{\partial x} = a$ (2)

扩展到多元变量,可以得到: $f(x)=\sum_{i}a_ix_i=a^Tx$ (3)

其中,$a=[a_1,a_2,…,a_n]^T$,$x=[x_1,x_2,…,x_n]^T$.两个都是列向量.可以直接计算偏导数: $\frac{\partial f}{\partial x_k}=\frac{\sum_{i}a_ix_i}{x_k}=a_k$ (4)

其中,k=1,2,…,n. 可以将n个偏导数组合在一起形成新的表达方法:

$\frac{\partial f}{\partial x} = \begin{array}{c} \frac{f}{x_1}\ \frac{f}{x_2}\ .\ .\ .\ \frac{f}{x_n}\end{array}=\begin{array}{c} a_1\ a_2\ .\ .\ .\ a_n = a$ (5)

等式5和等式2有类似之处,除了x变量从标量变成了向量.

推导

元素组织

矩阵微分和普通微分都适用于基础的微分规则.通过更好的元素组织和证明性属性,可以在真实问题中简化推导过程.

定义一: 对于一个实数值函数f(x),$\frac{f}{x}$大小尺寸和矩阵x的大小尺寸相同. 公式6

$\frac{\partial f}{\partial x}{ij}=\frac{f}{x{ij}}$

在等式2中,x是1x1的矩阵,结果$\frac{\partial f}{\partial x}=a$也是1x1的矩阵.在等式5中,x是一个列向量(n x 1矩阵),$\frac{\partial f}{\partial x}=a$也拥有和x相同的尺寸(nx1矩阵)

例1: 通过定义,可以得到: $\frac{\partial f}{\partial x^T}=(\frac{\partial f}{\partial x})^T=a^T$

内积处理

定理1. 一个多变量的实值函数$f(x)=a^Tx$,可以得到$\frac{\partial f}{\partial x}=a$. [默认向量都是列向量,x是列向量,结果和x尺寸相同].

因为,$a^Tx$是一个标量,所以也可以用在矩阵的迹上[因为实数的迹等于实数本身 tr(a)=a]

推论: 一个多变量的实值函数$f(x)=tr(a^Tx)$,那么,$\frac{\partial f}{\partial x}=a$. 因为,实数本身相等于一个1x1的矩阵,矩阵的迹等于矩阵主对角线元素之和.$tr(a^Tx)=a^Tx$.所以,两个结果相同.

迹的特征

定义二: 方阵的迹等于主对角线元素之和,$TrA=\sum_{i}A_{ii}$

例二: 根据定义1,2,可以得到:$\frac{\partial tr(A)}{\partial A} = I$.[I是单位矩阵] 因为矩阵的迹只有矩阵的主对角线元素.

定理3: 矩阵的迹满足以下特征:

  • Tr(A+B) = TrA + TrB
  • Tr(cA) = cTr(A)
  • Tr(AB) = Tr(BA)
  • Tr(A1A2…An) = Tr(AnA1…An-1)
  • $Tr(A^TB)=\sum_{i}\sum_{j}A_{ij}B_{ij}$
  • $Tr(A) = Tr(A^T)$

特征1和特征2表明了矩阵迹的线性特性;特征3表明矩阵迹运算中矩阵乘法具有交换性;特征4是特征3的扩展,表明了迹运算中矩阵的循环性;特征5表明了使用矩阵内积运算求矩阵迹的方法.

一般性内积Deal with Generalized Inner Product

定理4: 多变量实值函数$f(x)=Tr(A^Tx)$,它的偏导数为:$\frac{\partial f}{\partial x}=A$ (A,x可以是矩阵).

证明:根据迹运算的特征5,可以得到: $f(x)=Tr(A^Tx)=\sum_{i}\sum_{j}A_{ij}x_{ij}$ $\frac{\partial f}{\partial x_{ij}}=\frac{\partial \sum_i\sum_jA_{ij}x_{ij}}{\partial x_{ij}}=A_{ij}$

然后将各个元素的偏导数组成成矩阵形式,可以得到结果矩阵A.证毕.

例3. 对于向量a,x以及函数$f(x)=a^Tx$,

$\frac{\partial f}{\partial x^T}=\frac{\partial (a^Tx)}{\partial x^T}=\frac{\partial Tr(a^Tx)}{\partial x^T}=\frac{\partial Tr(xa^T)}{\partial x^T}=\frac{\partial Tr(ax^T)}{\partial x^T}=a^T$

上面这个例子充分说明了矩阵偏导数问题求解的处理方法.

定义矩阵微分 Define Matrix Differential

定义3. 矩阵微分:

矩阵微分定义

定理5. dTr(A)=Tr(dA).

证明:

$LHS=d(\sum_iA_{ii})=\sum_idA_{ii}$

$RHS=Tr(dA)=\sum_idA_{ii}=LHS$

矩阵微分已经定义好了,下面将矩阵导数和矩阵微分联系起来.实值标量微分和导数之间的联系:

$df=\frac{\partial f}{\partial x}dx$

目前为止,求导和微分处理的都是实值函数f以及矩阵变量x.$\frac{\partial f}{\partial x}$和dx都是矩阵形式.为了将上面等式成立,需要将右半部分运算结果是一个标量,处理方法是进行矩阵迹运算.

定理6. 对于实值函数f,以及任意大小的矩阵x,

$df = tr[(\frac{\partial f}{\partial x})^T dx]$

证明:

$LHS(Left-hand side)=df$

根据定义,

$LHS=\sum_{ij}\frac{\partial f}{\partial x_{ij}}dx_{ij}$.

$RHS=tr(\frac{\partial f}{\partial x}^T dx)=\sum_{ij}\frac{\partial f}{\partial x_{ij}}{ij}(dx){ij}=\sum_{ij}\frac{\partial f}{\partial x_{ij}}{ij}dx{ij}=\sum_{ij}\frac{\partial f}{\partial x_{ij}}{ij}dx{ij}$

定理6是矩阵微分和矩阵导数之间联系的桥梁.

矩阵微分性质

定理7. 矩阵微分:

  • d(cA) = cdA
  • d(A+B) = dA + dB
  • d(AB) = dA B + AdB

证明. 由矩阵微分的定义,性质1和性质2可以得到.详细证明性质3.对于运算结果的每个元素,如果LHS中的每个元素都和RHS中对应位置的元素相等,那么LHS=RHS,性质成立.对于矩阵中的第(ij)个元素:

$LHS_{ij} = d(\sum_kA_{ik}B_{kj})=\sum_kd(A_{ik}B_{kj})=\sum_k(dA_{ik}B_{kj} + A_{ik}dB_{kj})$

$RHS_{ij}=(dAB){ij}+(AdB){ij}=\sum_kdA_{ik}B_{kj} + \sum_kA_{ik}dB_{kj} = LHS_{ij}$

例4. 给定函数$f(x)=x^TAx$, 其中,A是方阵,x是列向量,可以得到:

$df=d(x^TAx)=dTr(x^TAx)=Tr[d(x^TAx)]=Tr[d(x^T)Ax+x^Td(Ax)]=Tr[d(x^T)Ax+x^TAdx+x^TdAx]=Tr[d(x^T)Ax+x^TAdx]=Tr[d(x^T)Ax]+Tr[x^TAdx]=Tr[x^TA^Tdx]+Tr[x^TAdx]=Tr[x^TA^Tx+x^TAdx]=Tr[(x^TA^T+x^TA)dx]$

所以, $\frac{\partial f}{\partial x}=(x^TA^T + x^TA)^T=Ax+A^Tx$

当A是对称矩阵时,可以简化成: $\frac{\partial f}{\partial x}=2Ax$

如果A是单位矩阵I,那么: $\frac{\partial (x^Tx)}{\partial x}=2x$

例5. 对于非奇异方阵X,$XX^{-1}=I$.两边同时做微分运算: $0=dI=d(XX^{-1})=Xd(X^{-1})+dXX^{-1}$. 那么, $d(X^{-1})=-X^{-1}dXX^{-1}$.

Schema of Handling Scalar Function实值函数处理方法

1.df=dTr[f]=Tr[df]

2.df=Tr[A^Tx]

3.$\frac{\partial f}{\partial x}=A$

其中,矩阵微分和矩阵迹的性质扮演者积极重要的角色.

Determinant 行列式

定理8. 方阵A:

  • $M_{ij}$是方阵A移除第i行第j列后(n-1)x(n-1)方阵的行列式值;
  • 第ij个余子式$C_{ij}=(-1)^{i+j}M_{ij}$.
  • 行列式A按照第i行展开,$det(A)=\sum_{j}A_{ij}C_{ij}$.
  • A的伴随矩阵定义为: $adj(A){ij}=(-1)^{i+j}M{ji}=C_{ji}$. $adj(A)=C^T$.
  • 对于非奇异矩阵A, $A^{-1}=\frac{adj(A)}{det(A)}=\frac{C^T}{det(A)}$.

行列式的导数.行列式是一个标量函数,上面介绍的定理都符合.将行列式A用第i行展开,可以得到: $\frac{\partial det(A)}{\partial A_{ij}}=\frac{\partial(\sum_jA_{ij}C_{ij})}{\partial A_{ij}}=C_{ij}$

将各个元素组合,可以得到: $\frac{\partial det(A)}{\partial A}=C=adj(A)^T$

如果A是非奇异矩阵, $\frac{\partial det(A)}{\partial A}=adj(A)^T=(det(A)A^{-1})^{T}=det(A)(A^{-1}^T)$.

利用定理6,可以得到微分: $ddet(A)=Tr[(\frac{\partial det(A)}{\partial A}=)^{T}dA]=Tr[(det(A)(A^{-1})^T)^TdA]=Tr[det(A)A^{-1}dA]$

在实际问题中,对数行列式更常见: $\frac{\partial lndet(A)}{\partial A}=\frac{1}{det(A)} \frac{\partial det(A)}{\partial A}=(A^{-1})^T$

微分形式: $d lndet(A)=Tr[A^{-1}dA]$

向量函数和向量变量 Vector Function and Vector Variable

在矩阵微分中存在一个令人烦恼的现象:当需要查找资料时,总是存在两种不同的资料,其中一种运算结果是另一种的转制.网上的资料并不一致,容易造成误导.

Wikipedia上Hessian矩阵[海森矩阵]和Jacobian矩阵[雅各比矩阵]定义如下:

Hessian,Jacobian矩阵定义

关于二阶导数:

  • 缩写$\frac{\partial^2f}{\partial x_2 \partial x_1}$,意思是$\frac{\partial}{\partial x_2}(\frac{\partial f}{\partial x_1})$ [先对x1求导,再对x2求导,和我们的常规正好相反]
  • Hessian矩阵可以看做先计算$\frac{\partial f}{\partial x}$,然后将$\frac{\partial f}{\partial x}$看做一个函数,计算向量到向量的导数.
您的支持就是我更新的最大动力!谢谢!