矩阵求导 | 原理、公式、技巧与场景(篇 1)

注:本文来自 zhihu 长躯鬼侠 “矩阵求导” 相关文章重排。
如有内容异常,请看原文。


矩阵求导术(上)

长躯鬼侠 发布于 2017-01-06 21:57

矩阵求导技术在统计学、控制论、机器学习等领域有着广泛的应用。鉴于部分资料或言之不详,或繁乱无绪,本文旨在进行科普,分为上下两篇。上篇主要介绍标量对矩阵的求导术,下篇则探讨矩阵对矩阵的求导术。

本文使用小写字母 x x x 表示标量粗体小写字母 x \mathbf{x} x 表示(列)向量大写字母 X X X 表示矩阵

一、定义与初步探讨

1.1 标量对矩阵的导数定义

首先探讨定义。标量 f f f 对矩阵 X X X 的导数定义为
∂ f ∂ X = [ ∂ f ∂ X i j ] , \frac{\partial f}{\partial X} = \left[\frac{\partial f}{\partial X_{ij}}\right], Xf=[Xijf],
f f f X X X 逐元素求导后,排成与 X X X 尺寸相同的矩阵。然而,这一定义在实际计算中存在诸多不便。一方面,对于较为复杂的函数,逐元素求导往往难以实现;另一方面,从哲学角度而言,逐元素求导破坏了矩阵的整体性。试想,为何要将 f f f 视作矩阵 X X X 的函数,而非各元素 X i j X_{ij} Xij 的函数?答案在于矩阵运算更为简洁。因此,在求导过程中不宜拆解矩阵,而应寻找一种从整体出发的算法。

1.2 导数与微分的联系

回顾一元微积分中,导数(标量对标量的导数)与微分存在联系:
d f = f ′ ( x ) d x . df = f'(x)dx. df=f(x)dx.
在多元微积分中,梯度(标量对向量的导数)也与微分相关:
d f = ∑ i = 1 n ∂ f ∂ x i d x i = ∂ f ∂ x T d x , df = \sum_{i=1}^n \frac{\partial f}{\partial x_i}dx_i = \frac{\partial f}{\partial \mathbf{x}}^T d\mathbf{x}, df=i=1nxifdxi=xfTdx,
其中第一个等号为全微分公式,第二个等号表达了梯度与微分的联系:全微分 d f df df 是梯度向量 ∂ f ∂ x ( n × 1 ) \frac{\partial f}{\partial \mathbf{x}}(n\times 1) xf(n×1) 与微分向量 d x ( n × 1 ) d\mathbf{x}(n\times 1) dx(n×1) 的内积。受此启发,我们将矩阵导数与微分建立联系:
d f = ∑ i = 1 m ∑ j = 1 n ∂ f ∂ X i j d X i j = tr ( ∂ f ∂ X T d X ) , df = \sum_{i=1}^m \sum_{j=1}^n \frac{\partial f}{\partial X_{ij}}dX_{ij} = \text{tr}\left(\frac{\partial f}{\partial X}^T dX\right), df=i=1mj=1nXijfdXij=tr(XfTdX),
其中 tr \text{tr} tr 表示迹(trace),即方阵对角线元素之和。迹满足以下性质:对于尺寸相同的矩阵 A A A B B B
tr ( A T B ) = ∑ i , j A i j B i j , \text{tr}(A^TB) = \sum_{i,j}A_{ij}B_{ij}, tr(ATB)=i,jAijBij,
tr ( A T B ) \text{tr}(A^TB) tr(ATB) 是矩阵 A A A B B B 的内积。与梯度类似,第一个等号为全微分公式,第二个等号表达了矩阵导数与微分的联系:全微分 d f df df 是导数 ∂ f ∂ X ( m × n ) \frac{\partial f}{\partial X}(m\times n) Xf(m×n) 与微分矩阵 d X ( m × n ) dX(m\times n) dX(m×n) 的内积。

二、矩阵微分运算法则

回顾一元函数求导过程,例如对于复杂函数 f = log ⁡ ( 2 + sin ⁡ x ) e x f = \log(2+\sin x)e^{\sqrt{x}} f=log(2+sinx)ex ,通常不是从定义出发求极限,而是先建立初等函数求导、四则运算及复合等法则,再运用这些法则求导。因此,我们建立常用的矩阵微分运算法则如下:

2.1 基本运算法则

加减法
d ( X ± Y ) = d X ± d Y , d(X\pm Y) = dX \pm dY, d(X±Y)=dX±dY,
矩阵乘法
d ( X Y ) = ( d X ) Y + X d Y , d(XY) = (dX)Y + X dY, d(XY)=(dX)Y+XdY,
转置
d ( X T ) = ( d X ) T , d(X^T) = (dX)^T, d(XT)=(dX)T,

d tr ( X ) = tr ( d X ) . d\text{tr}(X) = \text{tr}(dX). dtr(X)=tr(dX).

2.2 特殊运算法则


d X − 1 = − X − 1 d X X − 1 . dX^{-1} = -X^{-1}dX X^{-1}. dX1=X1dXX1.
此式可通过在 X X − 1 = I XX^{-1}=I XX1=I 两侧求微分来证明。

行列式
d ∣ X ∣ = tr ( X ∗ d X ) , d|X| = \text{tr}(X^{*}dX), dX=tr(XdX),
其中 X ∗ X^{*} X 表示 X X X 的伴随矩阵。在 X X X 可逆时,可写作
d ∣ X ∣ = ∣ X ∣ tr ( X − 1 d X ) . d|X| = |X|\text{tr}(X^{-1}dX). dX=Xtr(X1dX).
此式可用拉普拉斯展开来证明,详见张贤达《矩阵分析与应用》第 279 页。

逐元素乘法
d ( X ⊙ Y ) = d X ⊙ Y + X ⊙ d Y , d(X\odot Y) = dX\odot Y + X\odot dY, d(XY)=dXY+XdY,
其中 ⊙ \odot 表示尺寸相同的矩阵 X X X Y Y Y 逐元素相乘。

逐元素函数
d σ ( X ) = σ ′ ( X ) ⊙ d X , d\sigma(X) = \sigma'(X)\odot dX, dσ(X)=σ(X)dX,
其中 σ ( X ) = [ σ ( X i j ) ] \sigma(X) = \left[\sigma(X_{ij})\right] σ(X)=[σ(Xij)] 是逐元素标量函数运算, σ ′ ( X ) = [ σ ′ ( X i j ) ] \sigma'(X)=[\sigma'(X_{ij})] σ(X)=[σ(Xij)] 是逐元素求导数。例如,若 X = [ X 11 X 12 X 21 X 22 ] X=\left[\begin{matrix}X_{11} & X_{12} \\ X_{21} & X_{22}\end{matrix}\right] X=[X11X21X12X22],则
d sin ⁡ ( X ) = [ cos ⁡ X 11 d X 11 cos ⁡ X 12 d X 12 cos ⁡ X 21 d X 21 cos ⁡ X 22 d X 22 ] = cos ⁡ ( X ) ⊙ d X . d \sin(X) = \left[\begin{matrix}\cos X_{11} dX_{11} & \cos X_{12} d X_{12}\\ \cos X_{21} d X_{21}& \cos X_{22} dX_{22}\end{matrix}\right] = \cos(X)\odot dX. dsin(X)=[cosX11dX11cosX21dX21cosX12dX12cosX22dX22]=cos(X)dX.

