注:本文来自 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],
∂X∂f=[∂Xij∂f],
即
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=1∑n∂xi∂fdxi=∂x∂fTdx,
其中第一个等号为全微分公式,第二个等号表达了梯度与微分的联系:全微分
d
f
df
df 是梯度向量
∂
f
∂
x
(
n
×
1
)
\frac{\partial f}{\partial \mathbf{x}}(n\times 1)
∂x∂f(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=1∑mj=1∑n∂Xij∂fdXij=tr(∂X∂fTdX),
其中
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,j∑AijBij,
即
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)
∂X∂f(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}.
dX−1=−X−1dXX−1.
此式可通过在
X
X
−
1
=
I
XX^{-1}=I
XX−1=I 两侧求微分来证明。
行列式:
d
∣
X
∣
=
tr
(
X
∗
d
X
)
,
d|X| = \text{tr}(X^{*}dX),
d∣X∣=tr(X∗dX),
其中
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).
d∣X∣=∣X∣tr(X−1dX).
此式可用拉普拉斯展开来证明,详见张贤达《矩阵分析与应用》第 279 页。
逐元素乘法:
d
(
X
⊙
Y
)
=
d
X
⊙
Y
+
X
⊙
d
Y
,
d(X\odot Y) = dX\odot Y + X\odot dY,
d(X⊙Y)=dX⊙Y+X⊙dY,
其中
⊙
\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(∂X∂fTdX),
在求出左侧的微分
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(B⊙C))=tr((A⊙B)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(∂X∂fTdX),
即可求得导数。
特别地,若矩阵退化为向量,对照导数与微分的联系
d
f
=
∂
f
∂
x
T
d
x
,
df = \frac{\partial f}{\partial \mathbf{x}}^T d\mathbf{x},
df=∂x∂fTdx,
即可求得导数。
四、复合问题与复合法则
在建立法则的最后,讨论复合问题。假设已求得
∂
f
∂
Y
\frac{\partial f}{\partial Y}
∂Y∂f,而
Y
Y
Y 是
X
X
X 的函数,如何求
∂
f
∂
X
\frac{\partial f}{\partial X}
∂X∂f?在微积分中,标量求导的链式法则为
∂
f
∂
x
=
∂
f
∂
y
∂
y
∂
x
,
\frac{\partial f}{\partial x} = \frac{\partial f}{\partial y} \frac{\partial y}{\partial x},
∂x∂f=∂y∂f∂x∂y,
但在此处不能随意沿用标量的链式法则,因为矩阵对矩阵的导数
∂
Y
∂
X
\frac{\partial Y}{\partial X}
∂X∂Y 截至目前仍未定义。因此,我们从微分入手建立复合法则:先写出
d
f
=
tr
(
∂
f
∂
Y
T
d
Y
)
,
df = \text{tr}\left(\frac{\partial f}{\partial Y}^T dY\right),
df=tr(∂Y∂fTdY),
再将
d
Y
dY
dY 用
d
X
dX
dX 表示并代入,利用迹技巧将其他项交换至
d
X
dX
dX 左侧,即可得到
∂
f
∂
X
\frac{\partial f}{\partial X}
∂X∂f。
最常见的情形是 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(∂Y∂fTdY)=tr(∂Y∂fTAdXB)=tr(B∂Y∂fTAdX)=tr((AT∂Y∂fBT)TdX),
从而可得
∂
f
∂
X
=
A
T
∂
f
∂
Y
B
T
.
\frac{\partial f}{\partial X}=A^T\frac{\partial f}{\partial Y}B^T.
∂X∂f=AT∂Y∂fBT.
注意此处
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
∂Y∂fTAdX 与
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} ∂X∂f。其中 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(∂X∂fTdX),可得
∂
f
∂
X
=
a
b
T
.
\frac{\partial f}{\partial X} = \mathbf{a}\mathbf{b}^T.
∂X∂f=abT.
注意:不能使用 ∂ f ∂ X = a T ∂ X ∂ X b = ? \frac{\partial f}{\partial X} =\mathbf{a}^T \frac{\partial X}{\partial X}\mathbf{b}=? ∂X∂f=aT∂X∂Xb=?,因为导数与矩阵乘法的交换是不合法的运算(而微分是合法的)。有些资料在计算矩阵导数时,会略过求微分这一步,这是逻辑上无法解释的。
例 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} ∂X∂f。其中 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((a⊙exp(Xb))TdXb)=tr(b(a⊙exp(Xb))TdX)=tr(((a⊙exp(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(B⊙C))=tr((A⊙B)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
(a⊙exp(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(∂X∂fTdX),可得
∂
f
∂
X
=
(
a
⊙
exp
(
X
b
)
)
b
T
.
\frac{\partial f}{\partial X} = (\mathbf{a}\odot \exp(X\mathbf{b}))\mathbf{b}^T.
∂X∂f=(a⊙exp(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} ∂X∂f。其中 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}
∂Y∂f,求微分,利用矩阵乘法、转置法则:
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,
∂Y∂f=(M+MT)Y=2MY,
注意此处
M
M
M 是对称矩阵。为求
∂
f
∂
X
\frac{\partial f}{\partial X}
∂X∂f,写出
d
f
=
tr
(
∂
f
∂
Y
T
d
Y
)
,
df = \text{tr}\left(\frac{\partial f}{\partial Y}^T dY\right),
df=tr(∂Y∂fTdY),
再将
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(∂Y∂fT(σ′(WX)⊙(WdX)))=tr((∂Y∂f⊙σ′(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*}
∂X∂f=WT(∂Y∂f⊙σ′(WX))=WT((2Mσ(WX))⊙σ′(WX)).
例 4:线性回归中的最小二乘估计
问题: l = ∣ X w − y ∣ 2 l = |X\mathbf{w}- \mathbf{y}|^2 l=∣Xw−y∣2,求 w \mathbf{w} w 的最小二乘估计,即求 ∂ l ∂ w \frac{\partial l}{\partial \mathbf{w}} ∂w∂l 的零点。其中 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=(Xw−y)T(Xw−y),
求微分,利用矩阵乘法、转置等法则:
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(Xw−y)+(Xw−y)T(Xdw)=2(Xw−y)TXdw,
注意到
X
d
w
Xd\mathbf{w}
Xdw 和
X
w
−
y
X\mathbf{w}-\mathbf{y}
Xw−y 是向量,两个向量的内积满足
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=∂w∂lTdw,可得
∂
l
∂
w
=
2
X
T
(
X
w
−
y
)
.
\frac{\partial l}{\partial \mathbf{w}} = 2X^T(X\mathbf{w}-\mathbf{y}).
∂w∂l=2XT(Xw−y).
令
∂
l
∂
w
=
0
\frac{\partial l}{\partial \mathbf{w}}=\mathbf{0}
∂w∂l=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,…,xN∼N(μ,Σ),求方差
Σ
\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=1∑N(xi−xˉ)TΣ−1(xi−xˉ),
求
∂
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ˉ=N1∑i=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=1∑N(xi−xˉ)TdΣ−1(xi−xˉ)=−N1i=1∑N(xi−xˉ)TΣ−1dΣΣ−1(xi−xˉ).
再为第二项套上迹并进行交换:
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=1∑N(xi−xˉ)TΣ−1dΣΣ−1(xi−xˉ))=N1i=1∑Ntr((xi−xˉ)TΣ−1dΣΣ−1(xi−xˉ))=N1i=1∑Ntr(Σ−1(xi−xˉ)(xi−xˉ)TΣ−1dΣ)=tr(Σ−1SΣ−1dΣ),
其中先交换迹与求和,再将
Σ
−
1
(
x
i
−
x
ˉ
)
\Sigma^{-1} (\mathbf{x}_i-\mathbf{\bar{x}})
Σ−1(xi−xˉ) 交换到左边,最后再交换迹与求和,并定义
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=N1∑i=1N(xi−xˉ)(xi−xˉ)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} ∂W∂l。其中 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(u⊙v)=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.
∂W∂l=(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},
∂a∂l=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(∂a∂lTda)=tr(∂a∂lTdWx)=tr(x∂a∂lTdW),
可得
∂
l
∂
W
=
∂
l
∂
a
x
T
.
\frac{\partial l}{\partial W}= \frac{\partial l}{\partial\mathbf{a}}\mathbf{x}^T.
∂W∂l=∂a∂lxT.
例 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} ∂W1∂l 和 ∂ l ∂ W 2 \frac{\partial l}{\partial W_2} ∂W2∂l。其中 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}.
∂a2∂l=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(∂a2∂lTda2)=tr(∂a2∂lTdW2h1)+dl2
tr(∂a2∂lTW2dh1),
利用矩阵乘法交换的迹技巧从第一项可得
∂
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,
∂W2∂l=∂a2∂lh1T,
从第二项可得
∂
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}.
∂h1∂l=W2T∂a2∂l.
接下来对第二项继续利用复合法则求
∂
l
∂
a
1
\frac{\partial l}{\partial \mathbf{a}_1}
∂a1∂l,并利用矩阵乘法和逐元素乘法交换的迹技巧:
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(∂h1∂lTdh1)=tr(∂h1∂lT(σ′(a1)⊙da1))=tr((∂h1∂l⊙σ′(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).
∂a1∂l=∂h1∂l⊙σ′(a1).
为求
∂
l
∂
W
1
\frac{\partial l}{\partial W_1}
∂W1∂l,再利用一次复合法则:
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(∂a1∂lTda1)=tr(∂a1∂lTdW1x)=tr(x∂a1∂lTdW1),
可得
∂
l
∂
W
1
=
∂
l
∂
a
1
x
T
.
\frac{\partial l}{\partial W_1}= \frac{\partial l}{\partial\mathbf{a}_1}\mathbf{x}^T.
∂W1∂l=∂a1∂lxT.
推广:多样本情况下的二层神经网络
问题:样本
(
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=1∑NyiTlogsoftmax(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=1∑NyiTlogsoftmax(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,i∂l=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=1∑N∂a2,i∂lTda2,i))=tr((i=1∑N∂a2,i∂lTdW2h1,i))+dI2
tr((i=1∑N∂a2,i∂lTW2dh1,i))+tr(i=1∑N⋯)
从第二项可得:
∂
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,i∂l=W2T∂a2,i∂l
从第三项可得:
∂
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
∂W2∂l=i=1∑N∂a2,i∂lh1,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,i∂l=∂h1,i∂l⊙σ′(a1,i)
为求
∂
l
∂
W
1
\frac{\partial l}{\partial \mathbf{W}_1}
∂W1∂l 和
∂
l
∂
b
1
\frac{\partial l}{\partial \mathbf{b}_1}
∂b1∂l,再利用一次复合法则:
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=1∑N∂a1,i∂lTda1,i))=tr((i=1∑N∂a1,i∂lTdW1xi))+tr((i=1∑N∂a1,i∂lTdb1))
可得:
∂
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}}
∂W1∂l=i=1∑N∂a1,i∂lxiT,∂b1∂l=i=1∑N∂a1,i∂l
解 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]
∂A2∂l=[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(∂A2∂lTdA2)=tr(∂A2∂lTdW2H1)+dI2
tr(∂A2∂lTW2dH1)+tr(∂A2∂lTdb21T)
从各项可得导数:
- 对 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 ∂W2∂l=∂A2∂lH1T
- 对 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} ∂H1∂l=W2T∂A2∂l
- 对 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} ∂b2∂l=∂A2∂l1
对
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)
∂A1∂l=∂H1∂l⊙σ′(A1)
为求
∂
l
∂
W
1
\frac{\partial l}{\partial \mathbf{W}_1}
∂W1∂l 和
∂
l
∂
b
1
\frac{\partial l}{\partial \mathbf{b}_1}
∂b1∂l,对
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(∂A1∂lTdA1)=tr(∂A1∂lTdW1X)+tr(∂A1∂lTdb11T)
可得导数:
- 对 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 ∂W1∂l=∂A1∂lXT
- 对 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} ∂b1∂l=∂A1∂l1
- 矩阵求导 | 原理、公式、技巧与场景(篇 2)-优快云博客
https://blog.youkuaiyun.com/u013669912/article/details/155431393
via:
- 矩阵求导术(上) - 知乎
https://zhuanlan.zhihu.com/p/24709748 - 矩阵求导术(下) - 知乎
https://zhuanlan.zhihu.com/p/24863977
620

被折叠的 条评论
为什么被折叠?



