动手学深度学习——矩阵求导之矩阵的迹和微分

目录

一、矩阵的迹

1. 迹的定义

2. 迹的性质

二、微分与全微分

1. (全)微分的表达式

2. (全)微分的法则

三、 矩阵的微分

1. 矩阵微分的实质

2. 矩阵微分的意义

3. 矩阵微分的法则

4. 矩阵微分的常用公式

四、矩阵求导实例

1. 迹在微分中的应用

2. 利用微分求导


本篇博客总结自知乎文章:矩阵求导公式的数学推导(矩阵求导——进阶篇),需要详细推导过程可以查看原文学习。

文章主要介绍了矩阵迹的性质,并将矩阵微分引入到矩阵求导中。虽然在法则和公式中涉及到了矩阵变元的实矩阵函数,但是并不介绍如何求导实矩阵函数,只介绍矩阵变元的实值标量函数利用微分求导的过程(实矩阵函数的求导过程远比实值标量函数的求导过程复杂)。

一、矩阵的迹

1. 迹的定义

对于一个 n \times n方阵 \pmb A_{n\times n}

动手学深度学习——矩阵求导之矩阵的迹和微分_第1张图片

它的主对角线元素之和就叫做矩阵 \pmb A迹(trace),记作:

2. 迹的性质

2.1 标量的迹

因为标量可以视为 \large 1\times 1 的矩阵,所以对于一个标量 \large a ,它的迹等于它本身

\large a\textrm{=tr(}a)

2.2 转置的迹

因为转置并不改变主对角线元素位置,所以对于一个矩阵 \large A 的转置 \large A^{T} ,它的迹与原矩阵相等

\large \mathrm{tr}(\pmb A)=\mathrm{tr}(\pmb A^{T})

2.3 乘积的迹

矩阵 \large \large \pmb A\in R^{m\times n} 与矩阵 \large \pmb B^{T}\in R^{n\times m} 的乘积的迹,等于两个矩阵对应位置的元素相乘再相加,类似于向量内积的延伸:

动手学深度学习——矩阵求导之矩阵的迹和微分_第2张图片

2.4 迹的交换律

由上一性质可知,在两矩阵交换位置后,乘积的迹不会受到影响,仍然是对应位置元素相乘再相加,即满足交换律

\large \mathrm{tr(\pmb A\pmb B}^{T})=\mathrm{tr(\pmb B}^{T}\pmb A)

对于多个矩阵相乘,可以将其中一部分矩阵视为整体,然后使用交换律:

\large \mathrm{\pmb A_{m\times n} ,\pmb B_{n\times p},\pmb C_{p\times m}} 

\large \mathrm{tr(\pmb {ABC})=tr(\pmb C(\pmb {AB}))=tr((\pmb {BC})\pmb A)}

不仅如此,迹的矩阵交换不变性还可以和迹的矩阵转置不变性结合,得到如下转换过程:

\large \mathrm{\pmb A\in R^{m\times n},\pmb B^{\mathit{T}}\in R^{n\times m}}

\large \mathrm{tr(\pmb A\pmb B^{\mathit{T}})=tr(\pmb B^{\mathit{T}}\pmb A)=tr(\pmb A^{\mathit{T}}\pmb B)=tr(\pmb B\pmb A^{\mathit{T}})}

2.5 迹的线性法则

矩阵先相加再求迹,等于先求迹再相加:

\large \mathrm{tr(\pmb A+\pmb B)=\sum_{i=1}^{n} (a_{ii}+b_{ii})=\sum_{i=1}^{n} a_{ii}+\sum_{i=1}^{n}b_{ii}=tr(\pmb A)+tr(\pmb B)}

二、微分与全微分

1. (全)微分的表达式

高等数学中的一元函数的微分表达式多元函数全微分表达式如下:

函数类型

参数说明 表达式

普通一元函数

\large y=f(x) \large \mathrm{d}y=\mathrm{d}f(x)=f'(x)\mathrm{d}x

复合一元函数