三、迹技巧与求导方法

利用矩阵导数与微分的联系
d f = tr ( ∂ f ∂ X T d X ) , df = \text{tr}\left(\frac{\partial f}{\partial X}^T dX\right), df=tr(XfTdX),
在求出左侧的微分 d f df df 后,如何将其写成右侧的形式并得到导数?这需要借助一些迹技巧(trace trick):

3.1 迹技巧

标量套上迹
a = tr ( a ) . a = \text{tr}(a). a=tr(a).

转置
t r ( A T ) = t r ( A ) . \mathrm{tr}(A^T) = \mathrm{tr}(A). tr(AT)=tr(A).

线性
tr ( A ± B ) = tr ( A ) ± tr ( B ) . \text{tr}(A\pm B) = \text{tr}(A)\pm \text{tr}(B). tr(A±B)=tr(A)±tr(B).

矩阵乘法交换
tr ( A B ) = tr ( B A ) , \text{tr}(AB) = \text{tr}(BA), tr(AB)=tr(BA),
其中 A A A B T B^T BT 尺寸相同。两侧均等于 ∑ i , j A i j B j i \sum_{i,j}A_{ij}B_{ji} i,jAijBji

矩阵乘法/逐元素乘法交换
tr ( A T ( B ⊙ C ) ) = tr ( ( A ⊙ B ) T C ) , \text{tr}(A^T(B\odot C)) = \text{tr}((A\odot B)^TC), tr(AT(BC))=tr((AB)TC),
其中 A A A B B B C C C 尺寸相同。两侧均等于 ∑ i , j A i j B i j C i j \sum_{i,j}A_{ij}B_{ij}C_{ij} i,jAijBijCij

观察可得,若标量函数 f f f 是矩阵 X X X 经加减乘法、逆、行列式、逐元素函数等运算构成,则使用相应的运算法则对 f f f 求微分,再利用迹技巧给 d f df df 套上迹并将其他项交换至 d X dX dX 左侧,对照导数与微分的联系
d f = tr ( ∂ f ∂ X T d X ) , df = \text{tr}\left(\frac{\partial f}{\partial X}^T dX\right), df=tr(XfTdX),
即可求得导数。

特别地,若矩阵退化为向量,对照导数与微分的联系
d f = ∂ f ∂ x T d x , df = \frac{\partial f}{\partial \mathbf{x}}^T d\mathbf{x}, df=xfTdx,
即可求得导数。

四、复合问题与复合法则

在建立法则的最后,讨论复合问题。假设已求得 ∂ f ∂ Y \frac{\partial f}{\partial Y} Yf,而 Y Y Y X X X 的函数,如何求 ∂ f ∂ X \frac{\partial f}{\partial X} Xf?在微积分中,标量求导的链式法则为
∂ f ∂ x = ∂ f ∂ y ∂ y ∂ x , \frac{\partial f}{\partial x} = \frac{\partial f}{\partial y} \frac{\partial y}{\partial x}, xf=yfxy,
但在此处不能随意沿用标量的链式法则,因为矩阵对矩阵的导数 ∂ Y ∂ X \frac{\partial Y}{\partial X} XY 截至目前仍未定义。因此,我们从微分入手建立复合法则:先写出
d f = tr ( ∂ f ∂ Y T d Y ) , df = \text{tr}\left(\frac{\partial f}{\partial Y}^T dY\right), df=tr(YfTdY),
再将 d Y dY dY d X dX dX 表示并代入,利用迹技巧将其他项交换至 d X dX dX 左侧,即可得到 ∂ f ∂ X \frac{\partial f}{\partial X} Xf

最常见的情形是 Y = A X B Y = AXB Y=AXB,此时

d f = tr ( ∂ f ∂ Y T d Y ) = tr ( ∂ f ∂ Y T A d X B ) = tr ( B ∂ f ∂ Y T A d X ) = tr ( ( A T ∂ f ∂ Y B T ) T d X ) , \begin{align*} df &= \text{tr}\left(\frac{\partial f}{\partial Y}^T dY\right) \\&=\text{tr}\left(\frac{\partial f}{\partial Y}^T AdXB\right) \\ &= \text{tr}\left(B\frac{\partial f}{\partial Y}^T AdX\right) \\&= \text{tr}\left((A^T\frac{\partial f}{\partial Y}B^T)^T dX\right), \end{align*} df=tr(YfTdY)=tr(YfTAdXB)=tr(BYfTAdX)=tr((ATYfBT)TdX),

从而可得
∂ f ∂ X = A T ∂ f ∂ Y B T . \frac{\partial f}{\partial X}=A^T\frac{\partial f}{\partial Y}B^T. Xf=ATYfBT.
注意此处 d Y = ( d A ) X B + A d X B + A X d B = A d X B dY = (dA)XB + AdXB + AXdB = AdXB dY=(dA)XB+AdXB+AXdB=AdXB,由于 A A A B B B 是常量, d A = 0 dA=0 dA=0 d B = 0 dB=0 dB=0,且我们利用矩阵乘法交换的迹技巧交换了 ∂ f ∂ Y T A d X \frac{\partial f}{\partial Y}^T AdX YfTAdX B B B

五、算例演示

接下来通过一些算例进行演示。特别提醒,需依据已建立的运算法则进行计算,不能随意套用微积分中标量导数的结论,例如认为 A X AX AX X X X 的导数为 A A A,这是没有根据且意义不明的。

例 1:线性变换的导数

问题 f = a T X b f = \mathbf{a}^T X\mathbf{b} f=aTXb,求 ∂ f ∂ X \frac{\partial f}{\partial X} Xf。其中 a \mathbf{a} a m × 1 m\times 1 m×1 列向量, X X X m × n m\times n m×n 矩阵, b \mathbf{b} b n × 1 n\times 1 n×1 列向量, f f f 是标量。

:首先利用矩阵乘法法则求微分,
d f = d a T X b + a T d X b + a T X d b = a T d X b , df = d\mathbf{a}^TX\mathbf{b}+\mathbf{a}^TdX\mathbf{b}+\mathbf{a}^TXd\mathbf{b} = \mathbf{a}^TdX\mathbf{b}, df=daTXb+aTdXb+aTXdb=aTdXb,
注意到 a \mathbf{a} a b \mathbf{b} b 是常量, d a = 0 d\mathbf{a} = \mathbf{0} da=0 d b = 0 d\mathbf{b} = \mathbf{0} db=0。由于 d f df df 是标量,其迹等于自身,即 d f = tr ( d f ) df = \text{tr}(df) df=tr(df),套上迹并进行矩阵乘法交换:
d f = tr ( a T d X b ) = tr ( b a T d X ) = tr ( ( a b T ) T d X ) , \begin{align*} df &= \text{tr}(\mathbf{a}^TdX\mathbf{b}) \\ &= \text{tr}(\mathbf{b}\mathbf{a}^TdX) \\ &= \text{tr}((\mathbf{a}\mathbf{b}^T)^TdX), \end{align*} df=tr(aTdXb)=tr(baTdX)=tr((abT)TdX),

