个人写作笔记,如有问题,请不吝赐教!
目录如下:

矩阵之间的关系

相抵:A,BCm×n,AB    UCm×m,VCn×n,s.t.B=UAV\mathbf{A},\mathbf{B}\in \mathbb{C}^{m\times n},\mathbf{A}\backsimeq\mathbf{B} \iff \exist \mathbf{U}\in \mathbb{C}^{m\times m}, \mathbf{V}\in \mathbb{C}^{n\times n},s.t.\quad \mathbf{ B=UAV}
相似、合同变换都是一种相抵关系。
正规矩阵:ACn×n,AAT=ATA\mathbf{A}\in \mathbb{C}^{n\times n},\mathbf{AA}^{\mathrm{T}}=\mathbf{A}^{\mathrm{T}}\mathbf{A},实正规矩阵即为实数域
单纯矩阵:每个特征值的代数重复度(特征值的重数)和几何重复度(特征值对应的解向量的个数)相等的矩阵,可以相似对角化,又称为简单矩阵。

若当标准形

矩阵多项式

不变因子:史密斯标准形对角线非零元素(对λ\lambda矩阵进行初等变换得到的标准形,可看作是特征值)
kk阶行列式因子:λ\lambda矩阵中全部kk阶子式的最大公因式,例如,一阶行列式因子就是矩阵中全部元素的最大公因子,二阶行列式因子就是全面二阶子式中的最大公因子,以此类推)
初等因子:组成不变因子的全部含λ\lambda项,即形如(λλj)eij,eij0(\lambda-\lambda_j)^{e_{ij}},e_{ij}\ne 0的式子

若当标准化

若当标准形:

[λ11000λ21000λn11000λn]\begin{bmatrix} \lambda_1&1&0&\cdots&0\\ 0&\lambda_2&1&\cdots&0\\ \vdots&\vdots&\ddots&\ddots&\vdots\\ 0&0&\cdots&\lambda_{n-1}&1\\ 0&0&0&\cdots&\lambda_n\\ \end{bmatrix}

求取若当标准形:
1.求出全部的初等因子,保证因子次数之和等于矩阵的秩
2.根据每个初等因子,写出对应的若当块,例如初等因子(λλi)mi(\lambda-\lambda_i)^{m_i}对应的若当块是:

Ji=[λi1λi1λi]\mathbf{J_i}=\begin{bmatrix} \lambda_i&1&& \\ &\lambda_i&\ddots&\\ &&\ddots&1\\ &&&\lambda_i\\ \end{bmatrix}

3.根据这些若当块,组成若当标准形:

J=[J1J2Jr]\mathbf{J}=\begin{bmatrix} \mathbf{J_1}&&&\\ &\mathbf{J_2}&&\\ &&\ddots&\\ &&&\mathbf{J_r}\\ \end{bmatrix}

凯莱-哈密顿定理

方阵满足其特征多项式,即f(A)=0f(\mathbf{A})=0
可用于计算方阵的n次幂

矩阵分析应用

矩阵函数

1.对于单纯矩阵
找到一个变换矩阵Q\mathbf{Q},使得矩阵对角化为B\mathbf{B},即:

B=Diag[f(λ1),f(λ2),,f(λn)]=Q1AQ\mathbf{B}=Diag[f(\lambda_1),f(\lambda_2),\cdots,f(\lambda_n)]=\mathbf{Q}^{-1}\mathbf{AQ}

矩阵函数定义为:

Q1f(A)Q=Diag[f(λ1),f(λ2),,f(λn)]    f(A)=Q1Diag[f(λ1),f(λ2),,f(λn)]Q\begin{align*} &\mathbf{Q}^{-1}f(\mathbf{A})\mathbf{Q}=Diag[f(\lambda_1),f(\lambda_2),\cdots,f(\lambda_n)]\\ &\implies f(\mathbf{A})=\mathbf{Q}^{-1}Diag[f(\lambda_1),f(\lambda_2),\cdots,f(\lambda_n)]\mathbf{Q} \end{align*}

2.对于亏损矩阵(不能保证代数和几何重复度相等,但是可以保证所有特征向量线性无关的矩阵)
找到一个变换矩阵T\mathbf{T},使得矩阵若当标准化为J\mathbf{J},即:

J=Diag[f(J1(λ1)),f(J2(λ2)),,f(Jr(λr))]=T1AT\mathbf{J}=Diag[f(\mathbf{J_1}(\lambda_1)),f(\mathbf{J_2}(\lambda_2)),\cdots,f(\mathbf{J_r}(\lambda_r))]=\mathbf{T}^{-1}\mathbf{AT}

矩阵函数定义为:

T1f(A)T=Diag[f(J1(λ1)),f(J2(λ2)),,f(Jr(λr))]    f(A)=T1Diag[f(J1(λ1)),f(J2(λ2)),,f(Jr(λr))]T\begin{align*} &\mathbf{T}^{-1}f(\mathbf{A})\mathbf{T}=Diag[f(\mathbf{J_1}(\lambda_1)),f(\mathbf{J_2}(\lambda_2)),\cdots,f(\mathbf{J_r}(\lambda_r))]\\ &\implies f(\mathbf{A})=\mathbf{T}^{-1}Diag[f(\mathbf{J_1}(\lambda_1)),f(\mathbf{J_2}(\lambda_2)),\cdots,f(\mathbf{J_r}(\lambda_r))]\mathbf{T} \end{align*}