\large y=f(u) \large \mathrm{d}y=\mathrm{d}f(u)=f'(u)\mathrm{d}u=f'(u)\mathrm{d}g(x)=f'(u)g'(x)\mathrm{d}x
\large u=f(x)

普通多元函数

\large z=f(x,y) \large \mathrm{d}z=\mathrm{d}f(x,y)=\frac{\partial z}{\partial x}\mathrm{d}x+\frac{\partial z}{\partial y}\mathrm{d}y

复合多元函数

\large z=f(u)

\large \mathrm{d}z=\mathrm{d}f(u)=f'(u)\mathrm{d}u=f'(u)(\frac{\partial u}{\partial x}\mathrm{d}x+\frac{\partial u}{\partial y}\mathrm{d}y)

\large =f'(u)\frac{\partial u}{\partial x}\mathrm{d}x+f'(u)\frac{\partial u}{\partial y}\mathrm{d}y

\large u=f(x,y)

2. (全)微分的法则

无论是一元函数的微分还是多元函数的全微分,都遵循以下四个法则

法则 参数说明 表达式
常数的微分 \large c为常数 \large \mathrm{d}c=0
\large \mathrm{d}(cx)=c\ \mathrm{d}x
线性(加减)法则 \large u=u(x),v=v(x) \large \mathrm{d}(u\pm v)=\mathrm{d}u\pm \mathrm{d}v
\large u=u(x,y),v=v(x,y)
乘积法则 \large u=u(x),v=v(x) \large \large \mathrm{d}(uv)=v\mathrm{d}(u)+u\mathrm{d}(v)
\large u=u(x,y),v=v(x,y)
商法则 \large \large u=u(x),v=v(x)\neq 0 \large \mathrm{d}(\frac{u}{v})=\frac{1}{v^2}(v\mathrm{d}(u)-u\mathrm{d}(v))

\large u=u(x,y),v=v(x,y)\neq 0

三、 矩阵的微分

1. 矩阵微分的实质

对于一个矩阵变元实矩阵函数,其内部的每一个元素就是一个矩阵变元实值标量函数

\large \pmb F(\pmb X)\in R^{p\times q} \large \pmb F_{p\times q}(\pmb X)=[f_{ij}(\pmb X)]^{p,q}_{i=1,j=1} \large \pmb X_{m\times n}=(x_{ij})^{m,n}_{i=1,j=1}
动手学深度学习——矩阵求导之矩阵的迹和微分_第3张图片
对其求微分就是对每个位置上的元素求全微分,排列布局不变
动手学深度学习——矩阵求导之矩阵的迹和微分_第4张图片

2. 矩阵微分的意义

矩阵变元实值标量函数,其全微分可以转化为如下迹的形式

动手学深度学习——矩阵求导之矩阵的迹和微分_第5张图片

  • 其中左边的矩阵就是对  的分子布局形式求导:

动手学深度学习——矩阵求导之矩阵的迹和微分_第6张图片

  • 而右边的矩阵就是  的全微分

动手学深度学习——矩阵求导之矩阵的迹和微分_第7张图片

所以矩阵变元的实值标量函数的全微分可以表示为:

动手学深度学习——矩阵求导之矩阵的迹和微分_第8张图片

3. 矩阵微分的法则

因此,我们想要求解一个矩阵变元的实值标量函数的导数,我们只需要把该函数转化成上面的形式。而转化的过程可以通过下面矩阵微分的四个法则实现:

法则 参数说明 表达式
常数矩阵的微分 常数矩阵 \large \pmb A  \large \mathrm{d}\pmb A_{m\times n}=\mathbf{\pmb 0}_{m\times n}
线性法则 常数 \large c_{1},c_{2} \large \mathrm{d}(c_{1}\pmb F(\pmb X)+c_{2}\pmb G(\pmb X))=c_{1}\mathrm{d}\pmb F(\pmb X)+c_{2}\mathrm{d}\pmb G(\pmb X)
乘积法则 \large \pmb F_{p\times q}(\pmb X) \large \mathrm{d}(\pmb F(\pmb X)\pmb G(\pmb X))=\mathrm{d}(\pmb F(\pmb X))\pmb G(\pmb X)+\pmb F(\pmb X)\mathrm{d}(\pmb G(\pmb X))
\large \pmb G_{q\times s}(\pmb X)
转置法则 \large \pmb F_{p\times q}(\pmb X) \large \mathrm{d}\pmb F^{T}_{p\times q}(\pmb X)=(\mathrm{d}\pmb F_{p\times q}(\pmb X))^{T}

4. 矩阵微分的常用公式

对于转化过程中经常出现的矩阵形式,我们可以记住下面三类常用公式来简化推导步骤,这些公式也是由矩阵的微分四法则结合矩阵的迹的性质得来:

公式名称 参数说明 表达式
夹饼层 常数矩阵 \large \pmb A_{p\times m},\pmb B_{n\times q}  \large \mathrm{d}(\pmb{AXB})=\pmb A\mathrm{d}(\pmb X)\pmb B
将 \large \pmb X_{m\times n} 替换为矩阵函数  \large \mathrm{d}(\pmb A\pmb F(\pmb X)\pmb B)=\pmb A\mathrm{d}(\pmb F(\pmb X))\pmb B
行列式 \large \pmb X_{n\times n}
将 \large \pmb X_{n\times n} 替换为矩阵函数

逆矩阵 \large \pmb X_{n\times n} \large \mathrm{d}(\pmb X^{-1})=-\pmb X^{-1}\mathrm{d}(\pmb X)\pmb X^{-1}

将 \large \pmb X_{n\times n} 替换为矩阵函数

\large \mathrm{d}( \pmb F(\pmb X)^{-1})=- \pmb F(\pmb X)^{-1}\mathrm{d}( \pmb F(\pmb X) ) \pmb F(\pmb X)^{-1}

四、矩阵求导实例

1. 迹在微分中的应用

实值标量函数 \large f(\pmb X) ,由于它的结果是标量,所以有:

\large \mathrm{tr}(f(\pmb X))=f(\pmb X)

上式结合微分的线性法则(相加再微分=微分再相加):

若把实值标量函数 \large f(\pmb X) 视为实矩阵函数 \large \pmb F(\pmb X) 的

\large f(\pmb X)=\mathrm{tr}(\pmb F_{p\times p}(\pmb X))

 则有:

\large {\color{Red} \mathrm{d}(\mathrm{tr}\pmb F_{p\times p}(\pmb X))}=\mathrm{d}(\sum_{i=1}^{p}f_{ii}(\pmb X))=\sum_{i=1}^{p}\mathrm{d}(f_{ii}(\pmb X))={\color{Red} \mathrm{tr}(\mathrm{d}\pmb F_{p\times p}(\pmb X))}

2. 利用微分求导

举例说明如何利用矩阵微分,推导出矩阵求导的表达式:

\large \frac{\partial (\pmb a^{T}\pmb X\pmb X^{T}\pmb b)}{\partial \pmb X}=\pmb a\pmb b^{T}\pmb X+\pmb b\pmb a^{T}\pmb X

结合矩阵的迹的性质矩阵微分的四个法则六个常用公式,推导过程如下:

迹在微分的应用 \large \mathrm{d}f(\pmb X)=\mathrm{d}(\mathrm{tr}f(\pmb X))=\mathrm{tr}(\mathrm{d}f(\pmb X))
\large \mathrm{d}(\pmb a^{T}\pmb X\pmb X^{T}\pmb b)=\mathrm{tr}(\mathrm{d}(\pmb a^{T}\pmb X\pmb X^{T}\pmb b))
夹饼层公式 \large \mathrm{d}(\pmb{AXB})=\pmb A\mathrm{d}(\pmb X)\pmb B
\large \mathrm{tr}(\mathrm{d}(\pmb a^{T}\pmb X\pmb X^{T}\pmb b))=\mathrm{tr}(\pmb a^{T}\mathrm{d}(\pmb X\pmb X^{T})\pmb b)
微分乘积法则 \large \mathrm{d}(\pmb F(\pmb X)\pmb G(\pmb X))=\mathrm{d}(\pmb F(\pmb X))\pmb G(\pmb X)+\pmb F(\pmb X)\mathrm{d}(\pmb G(\pmb X))
\large \mathrm{tr}(\pmb a^{T}\mathrm{d}(\pmb X\pmb X^{T})\pmb b)=\mathrm{tr}(\pmb a^{T}(\ \mathrm{d}(\pmb X)\pmb X^{T} +\pmb X\mathrm{d}(\pmb X^{T})\ )\pmb b)
迹的线性法则 \large \large \mathrm{tr(\pmb A+\pmb B)=tr(\pmb A)+tr(\pmb B)}
\large \mathrm{tr}(\pmb a^{T}(\ \mathrm{d}(\pmb X)\pmb X^{T} +\pmb X\mathrm{d}(\pmb X^{T})\ )\pmb b)=\mathrm{tr}(\pmb a^{T}\mathrm{d}(\pmb X)\pmb X^{T}\pmb b)+\mathrm{tr}(\pmb a^{T}\pmb X\mathrm{d}(\pmb X^{T})\pmb b)
微分转置法则 \large \mathrm{d}\pmb F^{T}_{p\times q}(\pmb X)=(\mathrm{d}\pmb F_{p\times q}(\pmb X))^{T}
\large \mathrm{tr}(\pmb a^{T}\mathrm{d}(\pmb X)\pmb X^{T}\pmb b)+\mathrm{tr}(\pmb a^{T}\pmb X{\color{Red} \mathrm{d}(\pmb X^{T})}\pmb b)=\mathrm{tr}(\pmb a^{T}\mathrm{d}(\pmb X)\pmb X^{T}\pmb b)+\mathrm{tr}(\pmb a^{T}\pmb X{\color{Red} \mathrm{d}(\pmb X)^{T}}\pmb b)
迹的交换与转置

\large \mathrm{tr(\pmb {ABC})=tr(\pmb C(\pmb {AB}))=tr((\pmb {BC})\pmb A)}

\large \mathrm{tr(\pmb A\pmb B^{\mathit{T}})=tr(\pmb B^{\mathit{T}}\pmb A)=tr(\pmb A^{\mathit{T}}\pmb B)=tr(\pmb B\pmb A^{\mathit{T}})}

\large \mathrm{tr}(\pmb a^{T}\mathrm{d}(\pmb X){\color{Red} \pmb X^{T}\pmb b})+\mathrm{tr}(\pmb a^{T}\pmb X\mathrm{d}(\pmb X)^{T}{\color{Red} \pmb b})=\mathrm{tr}({\color{Red} \pmb X^{T}\pmb b}\ \pmb a^{T}\mathrm{d}(\pmb X))+\mathrm{tr}({\color{Red} \pmb b}\ \pmb a^{T}\pmb X\mathrm{d}(\pmb X)^{T})

迹的线性法则 \large \large \mathrm{tr(\pmb A+\pmb B)=tr(\pmb A)+tr(\pmb B)}
\large \mathrm{tr}(\pmb X^{T}\pmb b\pmb a^{T}\mathrm{d}\pmb X)+\mathrm{tr}(\pmb X^{T}\pmb a\pmb b^{T}\mathrm{d}\pmb X)=\mathrm{tr}((\pmb X^{T}\pmb b\pmb a^{T}+\pmb X^{T}\pmb a\pmb b^{T})\mathrm{d}\pmb X)

 最终得到该式的微分

结合公式

动手学深度学习——矩阵求导之矩阵的迹和微分_第9张图片

可得导数

动手学深度学习——矩阵求导之矩阵的迹和微分_第10张图片

你可能感兴趣的:(深度学习笔记,深度学习,矩阵,机器学习,线性代数)