此处我们根据 tr ( A B ) = tr ( B A ) \text{tr}(AB) = \text{tr}(BA) tr(AB)=tr(BA) 交换了 a T d X \mathbf{a}^TdX aTdX b \mathbf{b} b。对照导数与微分的联系 d f = tr ( ∂ f ∂ X T d X ) df = \text{tr}\left(\frac{\partial f}{\partial X}^T dX\right) df=tr(XfTdX),可得
∂ f ∂ X = a b T . \frac{\partial f}{\partial X} = \mathbf{a}\mathbf{b}^T. Xf=abT.

注意:不能使用 ∂ f ∂ X = a T ∂ X ∂ X b = ? \frac{\partial f}{\partial X} =\mathbf{a}^T \frac{\partial X}{\partial X}\mathbf{b}=? Xf=aTXXb=?,因为导数与矩阵乘法的交换是不合法的运算(而微分是合法的)。有些资料在计算矩阵导数时,会略过求微分这一步,这是逻辑上无法解释的。

例 2:逐元素函数的导数

问题 f = a T exp ⁡ ( X b ) f = \mathbf{a}^T \exp(X\mathbf{b}) f=aTexp(Xb),求 ∂ f ∂ X \frac{\partial f}{\partial X} Xf。其中 a \mathbf{a} a m × 1 m\times 1 m×1 列向量, X X X m × n m\times n m×n 矩阵, b \mathbf{b} b n × 1 n\times 1 n×1 列向量, exp ⁡ \exp exp 表示逐元素求指数, f f f 是标量。

:首先利用矩阵乘法、逐元素函数法则求微分:
d f = a T ( exp ⁡ ( X b ) ⊙ ( d X b ) ) , df = \mathbf{a}^T(\exp(X\mathbf{b})\odot (dX\mathbf{b})), df=aT(exp(Xb)(dXb)),
再套上迹并进行交换:

d f = tr ( a T ( exp ⁡ ( X b ) ⊙ ( d X b ) ) ) = tr ( ( a ⊙ exp ⁡ ( X b ) ) T d X b ) = tr ( b ( a ⊙ exp ⁡ ( X b ) ) T d X ) = tr ( ( ( a ⊙ exp ⁡ ( X b ) ) b T ) T d X ) , \begin{align*} df &= \text{tr}\left( \mathbf{a}^T(\exp(X\mathbf{b})\odot (dX\mathbf{b}))\right) \\ &= \text{tr}\left((\mathbf{a}\odot \exp(X\mathbf{b}))^TdX \mathbf{b}\right) \\ &= \text{tr}\left(\mathbf{b}(\mathbf{a}\odot \exp(X\mathbf{b}))^TdX\right) \\ &= \text{tr}\left(((\mathbf{a}\odot \exp(X\mathbf{b}))\mathbf{b}^T)^TdX\right), \end{align*} df=tr(aT(exp(Xb)(dXb)))=tr((aexp(Xb))TdXb)=tr(b(aexp(Xb))TdX)=tr(((aexp(Xb))bT)TdX),

此处我们先根据 tr ( A T ( B ⊙ C ) ) = tr ( ( A ⊙ B ) T C ) \text{tr}(A^T(B\odot C)) = \text{tr}((A\odot B)^TC) tr(AT(BC))=tr((AB)TC) 交换了 a \mathbf{a} a exp ⁡ ( X b ) \exp(X\mathbf{b}) exp(Xb) d X b dX\mathbf{b} dXb,再根据 tr ( A B ) = tr ( B A ) \text{tr}(AB) = \text{tr}(BA) tr(AB)=tr(BA) 交换了 ( a ⊙ exp ⁡ ( X b ) ) T d X (\mathbf{a}\odot \exp(X\mathbf{b}))^TdX (aexp(Xb))TdX b \mathbf{b} b。对照导数与微分的联系 d f = tr ( ∂ f ∂ X T d X ) df = \text{tr}\left(\frac{\partial f}{\partial X}^T dX\right) df=tr(XfTdX),可得
∂ f ∂ X = ( a ⊙ exp ⁡ ( X b ) ) b T . \frac{\partial f}{\partial X} = (\mathbf{a}\odot \exp(X\mathbf{b}))\mathbf{b}^T. Xf=(aexp(Xb))bT.

例 3:复合函数的导数

问题 f = tr ( Y T M Y ) f = \text{tr}(Y^T M Y) f=tr(YTMY) Y = σ ( W X ) Y = \sigma(WX) Y=σ(WX),求 ∂ f ∂ X \frac{\partial f}{\partial X} Xf。其中 W W W l × m l\times m l×m 矩阵, X X X m × n m\times n m×n 矩阵, Y Y Y l × n l\times n l×n 矩阵, M M M l × l l\times l l×l 对称矩阵, σ \sigma σ 是逐元素函数, f f f 是标量。

:首先求 ∂ f ∂ Y \frac{\partial f}{\partial Y} Yf,求微分,利用矩阵乘法、转置法则:
d f = tr ( ( d Y ) T M Y ) + tr ( Y T M d Y ) = tr ( Y T M T d Y ) + tr ( Y T M d Y ) = tr ( Y T ( M + M T ) d Y ) , \begin{align*} df &= \text{tr}((dY)^TMY) + \text{tr}(Y^TMdY) \\ &= \text{tr}(Y^TM^TdY) + \text{tr}(Y^TMdY) \\ &= \text{tr}(Y^T(M+M^T)dY), \end{align*} df=tr((dY)TMY)+tr(YTMdY)=tr(YTMTdY)+tr(YTMdY)=tr(YT(M+MT)dY),
对照导数与微分的联系,可得
∂ f ∂ Y = ( M + M T ) Y = 2 M Y , \frac{\partial f}{\partial Y}=(M+M^T)Y = 2MY, Yf=(M+MT)Y=2MY,
注意此处 M M M 是对称矩阵。为求 ∂ f ∂ X \frac{\partial f}{\partial X} Xf,写出
d f = tr ( ∂ f ∂ Y T d Y ) , df = \text{tr}\left(\frac{\partial f}{\partial Y}^T dY\right), df=tr(YfTdY),
再将 d Y dY dY d X dX dX 表示并代入,利用矩阵乘法/逐元素乘法交换:
d f = tr ( ∂ f ∂ Y T ( σ ′ ( W X ) ⊙ ( W d X ) ) ) = tr ( ( ∂ f ∂ Y ⊙ σ ′ ( W X ) ) T W d X ) , \begin{align*} df = \text{tr}\left(\frac{\partial f}{\partial Y}^T (\sigma'(WX)\odot (WdX))\right) \\= \text{tr}\left(\left(\frac{\partial f}{\partial Y} \odot \sigma'(WX)\right)^T W dX\right), \end{align*} df=tr(YfT(σ(WX)(WdX)))=tr((Yfσ(WX))TWdX),
对照导数与微分的联系,可得
∂ f ∂ X = W T ( ∂ f ∂ Y ⊙ σ ′ ( W X ) ) = W T ( ( 2 M σ ( W X ) ) ⊙ σ ′ ( W X ) ) . \begin{align*} \frac{\partial f}{\partial X}&=W^T \left(\frac{\partial f}{\partial Y}\odot \sigma'(WX)\right)\\&=W^T((2M\sigma(WX))\odot\sigma'(WX)). \end{align*} Xf=WT(Yfσ(WX))=WT((2Mσ(WX))σ(WX)).