矩阵的微积分

定义

矩阵函数对纯量求导

设矩阵 ACm×n\mathbf{A}\in\mathbb{C}^{m\times n},矩阵函数 F(A):Cm×nCp×q\mathbf{F}(\mathbf{A}):\mathbb{C}^{m\times n}\longmapsto \mathbb{C}^{p\times q},其全微分满足以下式子:

dF(A)daij=[df11daijdf12daijdf1qdaijdf21daijdf22daijdf2qdaijdfp1daijdfp2daijdfpqdaij]\frac{\mathrm{d}\mathbf{F}(\mathbf{A})}{\mathrm{d}a_{ij}}=\begin{bmatrix} \frac{\mathrm{d}f_{11}}{\mathrm{d}a_{ij}}&\frac{\mathrm{d}f_{12}}{\mathrm{d}a_{ij}}&\cdots&\frac{\mathrm{d}f_{1q}}{\mathrm{d}a_{ij}}\\\\ \frac{\mathrm{d}f_{21}}{\mathrm{d}a_{ij}}&\frac{\mathrm{d}f_{22}}{\mathrm{d}a_{ij}}&\cdots&\frac{\mathrm{d}f_{2q}}{\mathrm{d}a_{ij}}\\\\ \vdots&\vdots&\quad&\vdots\\\\ \frac{\mathrm{d}f_{p1}}{\mathrm{d}a_{ij}}&\frac{\mathrm{d}f_{p2}}{\mathrm{d}a_{ij}}&\cdots&\frac{\mathrm{d}f_{pq}}{\mathrm{d}a_{ij}} \end{bmatrix}

由此可知,矩阵对纯量的导数与纯量对纯量的导数形式是完全一致的,也有相应的线性性和乘积求导法则,以及嵌套链式运算(不能嵌套函数矩阵)法则,即:

d(k1A±k2B)dx=k1dAdx±k2dBdxd(AB)dx=dAdxB+AdBdxdA(y)dx=dAdydydx\begin{aligned} \frac{\mathrm{d}(k_1\mathbf{A}\pm k_2\mathbf{B})}{\mathrm{d}x}&=k_1\frac{\mathrm{d}\mathbf{A}}{\mathrm{d}x}\pm k_2\frac{\mathrm{d}\mathbf{B}}{\mathrm{d}x}\\\\ \frac{\mathrm{d}(\mathbf{A}\mathbf{B})}{\mathrm{d}x}&=\frac{\mathrm{d}\mathbf{A}}{\mathrm{d}x}\mathbf{B}+\mathbf{A}\frac{\mathrm{d}\mathbf{B}}{\mathrm{d}x}\\\\ \frac{\mathrm{d}\mathbf{A}(y)}{\mathrm{d}x}&=\frac{\mathrm{d}\mathbf{A}}{\mathrm{d}y}\frac{\mathrm{d}y}{\mathrm{d}x} \end{aligned}

纯量对矩阵的导数

与矩阵对纯量求导不同,纯量对矩阵(向量)的导数与形式设定有关。设列向量 XCn×1\mathbf{X}\in\mathbb{C}^{n\times1},对于一个向量值函数f(X):Cn×1Cf(\mathbf{X}):\mathbb{C}^{n\times1}\longmapsto \mathbb{C},其全微分满足以下式子:

df(X)=i=1nfxidxi\mathrm{d}f(\mathbf{X})=\sum\limits_{i=1}^n\frac{\partial f}{\partial x_i}\mathrm{d}x_i

将式子改写成矩阵的形式,则有:

df(X)=[fx1fx2fxq][dx1dx2dxq]=[dx1dx2dxq][fx1fx2fxq]\begin{align*} \mathrm{d}f(\mathbf{X})=\begin{bmatrix} \frac{\partial f}{\partial x_1}&\frac{\partial f}{\partial x_2}&\cdots&\frac{\partial f}{\partial x_q} \end{bmatrix} \begin{bmatrix} \mathrm{d}x_1\\\\ \mathrm{d}x_2\\\\ \vdots\\\\ \mathrm{d}x_q \end{bmatrix}\\ \newcommand{\arraystretch}{1.5} =\begin{bmatrix} \mathrm{d}x_1&\mathrm{d}x_2&\cdots&\mathrm{d}x_q \end{bmatrix} \begin{bmatrix} \frac{\partial f}{\partial x_1}\\ \frac{\partial f}{\partial x_2}\\ \cdots\\ \frac{\partial f}{\partial x_q} \end{bmatrix} \end{align*}

矩阵导数有多种表示形式,常见的如分子求导式或者分母求导式,本文选取的是分子求导式,即梯度形状与梯度向量相同,其人为定义如下:

df(X)dX=[fx1fx2fxq]dX=[dx1dx2dxq]\newcommand{\arraystretch}{1.5} \frac{\mathrm{d}f(\mathbf{X})}{\mathrm{d}\mathbf{X}}= \begin{bmatrix} \frac{\partial f}{\partial x_1}\\ \frac{\partial f}{\partial x_2}\\ \vdots\\ \frac{\partial f}{\partial x_q} \end{bmatrix}\quad\mathrm{d}\mathbf{X}=\begin{bmatrix} \mathrm{d}x_1&\mathrm{d}x_2&\cdots&\mathrm{d}x_q \end{bmatrix}