例 4:线性回归中的最小二乘估计

问题 l = ∣ X w − y ∣ 2 l = |X\mathbf{w}- \mathbf{y}|^2 l=Xwy2,求 w \mathbf{w} w 的最小二乘估计,即求 ∂ l ∂ w \frac{\partial l}{\partial \mathbf{w}} wl 的零点。其中 y \mathbf{y} y m × 1 m\times 1 m×1 列向量, X X X m × n m\times n m×n 矩阵, w \mathbf{w} w n × 1 n\times 1 n×1 列向量, l l l 是标量。

:这是标量对向量的导数,但可将向量视为矩阵的特例。首先将向量模平方改写成向量与自身的内积:
l = ( X w − y ) T ( X w − y ) , l = (X\mathbf{w}- \mathbf{y})^T(X\mathbf{w}- \mathbf{y}), l=(Xwy)T(Xwy),
求微分,利用矩阵乘法、转置等法则:
d l = ( X d w ) T ( X w − y ) + ( X w − y ) T ( X d w ) = 2 ( X w − y ) T X d w , \begin{align*} dl &= (Xd\mathbf{w})^T(X\mathbf{w}-\mathbf{y})+(X\mathbf{w}-\mathbf{y})^T(Xd\mathbf{w}) \\&= 2(X\mathbf{w}-\mathbf{y})^TXd\mathbf{w}, \end{align*} dl=(Xdw)T(Xwy)+(Xwy)T(Xdw)=2(Xwy)TXdw,
注意到 X d w Xd\mathbf{w} Xdw X w − y X\mathbf{w}-\mathbf{y} Xwy 是向量,两个向量的内积满足 u T v = v T u \mathbf{u}^T\mathbf{v} = \mathbf{v}^T \mathbf{u} uTv=vTu。对照导数与微分的联系 d l = ∂ l ∂ w T d w dl = \frac{\partial l}{\partial \mathbf{w}}^Td\mathbf{w} dl=wlTdw,可得
∂ l ∂ w = 2 X T ( X w − y ) . \frac{\partial l}{\partial \mathbf{w}} = 2X^T(X\mathbf{w}-\mathbf{y}). wl=2XT(Xwy).
∂ l ∂ w = 0 \frac{\partial l}{\partial \mathbf{w}}=\mathbf{0} wl=0,即 X T X w = X T y X^TX\mathbf{w} = X^T\mathbf{y} XTXw=XTy,从而可得 w \mathbf{w} w 的最小二乘估计为
w = ( X T X ) − 1 X T y . \mathbf{w} = (X^TX)^{-1}X^T\mathbf{y}. w=(XTX)1XTy.

例 5:方差的最大似然估计

问题:样本 x 1 , … , x N ∼ N ( μ , Σ ) \mathbf{x}_1,\dots, \mathbf{x}_N \sim \mathcal{N}(\mathbf{\mu}, \Sigma) x1,,xNN(μ,Σ),求方差 Σ \Sigma Σ 的最大似然估计。其数学表达式为:
l = log ⁡ ∣ Σ ∣ + 1 N ∑ i = 1 N ( x i − x ˉ ) T Σ − 1 ( x i − x ˉ ) , l = \log|\Sigma|+\frac{1}{N}\sum_{i=1}^N(\mathbf{x}_i-\mathbf{\bar{x}})^T\Sigma^{-1}(\mathbf{x}_i-\mathbf{\bar{x}}), l=log∣Σ∣+N1i=1N(xixˉ)TΣ1(xixˉ),
∂ l ∂ Σ \frac{\partial l }{\partial \Sigma} Σl 的零点。其中 x i \mathbf{x}_i xi m × 1 m\times 1 m×1 列向量, x ˉ = 1 N ∑ i = 1 N x i \bar{\mathbf{x}}=\frac{1}{N}\sum_{i=1}^N \mathbf{x}_i xˉ=N1i=1Nxi 是样本均值, Σ \Sigma Σ m × m m\times m m×m 对称正定矩阵, l l l 是标量, log ⁡ \log log 表示自然对数。

:首先求微分,利用矩阵乘法、行列式、逆等运算法则。第一项为
d log ⁡ ∣ Σ ∣ = ∣ Σ ∣ − 1 d ∣ Σ ∣ = tr ( Σ − 1 d Σ ) , d\log|\Sigma| = |\Sigma|^{-1}d|\Sigma| = \text{tr}(\Sigma^{-1}d\Sigma), dlog∣Σ∣=∣Σ1d∣Σ∣=tr(Σ1dΣ),
第二项为
1 N ∑ i = 1 N ( x i − x ˉ ) T d Σ − 1 ( x i − x ˉ ) = − 1 N ∑ i = 1 N ( x i − x ˉ ) T Σ − 1 d Σ Σ − 1 ( x i − x ˉ ) . \frac{1}{N}\sum_{i=1}^N(\mathbf{x}_i-\mathbf{\bar{x}})^Td\Sigma^{-1}(\mathbf{x}_i-\mathbf{\bar{x}}) = -\frac{1}{N}\sum_{i=1}^N(\mathbf{x}_i-\mathbf{\bar{x}})^T\Sigma^{-1}d\Sigma\Sigma^{-1}(\mathbf{x}_i-\mathbf{\bar{x}}). N1i=1N(xixˉ)TdΣ1(xixˉ)=N1i=1N(xixˉ)TΣ1dΣΣ1(xixˉ).
再为第二项套上迹并进行交换:
tr ( 1 N ∑ i = 1 N ( x i − x ˉ ) T Σ − 1 d Σ Σ − 1 ( x i − x ˉ ) ) = 1 N ∑ i = 1 N tr ( ( x i − x ˉ ) T Σ − 1 d Σ Σ − 1 ( x i − x ˉ ) ) = 1 N ∑ i = 1 N tr ( Σ − 1 ( x i − x ˉ ) ( x i − x ˉ ) T Σ − 1 d Σ ) = tr ( Σ − 1 S Σ − 1 d Σ ) , \begin{aligned} \text{tr}\left( \frac{1}{N} \sum_{i=1}^{N} ({{\mathbf{x}}_{i}} - \mathbf{\bar{x}})^T \Sigma^{-1} d\Sigma \Sigma^{-1} ({{\mathbf{x}}_{i}} - \mathbf{\bar{x}}) \right) &= \frac{1}{N} \sum_{i=1}^{N} \text{tr}\left( ({{\mathbf{x}}_{i}} - \mathbf{\bar{x}})^T \Sigma^{-1} d\Sigma \Sigma^{-1} ({{\mathbf{x}}_{i}} - \mathbf{\bar{x}}) \right) \\ &= \frac{1}{N} \sum_{i=1}^{N} \text{tr}\left( \Sigma^{-1} ({{\mathbf{x}}_{i}} - \mathbf{\bar{x}}) ({{\mathbf{x}}_{i}} - \mathbf{\bar{x}})^T \Sigma^{-1} d\Sigma \right) \\ &= \text{tr}\left( \Sigma^{-1} S \Sigma^{-1} d\Sigma \right), \end{aligned} tr(N1i=1N(xixˉ)TΣ1dΣΣ1(xixˉ))=N1i=1Ntr((xixˉ)TΣ1dΣΣ1(xixˉ))=N1i=1Ntr(Σ1(xixˉ)(xixˉ)TΣ1dΣ)=tr(Σ1SΣ1dΣ),
其中先交换迹与求和,再将 Σ − 1 ( x i − x ˉ ) \Sigma^{-1} (\mathbf{x}_i-\mathbf{\bar{x}}) Σ1(xixˉ) 交换到左边,最后再交换迹与求和,并定义 S = 1 N ∑ i = 1 N ( x i − x ˉ ) ( x i − x ˉ ) T S = \frac{1}{N}\sum_{i=1}^N(\mathbf{x}_i-\mathbf{\bar{x}})(\mathbf{x}_i-\mathbf{\bar{x}})^T S=N1i=1N(xixˉ)(xixˉ)T 为样本方差矩阵。因此可得
d l = tr ( ( Σ − 1 − Σ − 1 S Σ − 1 ) d Σ ) . dl = \text{tr}\left(\left(\Sigma^{-1}-\Sigma^{-1}S\Sigma^{-1}\right)d\Sigma\right). dl=tr((Σ1Σ1SΣ1)dΣ).
对照导数与微分的联系,有
∂ l ∂ Σ = ( Σ − 1 − Σ − 1 S Σ − 1 ) T , \frac{\partial l }{\partial \Sigma}=(\Sigma^{-1}-\Sigma^{-1}S\Sigma^{-1})^T, Σl=(Σ1Σ1SΣ1)T,
其零点即 Σ \Sigma Σ 的最大似然估计为
Σ = S . \Sigma = S. Σ=S.

例 6:多元 logistic 回归中的导数

问题 l = − y T log ⁡ softmax ( W x ) l = -\mathbf{y}^T\log\text{softmax}(W\mathbf{x}) l=yTlogsoftmax(Wx),求 ∂ l ∂ W \frac{\partial l}{\partial W} Wl。其中 y \mathbf{y} y 是除一个元素为 1 外其他元素为 0 的 m × 1 m\times 1 m×1 列向量, W W W m × n m\times n m×n 矩阵, x \mathbf{x} x n × 1 n\times 1 n×1 列向量, l l l 是标量; log ⁡ \log log 表示自然对数, softmax ( a ) = exp ⁡ ( a ) 1 T exp ⁡ ( a ) \text{softmax}(\mathbf{a}) = \frac{\exp(\mathbf{a})}{\mathbf{1}^T\exp(\mathbf{a})} softmax(a)=1Texp(a)exp(a),其中 exp ⁡ ( a ) \exp(\mathbf{a}) exp(a) 表示逐元素求指数, 1 \mathbf{1} 1 代表全 1 向量。

解 1:首先将 softmax 函数代入并写成
l = − y T ( log ⁡ ( exp ⁡ ( W x ) ) − 1 log ⁡ ( 1 T exp ⁡ ( W x ) ) ) = − y T W x + log ⁡ ( 1 T exp ⁡ ( W x ) ) , \begin{aligned} l &= -\mathbf{y}^T \left(\log (\exp(W\mathbf{x}))-\mathbf{1}\log(\mathbf{1}^T\exp(W\mathbf{x}))\right) \\&= -\mathbf{y}^TW\mathbf{x} + \log(\mathbf{1}^T\exp(W\mathbf{x})), \end{aligned} l=yT(log(exp(Wx))1log(1Texp(Wx)))=yTWx+log(1Texp(Wx)),
注意到逐元素 log ⁡ \log log 满足等式 log ⁡ ( u / c ) = log ⁡ ( u ) − 1 log ⁡ ( c ) \log(\mathbf{u}/c) = \log(\mathbf{u}) - \mathbf{1}\log(c) log(u/c)=log(u)1log(c),以及 y \mathbf{y} y 满足 y T 1 = 1 \mathbf{y}^T \mathbf{1} = 1 yT1=1。求微分,利用矩阵乘法、逐元素函数等法则:
d l = − y T d W x + 1 T ( exp ⁡ ( W x ) ⊙ ( d W x ) ) 1 T exp ⁡ ( W x ) . dl =- \mathbf{y}^TdW\mathbf{x}+\frac{\mathbf{1}^T\left(\exp(W\mathbf{x})\odot(dW\mathbf{x})\right)}{\mathbf{1}^T\exp(W\mathbf{x})}. dl=yTdWx+1Texp(Wx)1T(exp(Wx)(dWx)).
再套上迹并进行交换,注意到可化简 1 T ( exp ⁡ ( W x ) ⊙ ( d W x ) ) = exp ⁡ ( W x ) T d W x \mathbf{1}^T\left(\exp(W\mathbf{x})\odot(dW\mathbf{x})\right) = \exp(W\mathbf{x})^TdW\mathbf{x} 1T(exp(Wx)(dWx))=exp(Wx)TdWx,这是根据等式 1 T ( u ⊙ v ) = u T v \mathbf{1}^T (\mathbf{u}\odot \mathbf{v}) = \mathbf{u}^T \mathbf{v} 1T(uv)=uTv,因此
d l = tr ( − y T d W x + exp ⁡ ( W x ) T d W x 1 T exp ⁡ ( W x ) ) = tr ( − y T d W x + softmax ( W x ) T d W x ) = tr ( x ( softmax ( W x ) − y ) T d W ) . \begin{align*} dl &= \text{tr}\left(-\mathbf{y}^TdW\mathbf{x}+\frac{\exp(W\mathbf{x})^TdW\mathbf{x}}{\mathbf{1}^T\exp(W\mathbf{x})}\right)\\ & =\text{tr}(-\mathbf{y}^TdW\mathbf{x}+\text{softmax}(W\mathbf{x})^TdW\mathbf{x}) \\& = \text{tr}(\mathbf{x}(\text{softmax}(W\mathbf{x})-\mathbf{y})^TdW). \end{align*} dl=tr(yTdWx+1Texp(Wx)exp(Wx)TdWx)=tr(yTdWx+softmax(Wx)TdWx)=tr(x(softmax(Wx)y)TdW).
对照导数与微分的联系,可得
∂ l ∂ W = ( softmax ( W x ) − y ) x T . \frac{\partial l}{\partial W}= (\text{softmax}(W\mathbf{x})-\mathbf{y})\mathbf{x}^T. Wl=(softmax(Wx)y)xT.