ACm×n\mathbf{A}\in\mathbb{C}^{m\times n}X,YCn×1\mathbf{X}, \mathbf{Y}\in\mathbb{C}^{n\times1},则必有:

{(dYTdXT)T=dYdX(dYdXT)T=dYTdXdAXdXT=A\left\{ \begin{align*} \Big(\frac{\mathrm{d}\mathbf{Y}^{\mathrm{T}}}{\mathrm{d}\mathbf{X^\mathrm{T}}}\Big)^{\mathrm{T}}&=\frac{\mathrm{d}\mathbf{Y}}{\mathrm{d}\mathbf{X}}\\\\ \Big(\frac{\mathrm{d}\mathbf{Y}}{\mathrm{d}\mathbf{X^\mathrm{T}}}\Big)^{\mathrm{T}}&=\frac{\mathrm{d}\mathbf{Y}^{\mathrm{T}}}{\mathrm{d}\mathbf{X}}\\\\ \frac{\mathrm{d}\mathbf{AX}}{\mathrm{d}\mathbf{X^\mathrm{T}}}&=\mathbf{A} \end{align*} \right.

纯量对矩阵的求导满足简单的运算法则:

d[f(X)±g(X)]dX=df(X)dX±dg(X)dXdf(X)g(X)dX=df(X)dXg(X)+f(X)dg(X)dX\begin{aligned} \frac{\mathrm{d}[f(\mathbf{X})\pm g(\mathbf{X})]}{\mathrm{d}\mathbf{X}}&=\frac{\mathrm{d}f(\mathbf{X})}{\mathrm{d}\mathbf{X}}\pm\frac{\mathrm{d}g(\mathbf{X})}{\mathrm{d}\mathbf{X}}\\\\ \frac{\mathrm{d}f(\mathbf{X})g(\mathbf{X})}{\mathrm{d}\mathbf{X}}&=\frac{\mathrm{d}f(\mathbf{X})}{\mathrm{d}\mathbf{X}}g(\mathbf{X})+f(\mathbf{X})\frac{\mathrm{d}g(\mathbf{X})}{\mathrm{d}\mathbf{X}} \end{aligned}

预备知识

为了引入最复杂的矩阵对矩阵的导数,此处补充两个先验的知识:矩阵直积运算和拉直运算。

矩阵直积

矩阵直积是不同空间矩阵的变换运算,引入克罗内克记号(矩阵直积):\otimes
若设 ARm×p,BRn×p,XRq×1\mathbf{A}\in R^{m\times p},\mathbf{B}\in R^{n\times p},\mathbf{X}\in R^{q\times 1},记:

AB[a11Ba12Ba1pBa21Ba22Ba2pBam1Bam2BampB]mn×pq\mathbf{A}\otimes \mathbf{B}\triangleq\begin{bmatrix} a_{11}\mathbf{B}&a_{12}\mathbf{B}&\cdots&a_{1p}\mathbf{B}\\ a_{21}\mathbf{B}&a_{22}\mathbf{B}&\cdots&a_{2p}\mathbf{B}\\ \vdots&\vdots&&\vdots\\ a_{m1}\mathbf{B}&a_{m2}\mathbf{B}&\cdots&a_{mp}\mathbf{B}\\ \end{bmatrix}_{mn\times pq}

矩阵拉直

矩阵拉直是将矩阵矢量化的运算,得到的结果是一个向量。在求导计算中,存在两种常见的中间项,为了简化表达形式,引入矩阵拉直的运算符,记ACm×n\mathbf A\in\mathbb{C}^{m\times n}为一复值矩阵,定义如下式的运算为矩阵拉直:

A=[a11a12a1na21a22a2nam1am2amn]V(A)[a11a12a1na21a22amn]\begin{aligned} \mathbf{A}&=\begin{bmatrix} a_{11}&a_{12}&\cdots&a_{1n}\\ a_{21}&a_{22}&\cdots&a_{2n}\\ \vdots&\vdots&&\vdots\\ a_{m1}&a_{m2}&\cdots&a_{mn}\\ \end{bmatrix}\\ \mathcal{V}(\mathbf{A})&\triangleq\begin{bmatrix} a_{11}\\ a_{12}\\ \vdots\\ a_{1n}\\ a_{21}\\ a_{22}\\ \vdots\\ a_{mn}\\ \end{bmatrix} \end{aligned}

即将矩阵A\mathbf{A}按行拼接得到一个行向量,再将该向量转置,因此拉直运算输出是一个列向量!!

对于行向量XT\mathbf{X}^\mathrm{T},拉直等价于转置,即:

V(XT)=X\mathcal{V}(\mathbf{X}^\mathrm{T})=\mathbf{X}

重要公式1

矩阵拉直基本上比较抽象,直接运算意义不大,但是有两个公式较为重要,其中一个是多矩阵拉直转为单矩阵拉直公式:

V(XYZ)=(XZT)V(Y)\mathcal{V}(\mathbf{XYZ})=\mathbf{(X\otimes Z^\mathrm{T})\mathcal{V}(Y)}

该公式的证明并不复杂,直接运算可知,设矩阵:

X=[x11x12a1nx21x22x2nxm1xm2xmn]Cm×nY=[β1Tβ2T βnT ]Cn×pZ=[γ1γ2γq]Cp×q\begin{aligned} \mathbf{X}&=\begin{bmatrix} x_{11}&x_{12}&\cdots&a_{1n}\\ x_{21}&x_{22}&\cdots&x_{2n}\\ \vdots&\vdots&&\vdots\\ x_{m1}&x_{m2}&\cdots&x_{mn}\\ \end{bmatrix}\in\mathbb{C}^{m\times n} \\ \mathbf{Y}&=\begin{bmatrix} \boldsymbol{\beta}_1^\mathrm{T}\\ \boldsymbol{\beta}_2^\mathrm{T}\\\ \vdots\\ \boldsymbol{\beta}_n^\mathrm{T}\ \end{bmatrix}\in\mathbb{C}^{n\times p}\\ \mathbf{Z}&=\begin{bmatrix} \boldsymbol{\gamma}_1&\boldsymbol{\gamma}_2&\cdots&\boldsymbol{\gamma}_q \end{bmatrix}\in\mathbb{C}^{p\times q} \end{aligned}

需要注意的是βiT\boldsymbol{\beta}_i^\mathrm{T}表示的是矩阵Y\mathbf{Y}的行向量,而不是列向量的转置。计算上式,则有:

XYZ=[i=1na1iβiT i=1na2iβiT i=1namiβiT ][γ1γ2γq]=[i=1na1iβiTγ1i=1na1iβiTγ2i=1na1iβiTγqi=1na2iβiTγ1i=1na2iβiTγ2i=1na2iβiTγqi=1namiβiTγ1i=1namiβiTγ2i=1namiβiTγq]    V(XYZ)=[i=1na1iβiTγ1i=1na1iβiTγ2i=1na1iβiTγqi=1najiβiTγki=1namiβiTγq]\begin{aligned} \mathbf{XYZ}&=\begin{bmatrix} \sum\limits_{i=1}^{n}a_{1i}\boldsymbol{\beta}_i^\mathrm{T}\\\ \sum\limits_{i=1}^{n}a_{2i}\boldsymbol{\beta}_i^\mathrm{T}\\\ \vdots\\ \sum\limits_{i=1}^{n}a_{mi}\boldsymbol{\beta}_i^\mathrm{T}\\\ \end{bmatrix}\begin{bmatrix} \boldsymbol{\gamma}_1&\boldsymbol{\gamma}_2&\cdots&\boldsymbol{\gamma}_q \end{bmatrix}\\ &=\begin{bmatrix} \sum\limits_{i=1}^{n}a_{1i}\boldsymbol{\beta}_i^\mathrm{T}\boldsymbol{\gamma}_1&\sum\limits_{i=1}^{n}a_{1i}\boldsymbol{\beta}_i^\mathrm{T}\boldsymbol{\gamma}_2&\cdots&\sum\limits_{i=1}^{n}a_{1i}\boldsymbol{\beta}_i^\mathrm{T}\boldsymbol{\gamma}_q\\ \vdots&\vdots&&\vdots\\ \sum\limits_{i=1}^{n}a_{2i}\boldsymbol{\beta}_i^\mathrm{T}\boldsymbol{\gamma}_1&\sum\limits_{i=1}^{n}a_{2i}\boldsymbol{\beta}_i^\mathrm{T}\boldsymbol{\gamma}_2&\cdots&\sum\limits_{i=1}^{n}a_{2i}\boldsymbol{\beta}_i^\mathrm{T}\boldsymbol{\gamma}_q\\ \sum\limits_{i=1}^{n}a_{mi}\boldsymbol{\beta}_i^\mathrm{T}\boldsymbol{\gamma}_1&\sum\limits_{i=1}^{n}a_{mi}\boldsymbol{\beta}_i^\mathrm{T}\boldsymbol{\gamma}_2&\cdots&\sum\limits_{i=1}^{n}a_{mi}\boldsymbol{\beta}_i^\mathrm{T}\boldsymbol{\gamma}_q\\ \end{bmatrix}\\ \implies\mathcal{V}(\mathbf{XYZ})&=\begin{bmatrix} \sum\limits_{i=1}^{n}a_{1i}\boldsymbol{\beta}_i^\mathrm{T}\boldsymbol{\gamma}_1\\ \sum\limits_{i=1}^{n}a_{1i}\boldsymbol{\beta}_i^\mathrm{T}\boldsymbol{\gamma}_2\\ \vdots\\ \sum\limits_{i=1}^{n}a_{1i}\boldsymbol{\beta}_i^\mathrm{T}\boldsymbol{\gamma}_q\\ \vdots\\ \sum\limits_{i=1}^{n}a_{ji}\boldsymbol{\beta}_i^\mathrm{T}\boldsymbol{\gamma}_k\\ \vdots\\ \sum\limits_{i=1}^{n}a_{mi}\boldsymbol{\beta}_i^\mathrm{T}\boldsymbol{\gamma}_q\\ \end{bmatrix} \end{aligned}

而由于:

XZT=[a11γ1Ta11γ1Ta11γ1Ta21γ1Ta21γ1Ta21γ1Tam1γ1Tam1γ1Tam1γ1T](XZT)V(Y)=[a11γ1Ta11γ1Ta11γ1Ta21γ1Ta21γ1Ta21γ1Tam1γ1Tam1γ1Tam1γ1T][β1β2βn]=[i=1na1iγ1Tβii=1na1iγ1Tβii=1na1iγqTβii=1najiγkTβii=1namiγqTβi]\begin{aligned} \mathbf{X\otimes Z^\mathrm{T}}&= \begin{bmatrix} a_{11}\boldsymbol{\gamma}_1^\mathrm{T}&a_{11}\boldsymbol{\gamma}_1^\mathrm{T}&\cdots&a_{11}\boldsymbol{\gamma}_1^\mathrm{T}\\ a_{21}\boldsymbol{\gamma}_1^\mathrm{T}&a_{21}\boldsymbol{\gamma}_1^\mathrm{T}&\cdots&a_{21}\boldsymbol{\gamma}_1^\mathrm{T}\\ \vdots&\vdots&&\vdots\\ a_{m1}\boldsymbol{\gamma}_1^\mathrm{T}&a_{m1}\boldsymbol{\gamma}_1^\mathrm{T}&\cdots&a_{m1}\boldsymbol{\gamma}_1^\mathrm{T}\\ \end{bmatrix}\\ (\mathbf{X\otimes Z^\mathrm{T}})\mathcal{V}(\mathbf{Y})&=\begin{bmatrix} a_{11}\boldsymbol{\gamma}_1^\mathrm{T}&a_{11}\boldsymbol{\gamma}_1^\mathrm{T}&\cdots&a_{11}\boldsymbol{\gamma}_1^\mathrm{T}\\ a_{21}\boldsymbol{\gamma}_1^\mathrm{T}&a_{21}\boldsymbol{\gamma}_1^\mathrm{T}&\cdots&a_{21}\boldsymbol{\gamma}_1^\mathrm{T}\\ \vdots&\vdots&&\vdots\\ a_{m1}\boldsymbol{\gamma}_1^\mathrm{T}&a_{m1}\boldsymbol{\gamma}_1^\mathrm{T}&\cdots&a_{m1}\boldsymbol{\gamma}_1^\mathrm{T}\\ \end{bmatrix}\begin{bmatrix} \boldsymbol{\beta}_1\\ \boldsymbol{\beta}_2\\ \vdots\\ \boldsymbol{\beta}_n \end{bmatrix}\\ &=\begin{bmatrix} \sum\limits_{i=1}^na_{1i}\boldsymbol{\gamma}_1^\mathrm{T}\boldsymbol{\beta}_i\\ \sum\limits_{i=1}^na_{1i}\boldsymbol{\gamma}_1^\mathrm{T}\boldsymbol{\beta}_i\\ \vdots\\ \sum\limits_{i=1}^na_{1i}\boldsymbol{\gamma}_q^\mathrm{T}\boldsymbol{\beta}_i\\ \vdots\\ \sum\limits_{i=1}^na_{ji}\boldsymbol{\gamma}_k^\mathrm{T}\boldsymbol{\beta}_i\\ \vdots\\ \sum\limits_{i=1}^na_{mi}\boldsymbol{\gamma}_q^\mathrm{T}\boldsymbol{\beta}_i\\ \end{bmatrix} \end{aligned}

又由于βiTγk\boldsymbol{\beta}_i^\mathrm{T}\boldsymbol{\gamma}_k为一纯量,因此对转置运算没有影响,有:

βiTγk=γkTβi\boldsymbol{\beta}_i^\mathrm{T}\boldsymbol{\gamma}_k=\boldsymbol{\gamma}_k^\mathrm{T}\boldsymbol{\beta}_i

上式左右项即可验证是相等的,因此原式得证。

重要公式2

在矩阵对矩阵的导数中,会出现维数为原始维数平方的稀疏矩阵,设ACm×l,BCl×n\mathbf{A}\in\mathbb{C}^{m\times l},\mathbf{B}\in\mathbb{C}^{l\times n}例如:

dAdA=dATdAT=[100010001000000000000000000000000000100010001000000000000000000000000000100010001]\frac{\mathrm{d}\mathbf{A}}{\mathrm{d}\mathbf{A}}=\frac{\mathrm{d}\mathbf{A}^\mathrm{T} }{\mathrm{d}\mathbf{A}^\mathrm{T}}=\begin{bmatrix} 1&0&0&|&0&1&0&|&0&0&1\\ 0&0&0&|&0&0&0&|&0&0&0\\ 0&0&0&|&0&0&0&|&0&0&0\\ \hline 0&0&0&|&0&0&0&|&0&0&0\\ 1&0&0&|&0&1&0&|&0&0&1\\ 0&0&0&|&0&0&0&|&0&0&0\\ \hline 0&0&0&|&0&0&0&|&0&0&0\\ 0&0&0&|&0&0&0&|&0&0&0\\ 1&0&0&|&0&1&0&|&0&0&1\\ \end{bmatrix}

使用矩阵拉直表示法,如下形式的计算式得以化简:

dAdA(BIl)=V(Im)VT(BT)\frac{\mathrm{d}\mathbf{A}}{\mathrm{d}\mathbf{A}}(\mathbf{B}\otimes \mathbf{I}_l)=\mathcal{V}(\mathbf{I}_m)\mathcal{V^\mathrm{T}}(\mathbf{B}^\mathrm{T})

式中,VT(BT)\mathcal{V^\mathrm{T}}(\mathbf{B}^\mathrm{T})表示按矩阵B\mathbf{B}拉直得到的行向量

重要公式3

设:

B=[β1Tβ2TβlT]\mathbf{B}=\begin{bmatrix} \boldsymbol{\beta}_1^\mathrm{T}\\ \boldsymbol{\beta}_2^\mathrm{T}\\ \vdots\\ \boldsymbol{\beta}_l^\mathrm{T}\\ \end{bmatrix}

另一种导数运算中存在的中间项为:

dAdAT=dATdA=[100000000000100000000000100010000000000010000000000010001000000000001000000000001]\frac{\mathrm{d}\mathbf{A}}{\mathrm{d}\mathbf{A}^\mathrm{T}}=\frac{\mathrm{d}\mathbf{A}^\mathrm{T}}{\mathrm{d}\mathbf{A}}=\begin{bmatrix} 1&0&0&|&0&0&0&|&0&0&0\\ 0&0&0&|&1&0&0&|&0&0&0\\ 0&0&0&|&0&0&0&|&1&0&0\\ \hline 0&1&0&|&0&0&0&|&0&0&0\\ 0&0&0&|&0&1&0&|&0&0&0\\ 0&0&0&|&0&0&0&|&0&1&0\\ \hline 0&0&1&|&0&0&0&|&0&0&0\\ 0&0&0&|&0&0&1&|&0&0&0\\ 0&0&0&|&0&0&0&|&0&0&1\\ \end{bmatrix}

则该项对应的中间项可以化简为:

dAdAT(BIm)=[Imβ1TImβ2TImβlT]Wm(B)\begin{aligned} \frac{\mathrm{d}\mathbf{A}}{\mathrm{d}\mathbf{A}^\mathrm{T}}(\mathbf{B}\otimes \mathbf{I}_m)=\begin{bmatrix} \mathbf{I}_m\otimes\boldsymbol{\beta}_1^\mathrm{T}\\ \mathbf{I}_m\otimes\boldsymbol{\beta}_2^\mathrm{T}\\ \vdots\\ \mathbf{I}_m\otimes\boldsymbol{\beta}_l^\mathrm{T}\\ \end{bmatrix}\triangleq\mathbf{W}_m(\mathbf{B}) \end{aligned}

其中βiT\boldsymbol{\beta}_i^\mathrm{T}是矩阵B\mathbf{B}的各个行向量,则可知上述运算有以下变形形式:

dATdA(BIm)=Wm(B)(BTIm)dATdA=WmT(B)\begin{aligned} \frac{\mathrm{d}\mathbf{A}^\mathrm{T}}{\mathrm{d}\mathbf{A}}(\mathbf{B}\otimes \mathbf{I}_m)=\mathbf{W}_m(\mathbf{B})\\ (\mathbf{B}^\mathrm{T}\otimes \mathbf{I}_m)\frac{\mathrm{d}\mathbf{A}^\mathrm{T}}{\mathrm{d}\mathbf{A}}=\mathbf{W}_m^\mathrm{T}(\mathbf{B})\\ \end{aligned}

矩阵对矩阵的导数

下面包含矩阵之间、向量之间的导数,直接计算十分繁杂,通过以下几步公式可以简化运算。
FCp×q,ACm×n\exist \mathbf{F}\in C^{p\times q},\mathbf{A}\in C^{m\times n},有:

dFdA=[f11Af12Af1nAf21Af22Af2nAfn1Afn2AfmnA]FddA\frac{\mathrm{d}\mathbf{F}}{\mathrm{d}\mathbf{A}}=\begin{bmatrix} \frac{\partial f_{11}}{\partial \mathbf{A}}&\frac{\partial f_{12}}{\partial \mathbf{A}}&\cdots&\frac{\partial f_{1n}}{\partial \mathbf{A}}\\\\ \frac{\partial f_{21}}{\partial \mathbf{A}}&\frac{\partial f_{22}}{\partial \mathbf{A}}&\cdots&\frac{\partial f_{2n}}{\partial \mathbf{A}}\\\\ \vdots&\vdots&&\vdots\\\\ \frac{\partial f_{n1}}{\partial \mathbf{A}}&\frac{\partial f_{n2}}{\partial \mathbf{A}}&\cdots&\frac{\partial f_{mn}}{\partial \mathbf{A}} \end{bmatrix}\triangleq\mathbf{F}\otimes\frac{\mathrm{d}}{\mathrm{d}\mathbf{A}}

尤其注意,矩阵导数是分子各项对分母求导,这是矩阵导数的规定,而切忌不能是以下的形式:

dFdA[Fa11Fa12Fa1nFa21Fa22Fa2nFan1Fan2Famn]\frac{\mathrm{d}\mathbf{F}}{\mathrm{d}\mathbf{A}}\triangleq \begin{bmatrix} \frac{\partial \mathbf{F}}{\partial a_{11}}&\frac{\partial \mathbf{F}}{\partial a_{12}}&\cdots&\frac{\partial \mathbf{F}}{\partial a_{1n}}\\\\ \frac{\partial \mathbf{F}}{\partial a_{21}}&\frac{\partial \mathbf{F}}{\partial a_{22}}&\cdots&\frac{\partial \mathbf{F}}{\partial a_{2n}}\\\\ \vdots&\vdots&&\vdots\\\\ \frac{\partial \mathbf{F}}{\partial a_{n1}}&\frac{\partial \mathbf{F}}{\partial a_{n2}}&\cdots&\frac{\partial \mathbf{F}}{\partial a_{mn}} \end{bmatrix}

可见导数的形状为dFdACmp×nq\frac{\mathrm{d}\mathbf{F}}{\mathrm{d}\mathbf{A}}\in\mathbb{C}^{mp\times nq},相当于原函数形状对微分变量的直积。简记为:

dFdAFddAAF\begin{align*} \frac{\mathrm{d}\mathbf{F}}{\mathrm{d}\mathbf{A}}\triangleq\mathbf{F}\otimes\frac{\mathrm{d}}{\mathrm{d}\mathbf{A}}\triangleq\nabla_{\mathbf{A}}\mathbf{F} \end{align*}

当原函数退化为纯量时,矩阵直积退化为向量梯度场:

dfdAfddAAf\begin{align*} \frac{\mathrm{d}f}{\mathrm{d}\mathbf{A}}\triangleq f\otimes\frac{\mathrm{d}}{\mathrm{d}\mathbf{A}}\triangleq\nabla_{\mathbf{A}}f \end{align*}

这是一个重要结论,可以用于验证导数求解的正确性。

求导运算法则

矩阵对矩阵求导

设矩阵 ACl×m\mathbf{A}\in\mathbb{C}^{l\times m}BCm×n\mathbf{B}\in\mathbb{C}^{m\times n}WCp×q\mathbf{W}\in\mathbb{C}^{p\times q},同形状的矩阵线性运算之间的导数具有线性性,公式不再赘述。

对于乘积情况的导数,有:

dABdWp×q=dAdW(BIq)+(AIp)dBdW\frac{\mathrm{d}\mathbf{AB}}{\mathrm{d}\mathbf{W}_{p\times q}}=\frac{\mathrm{d}\mathbf{A}}{\mathrm{d}\mathbf{W}}\big(\mathbf{B}\otimes\mathbf{I}_q\big)+\big(\mathbf{A}\otimes\mathbf{I}_p\big)\frac{\mathrm{d}\mathbf{B}}{\mathrm{d}\mathbf{W}}

从公式可以发现,乘积求导法则大体上与纯量函数求导法相似,需要留意的是矩阵直积的脚标,这是因为微分变量W\mathbf{W}自身在直积时产生的形状拓展。简记口诀为:“交叉相乘”。

矩阵对向量求导

特别地,当微分变量是列向量时,设 ACm×n\mathbf{A}\in\mathbb{C}^{m\times n}BCn×p\mathbf{B}\in\mathbb{C}^{n\times p}XCq×1\mathbf{X}\in\mathbb{C}^{q\times1}f(X)f(\mathbf{X}) 是一个纯量函数,可以得出以下的求导结论,有:

{dfXBdX=BdfXdX+(fXInIq)dBdXdABdX=dAdXB+(AIq)dBdX\begin{align*} \left\{ \begin{aligned} &\frac{\mathrm{d}f_{\mathbf{X}}\mathbf{B}}{\mathrm{d}\mathbf{X}}=\mathbf{B}\otimes\frac{\mathrm{d}f_{\mathbf{X}}}{\mathrm{d}\mathbf{X}}+\big(f_{\mathbf{X}}\mathbf{I}_n\otimes\mathbf{I}_q\big)\frac{\mathrm{d}\mathbf{B}}{\mathrm{d}\mathbf{X}}\\\\ &\frac{\mathrm{d}\mathbf{A}\mathbf{B}}{\mathrm{d}\mathbf{X}}=\frac{\mathrm{d}\mathbf{A}}{\mathrm{d}\mathbf{X}}\mathbf{B}+\big(\mathbf{A}\otimes\mathbf{I}_q\big)\frac{\mathrm{d}\mathbf{B}}{\mathrm{d}\mathbf{X}} \end{aligned} \right. \end{align*}

式中,qq是列向量的维度。
特别地,当向量 YTC1×q\mathbf{Y}^\mathrm{T}\in\mathbb{C}^{1\times q}行向量时,将会有以下形式的计算公式:

{dfYBdYT=fYdBdYT+dfYIndYT(BIq)dABdYT=dAdYT(BIq)+AdBdYT\begin{align*} \left\{ \begin{aligned} &\frac{\mathrm{d}f_{\mathbf{Y}}\mathbf{B}}{\mathrm{d}\mathbf{Y^\mathrm{T}}}=f_{\mathbf{Y}}\frac{\mathrm{d}\mathbf{B}}{\mathrm{d}\mathbf{Y^\mathrm{T}}}+\frac{\mathrm{d}f_{\mathbf{Y}}\mathbf{I}_n}{\mathrm{d}\mathbf{Y^\mathrm{T}}}\big(\mathbf{B}\otimes\mathbf{I}_q\big)\\\\ &\frac{\mathrm{d}\mathbf{A}\mathbf{B}}{\mathrm{d}\mathbf{Y^\mathrm{T}}}=\frac{\mathrm{d}\mathbf{A}}{\mathrm{d}\mathbf{Y^\mathrm{T}}}\big(\mathbf{B}\otimes\mathbf{I}_q\big)+\mathbf{A}\frac{\mathrm{d}\mathbf{B}}{\mathrm{d}\mathbf{Y^\mathrm{T}}} \end{aligned} \right. \end{align*}

向量对向量求导

特别地,当函数也退化为向量时,直积部分退化为拉直运算。设 XCm×1\mathbf{X}\in\mathbb{C}^{m\times 1}Y,ZCn×1\mathbf{Y,Z}\in\mathbb{C}^{n\times 1}f(X)f(\mathbf{X}) 是一个纯量函数,有以下更为简洁的公式:

{d(Y±Z)dX=dYdX±dZdXd(fXZ)dX=ZdfXdX+fXV(dZdXT)d(YTZ)dX=dYTdXZ+dZTdXY\begin{align*} \left\{ \begin{aligned} &\frac{\mathrm{d}(\mathbf{Y}\pm\mathbf{Z})}{\mathrm{d}\mathbf{X}}=\frac{\mathrm{d}\mathbf{Y}}{\mathrm{d}\mathbf{X}}\pm\frac{\mathrm{d}\mathbf{Z}}{\mathrm{d}\mathbf{X}}\\\\ &\frac{\mathrm{d}(f_{\mathbf{X}}\mathbf{Z})}{\mathrm{d}\mathbf{X}}=\mathbf{Z}\otimes\frac{\mathrm{d}f_{\mathbf{X}}}{\mathrm{d}\mathbf{X}}+f_{\mathbf{X}}\mathcal{V}\big(\frac{\mathrm{d}\mathbf{Z}}{\mathrm{d}\mathbf{X}^\mathrm{T}}\big)\\\\ &\frac{\mathrm{d}(\mathbf{Y}^{\mathrm{T}}\mathbf{Z})}{\mathrm{d}\mathbf{X}}=\frac{\mathrm{d}\mathbf{Y}^{\mathrm{T}}}{\mathrm{d}\mathbf{X}}\mathbf{Z}+\frac{\mathrm{d}\mathbf{Z}^{\mathrm{T}}}{\mathrm{d}\mathbf{X}}\mathbf{Y} \end{aligned} \right. \end{align*}

矩阵的逆求导

有了以上线性、乘积求导公式后,可以得到矩阵逆的导数,设有可逆矩阵 ACn×n\bm{A}\in\mathbb{C}^{n\times n},微分变量为一矩阵 WCp×q\bm{W}\in\mathbb{C}^{p\times q},若已知当前导数 dAdW\displaystyle\frac{\mathrm{d}\mathbf{A}}{\mathrm{d}\mathbf{W}},则可以得到微分变量对逆的导数是:

dA1dW=(A1Ip)dAdW(A1Iq)\frac{\mathrm{d}\mathbf{A}^{-1}}{\mathrm{d}\mathbf{W}}=-\big(\mathbf{A}^{-1}\otimes\mathbf{I}_p\big)\frac{\mathrm{d}\mathbf{A}}{\mathrm{d}\mathbf{W}}\big(\mathbf{A}^{-1}\otimes\mathbf{I}_q\big)

其推导过程较为简易,根据以下条件即可推导得到:

{A1A=IndA1AdW=dA1dW(AIq)+(A1Ip)dAdW=0\left\{ \begin{aligned} &\mathbf{A}^{-1}\mathbf{A}=\mathbf{I}_n\\\\ &\frac{\mathrm{d}\mathbf{A}^{-1}\mathbf{A}}{\mathrm{d}\mathbf{W}}=\frac{\mathrm{d}\mathbf{A}^{-1}}{\mathrm{d}\mathbf{W}}\big(\mathbf{A}\otimes\mathbf{I}_q\big)+\big(\mathbf{A}^{-1}\otimes\mathbf{I}_p\big)\frac{\mathrm{d}\mathbf{A}}{\mathrm{d}\mathbf{W}}=\mathbf{0} \end{aligned} \right.

矩阵的行列式求导

设矩阵B\mathbf{B}的代数余子式为:

Aij=(1)i+jMijA_{ij}=(-1)^{i+j}M_{ij}

其中MijM_{ij}是矩阵不含第ii行和第jj列的算术余子式,1im,1jn1\le i\le m,1\le j\le n。矩阵的行列式可以写作:

B=i=1mj=1mbijAij|\mathbf{B}|=\sum\limits_{i=1}^m\sum\limits_{j=1}^mb_{ij}A_{ij}

求上式的导数可知,正好为原矩阵B\mathbf{B}的伴随矩阵,即:

dBdB=B\frac{\mathrm{d}|\mathbf{B}|}{\mathrm{d}\mathbf{B}}=\mathbf{B}^*

一个重要公式

若设XCn×1\mathbf{X}\in\mathbb{C}^{n\times1}是n维列向量,YCm×1\mathbf{Y}\in\mathbb{C}^{m\times1}是m维列向量,ACm×n\mathbf{A}\in\mathbb{C}^{m\times n}n×mn\times m维矩阵,则有:

XTAY=i=1nj=1maijxiyj\mathbf{X}^{\mathrm{T}}\mathbf{AY}=\sum\limits^n_{i=1}\sum\limits^m_{j=1}a_{ij}x_iy_j