解 2:定义 a = W x \mathbf{a} = W\mathbf{x} a=Wx,则
l = − y T log ⁡ softmax ( a ) , l = -\mathbf{y}^T\log\text{softmax}(\mathbf{a}), l=yTlogsoftmax(a),
先同上求出
∂ l ∂ a = softmax ( a ) − y , \frac{\partial l}{\partial \mathbf{a}} = \text{softmax}(\mathbf{a})-\mathbf{y}, al=softmax(a)y,
再利用复合法则:
d l = tr ( ∂ l ∂ a T d a ) = tr ( ∂ l ∂ a T d W x ) = tr ( x ∂ l ∂ a T d W ) , \begin{align*} dl &= \text{tr}\left(\frac{\partial l}{\partial \mathbf{a}}^Td\mathbf{a}\right) \\&= \text{tr}\left(\frac{\partial l}{\partial \mathbf{a}}^TdW \mathbf{x}\right) \\&= \text{tr}\left(\mathbf{x}\frac{\partial l}{\partial \mathbf{a}}^TdW\right), \end{align*} dl=tr(alTda)=tr(alTdWx)=tr(xalTdW),
可得
∂ l ∂ W = ∂ l ∂ a x T . \frac{\partial l}{\partial W}= \frac{\partial l}{\partial\mathbf{a}}\mathbf{x}^T. Wl=alxT.

例 7:二层神经网络中的 BP 算法

问题 l = − y T log ⁡ softmax ( W 2 σ ( W 1 x ) ) l = -\mathbf{y}^T\log\text{softmax}(W_2\sigma(W_1\mathbf{x})) l=yTlogsoftmax(W2σ(W1x)),求 ∂ l ∂ W 1 \frac{\partial l}{\partial W_1} W1l ∂ l ∂ W 2 \frac{\partial l}{\partial W_2} W2l。其中 y \mathbf{y} y 是除一个元素为 1 外其他元素为 0 的 m × 1 m\times 1 m×1 列向量, W 2 W_2 W2 m × p m\times p m×p 矩阵, W 1 W_1 W1 p × n p \times n p×n 矩阵, x \mathbf{x} x n × 1 n\times 1 n×1 列向量, l l l 是标量; log ⁡ \log log 表示自然对数, softmax ( a ) = exp ⁡ ( a ) 1 T exp ⁡ ( a ) \text{softmax}(\mathbf{a}) = \frac{\exp(\mathbf{a})}{\mathbf{1}^T\exp(\mathbf{a})} softmax(a)=1Texp(a)exp(a),同上, σ \sigma σ 是逐元素 sigmoid 函数 σ ( a ) = 1 1 + exp ⁡ ( − a ) \sigma(a) = \frac{1}{1+\exp(-a)} σ(a)=1+exp(a)1

:定义 a 1 = W 1 x \mathbf{a}_1=W_1\mathbf{x} a1=W1x h 1 = σ ( a 1 ) \mathbf{h}_1 = \sigma(\mathbf{a}_1) h1=σ(a1) a 2 = W 2 h 1 \mathbf{a}_2 = W_2 \mathbf{h}_1 a2=W2h1,则
l = − y T log ⁡ softmax ( a 2 ) . l =-\mathbf{y}^T\log\text{softmax}(\mathbf{a}_2). l=yTlogsoftmax(a2).
在前例中已求出
∂ l ∂ a 2 = softmax ( a 2 ) − y . \frac{\partial l}{\partial \mathbf{a}_2} = \text{softmax}(\mathbf{a}_2)-\mathbf{y}. a2l=softmax(a2)y.
利用复合法则,
d l = tr ( ∂ l ∂ a 2 T d a 2 ) = tr ( ∂ l ∂ a 2 T d W 2 h 1 ) + tr ( ∂ l ∂ a 2 T W 2 d h 1 ) ⏟ d l 2 , \begin{align*} dl &= \text{tr}\left(\frac{\partial l}{\partial \mathbf{a}_2}^Td\mathbf{a}_2\right) \\&= \text{tr}\left(\frac{\partial l}{\partial \mathbf{a}_2}^TdW_2 \mathbf{h}_1\right) + \underbrace{ \text{tr}\left(\frac{\partial l}{\partial \mathbf{a}_2}^TW_2 d\mathbf{h}_1\right)}_{dl_2}, \end{align*} dl=tr(a2lTda2)=tr(a2lTdW2h1)+dl2 tr(a2lTW2dh1),
利用矩阵乘法交换的迹技巧从第一项可得
∂ l ∂ W 2 = ∂ l ∂ a 2 h 1 T , \frac{\partial l}{\partial W_2}= \frac{\partial l}{\partial\mathbf{a}_2}\mathbf{h}_1^T, W2l=a2lh1T,
从第二项可得
∂ l ∂ h 1 = W 2 T ∂ l ∂ a 2 . \frac{\partial l}{\partial \mathbf{h}_1}= W_2^T\frac{\partial l}{\partial\mathbf{a}_2}. h1l=W2Ta2l.
接下来对第二项继续利用复合法则求 ∂ l ∂ a 1 \frac{\partial l}{\partial \mathbf{a}_1} a1l,并利用矩阵乘法和逐元素乘法交换的迹技巧:
d l 2 = tr ( ∂ l ∂ h 1 T d h 1 ) = tr ( ∂ l ∂ h 1 T ( σ ′ ( a 1 ) ⊙ d a 1 ) ) = tr ( ( ∂ l ∂ h 1 ⊙ σ ′ ( a 1 ) ) T d a 1 ) , \begin{align*} dl_2 &= \text{tr}\left(\frac{\partial l}{\partial\mathbf{h}_1}^Td\mathbf{h}_1\right) \\&= \text{tr}\left(\frac{\partial l}{\partial\mathbf{h}_1}^T(\sigma'(\mathbf{a}_1)\odot d\mathbf{a}_1)\right) \\&= \text{tr}\left(\left(\frac{\partial l}{\partial\mathbf{h}_1}\odot \sigma'(\mathbf{a}_1)\right)^Td\mathbf{a}_1\right), \end{align*} dl2=tr(h1lTdh1)=tr(h1lT(σ(a1)da1))=tr((h1lσ(a1))Tda1),
可得
∂ l ∂ a 1 = ∂ l ∂ h 1 ⊙ σ ′ ( a 1 ) . \frac{\partial l}{\partial \mathbf{a}_1}= \frac{\partial l}{\partial\mathbf{h}_1}\odot\sigma'(\mathbf{a}_1). a1l=h1lσ(a1).
为求 ∂ l ∂ W 1 \frac{\partial l}{\partial W_1} W1l,再利用一次复合法则:
d l 2 = tr ( ∂ l ∂ a 1 T d a 1 ) = tr ( ∂ l ∂ a 1 T d W 1 x ) = tr ( x ∂ l ∂ a 1 T d W 1 ) , \begin{align*} dl_2 &= \text{tr}\left(\frac{\partial l}{\partial\mathbf{a}_1}^Td\mathbf{a}_1\right) \\&= \text{tr}\left(\frac{\partial l}{\partial\mathbf{a}_1}^TdW_1\mathbf{x}\right) \\&= \text{tr}\left(\mathbf{x}\frac{\partial l}{\partial\mathbf{a}_1}^TdW_1\right), \end{align*} dl2=tr(a1lTda1)=tr(a1lTdW1x)=tr(xa1lTdW1),
可得
∂ l ∂ W 1 = ∂ l ∂ a 1 x T . \frac{\partial l}{\partial W_1}= \frac{\partial l}{\partial\mathbf{a}_1}\mathbf{x}^T. W1l=a1lxT.

推广:多样本情况下的二层神经网络

问题:样本 ( x 1 , y 1 ) , … , ( x N , y N ) (\mathbf{x}_1, y_1), \dots, (\mathbf{x}_N,y_N) (x1,y1),,(xN,yN)
l = − ∑ i = 1 N y i T log ⁡ softmax ( W 2 σ ( W 1 x i + b 1 ) + b 2 ) , l = -\sum_{i=1}^N \mathbf{y}_i^T\log\text{softmax}(W_2\sigma(W_1\mathbf{x}_i + \mathbf{b}_1) + \mathbf{b}_2), l=i=1NyiTlogsoftmax(W2σ(W1xi+b1)+b2),
其中 b 1 \mathbf{b}_1 b1 p × 1 p \times 1 p×1 列向量, b 2 \mathbf{b}_2 b2 m × 1 m\times 1 m×1 列向量,其余定义同上。

解 1:定义 a 1 , i = W 1 x i + b 1 \mathbf{a}_{1,i} = W_1 \mathbf{x}_i + \mathbf{b}_1 a1,i=W1xi+b1 h 1 , i = σ ( a 1 , i ) \mathbf{h}_{1,i} = \sigma(\mathbf{a}_{1,i}) h1,i=σ(a1,i) a 2 , i = W 2 h 1 , i + b 2 \mathbf{a}_{2,i} = W_2\mathbf{h}_{1,i} + \mathbf{b}_2 a2,i=W2h1,i+b2,则
l = − ∑ i = 1 N y i T log ⁡ softmax ( a 2 , i ) . l = -\sum_{i=1}^N \mathbf{y}_i^T \log \text{softmax}(\mathbf{a}_{2,i}). l=i=1NyiTlogsoftmax(a2,i).
先同上可求出
∂ l ∂ a 2 , i = softmax ( a 2 , i ) − y i . \frac{\partial l}{\partial \mathbf{a}_{2,i}} = \text{softmax}(\mathbf{a}_{2,i})-\mathbf{y}_i. a2,il=softmax(a2,i)yi.
利用复合法则,
d l = tr ( ( ∑ i = 1 N ∂ l ∂ a 2 , i T d a 2 , i ) ) = tr ( ( ∑ i = 1 N ∂ l ∂ a 2 , i T d W 2 h 1 , i ) ) + tr ( ( ∑ i = 1 N ∂ l ∂ a 2 , i T W 2 d h 1 , i ) ) ⏟ d I 2 + tr ( ∑ i = 1 N ⋯   ) \begin{align*} dl &= \text{tr}\left( \left( \sum_{i=1}^N \frac{\partial l}{\partial \mathbf{a}_{2,i}}^T d\mathbf{a}_{2,i} \right) \right) \\ &= \text{tr}\left( \left( \sum_{i=1}^N \frac{\partial l}{\partial \mathbf{a}_{2,i}}^T d\mathbf{W}_2 \mathbf{h}_{1,i} \right) \right) + \underbrace{\text{tr}\left( \left( \sum_{i=1}^N \frac{\partial l}{\partial \mathbf{a}_{2,i}}^T \mathbf{W}_2 d\mathbf{h}_{1,i} \right) \right)}_{dI_2} + \text{tr}\left( \sum_{i=1}^N \cdots \right) \end{align*} dl=tr((i=1Na2,ilTda2,i))=tr((i=1Na2,ilTdW2h1,i))+dI2 tr((i=1Na2,ilTW2dh1,i))+tr(i=1N)
从第二项可得:
∂ l ∂ h 1 , i = W 2 T ∂ l ∂ a 2 , i \frac{\partial l}{\partial \mathbf{h}_{1,i}} = \mathbf{W}_2^T \frac{\partial l}{\partial \mathbf{a}_{2,i}} h1,il=W2Ta2,il
从第三项可得:
∂ l ∂ W 2 = ∑ i = 1 N ∂ l ∂ a 2 , i h 1 , i T \frac{\partial l}{\partial \mathbf{W}_2} = \sum_{i=1}^N \frac{\partial l}{\partial \mathbf{a}_{2,i}} \mathbf{h}_{1,i}^T W2l=i=1Na2,ilh1,iT
接下来对第二项继续利用复合法则,得到:
∂ l ∂ a 1 , i = ∂ l ∂ h 1 , i ⊙ σ ′ ( a 1 , i ) \frac{\partial l}{\partial \mathbf{a}_{1,i}} = \frac{\partial l}{\partial \mathbf{h}_{1,i}} \odot \sigma'(\mathbf{a}_{1,i}) a1,il=h1,ilσ(a1,i)
为求 ∂ l ∂ W 1 \frac{\partial l}{\partial \mathbf{W}_1} W1l ∂ l ∂ b 1 \frac{\partial l}{\partial \mathbf{b}_1} b1l,再利用一次复合法则:
d I 2 = tr ( ( ∑ i = 1 N ∂ l ∂ a 1 , i T d a 1 , i ) ) = tr ( ( ∑ i = 1 N ∂ l ∂ a 1 , i T d W 1 x i ) ) + tr ( ( ∑ i = 1 N ∂ l ∂ a 1 , i T d b 1 ) ) \begin{align*} dI_2 &= \text{tr}\left( \left( \sum_{i=1}^N \frac{\partial l}{\partial \mathbf{a}_{1,i}}^T d\mathbf{a}_{1,i} \right) \right) \\ &= \text{tr}\left( \left( \sum_{i=1}^N \frac{\partial l}{\partial \mathbf{a}_{1,i}}^T d\mathbf{W}_1 \mathbf{x}_i \right) \right) + \text{tr}\left( \left( \sum_{i=1}^N \frac{\partial l}{\partial \mathbf{a}_{1,i}}^T d\mathbf{b}_1 \right) \right) \end{align*} dI2=tr((i=1Na1,ilTda1,i))=tr((i=1Na1,ilTdW1xi))+tr((i=1Na1,ilTdb1))
可得:
∂ l ∂ W 1 = ∑ i = 1 N ∂ l ∂ a 1 , i x i T , ∂ l ∂ b 1 = ∑ i = 1 N ∂ l ∂ a 1 , i \frac{\partial l}{\partial \mathbf{W}_1} = \sum_{i=1}^N \frac{\partial l}{\partial \mathbf{a}_{1,i}} \mathbf{x}_i^T, \quad \frac{\partial l}{\partial \mathbf{b}_1} = \sum_{i=1}^N \frac{\partial l}{\partial \mathbf{a}_{1,i}} W1l=i=1Na1,ilxiT,b1l=i=1Na1,il

解 2:矩阵表示形式

定义( N N N 个样本的矩阵形式):

  • 输入矩阵: X = [ x 1 , … , x N ] \mathbf{X} = [\mathbf{x}_1, \dots, \mathbf{x}_N] X=[x1,,xN]
  • 第一层线性输出: A 1 = [ a 1 , 1 , … , a 1 , N ] = W 1 X + b 1 1 T \mathbf{A}_1 = [\mathbf{a}_{1,1}, \dots, \mathbf{a}_{1,N}] = \mathbf{W}_1 \mathbf{X} + \mathbf{b}_1 \mathbf{1}^T A1=[a1,1,,a1,N]=W1X+b11T
  • 第一层激活输出: H 1 = [ h 1 , 1 , … , h 1 , N ] = σ ( A 1 ) \mathbf{H}_1 = [\mathbf{h}_{1,1}, \dots, \mathbf{h}_{1,N}] = \sigma(\mathbf{A}_1) H1=[h1,1,,h1,N]=σ(A1)
  • 第二层线性输出: A 2 = [ a 2 , 1 , … , a 2 , N ] = W 2 H 1 + b 2 1 T \mathbf{A}_2 = [\mathbf{a}_{2,1}, \dots, \mathbf{a}_{2,N}] = \mathbf{W}_2 \mathbf{H}_1 + \mathbf{b}_2 \mathbf{1}^T A2=[a2,1,,a2,N]=W2H1+b21T

(注: 1 \mathbf{1} 1 是全 1 向量,用于扩展维度)

先求出损失对第二层线性输出的导数:
∂ l ∂ A 2 = [ softmax ( a 2 , 1 ) − y 1 , … , softmax ( a 2 , N ) − y N ] \frac{\partial l}{\partial \mathbf{A}_2} = [\text{softmax}(\mathbf{a}_{2,1}) - \mathbf{y}_1, \dots, \text{softmax}(\mathbf{a}_{2,N}) - \mathbf{y}_N] A2l=[softmax(a2,1)y1,,softmax(a2,N)yN]

利用复合法则,对 A 2 \mathbf{A}_2 A2 求微分:
d l = tr ( ∂ l ∂ A 2 T d A 2 ) = tr ( ∂ l ∂ A 2 T d W 2 H 1 ) + tr ( ∂ l ∂ A 2 T W 2 d H 1 ) ⏟ d I 2 + tr ( ∂ l ∂ A 2 T d b 2 1 T ) \begin{align*} dl &= \text{tr}\left( \frac{\partial l}{\partial \mathbf{A}_2}^T d\mathbf{A}_2 \right) \\ &= \text{tr}\left( \frac{\partial l}{\partial \mathbf{A}_2}^T d\mathbf{W}_2 \mathbf{H}_1 \right) + \underbrace{\text{tr}\left( \frac{\partial l}{\partial \mathbf{A}_2}^T \mathbf{W}_2 d\mathbf{H}_1 \right)}_{dI_2} + \text{tr}\left( \frac{\partial l}{\partial \mathbf{A}_2}^T d\mathbf{b}_2 \mathbf{1}^T \right) \end{align*} dl=tr(A2lTdA2)=tr(A2lTdW2H1)+dI2 tr(A2lTW2dH1)+tr(A2lTdb21T)

从各项可得导数:

  1. W 2 \mathbf{W}_2 W2 的导数: ∂ l ∂ W 2 = ∂ l ∂ A 2 H 1 T \frac{\partial l}{\partial \mathbf{W}_2} = \frac{\partial l}{\partial \mathbf{A}_2} \mathbf{H}_1^T W2l=A2lH1T
  2. H 1 \mathbf{H}_1 H1 的导数: ∂ l ∂ H 1 = W 2 T ∂ l ∂ A 2 \frac{\partial l}{\partial \mathbf{H}_1} = \mathbf{W}_2^T \frac{\partial l}{\partial \mathbf{A}_2} H1l=W2TA2l
  3. b 2 \mathbf{b}_2 b2 的导数: ∂ l ∂ b 2 = ∂ l ∂ A 2 1 \frac{\partial l}{\partial \mathbf{b}_2} = \frac{\partial l}{\partial \mathbf{A}_2} \mathbf{1} b2l=A2l1

H 1 \mathbf{H}_1 H1 继续利用复合法则(激活函数的导数):
∂ l ∂ A 1 = ∂ l ∂ H 1 ⊙ σ ′ ( A 1 ) \frac{\partial l}{\partial \mathbf{A}_1} = \frac{\partial l}{\partial \mathbf{H}_1} \odot \sigma'(\mathbf{A}_1) A1l=H1lσ(A1)

为求 ∂ l ∂ W 1 \frac{\partial l}{\partial \mathbf{W}_1} W1l ∂ l ∂ b 1 \frac{\partial l}{\partial \mathbf{b}_1} b1l,对 A 1 \mathbf{A}_1 A1 求微分:
d I 2 = tr ( ∂ l ∂ A 1 T d A 1 ) = tr ( ∂ l ∂ A 1 T d W 1 X ) + tr ( ∂ l ∂ A 1 T d b 1 1 T ) \begin{align*} dI_2 &= \text{tr}\left( \frac{\partial l}{\partial \mathbf{A}_1}^T d\mathbf{A}_1 \right) \\ &= \text{tr}\left( \frac{\partial l}{\partial \mathbf{A}_1}^T d\mathbf{W}_1 \mathbf{X} \right) + \text{tr}\left( \frac{\partial l}{\partial \mathbf{A}_1}^T d\mathbf{b}_1 \mathbf{1}^T \right) \end{align*} dI2=tr(A1lTdA1)=tr(A1lTdW1X)+tr(A1lTdb11T)

可得导数:

  1. W 1 \mathbf{W}_1 W1 的导数: ∂ l ∂ W 1 = ∂ l ∂ A 1 X T \frac{\partial l}{\partial \mathbf{W}_1} = \frac{\partial l}{\partial \mathbf{A}_1} \mathbf{X}^T W1l=A1lXT
  2. b 1 \mathbf{b}_1 b1 的导数: ∂ l ∂ b 1 = ∂ l ∂ A 1 1 \frac{\partial l}{\partial \mathbf{b}_1} = \frac{\partial l}{\partial \mathbf{A}_1} \mathbf{1} b1l=A1l1


via:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值