引言
不得不说在机器学习、深度学习这个方向没有很成体系的教材,要么如同西瓜书一样给人一种云里雾里的感觉,要么如同XXX入门人工智能一样鸡肋的教材,不是每个人都能有周老师要求的学生的数学水平,但也不是普通大学的同学就没必要理解公式推导,做个调包侠就够了。
矩阵微分的作用
矩阵分析这门课的难度就不用多说了,但实际上对于使用机器学习、深度学习解决具体问题的人来说,没有必要把整个矩阵分析搞懂,大cs的搞研究多数情况也不需要,上来就是严老,受的了吗,当然你要是读博或者搞矩阵的当我没说实际上是有两篇文献关于ml中常用的矩阵求导常用的部分做了很好的总结,但无可奈何,英文的(Old and New Matrix Algebra Useful for Statistics ,The Matrix Cookbook)。言归正传,矩阵微分只有一个目的,解决含有矩阵的函数的求导问题。
矩阵微分的意义
定义法求偏导写的东西太多容易出错。
标量对向量的微分
首先定义基本形式
d
y
=
∂
f
∂
x
T
d
x
\mathrm{d} y=\frac{{\partial f}}{\partial \textbf {x}}^T \mathrm d \textbf x
dy=∂x∂fTdx
定义一些基本运算
d
(
X
+
Y
)
=
d
(
X
)
+
d
(
Y
)
d
(
X
Y
)
=
d
(
X
)
Y
+
X
d
(
Y
)
d
(
X
T
)
=
d
(
X
)
T
d
t
r
(
X
)
=
t
r
d
(
X
)
d
X
−
1
=
−
X
−
1
d
X
X
−
1
d
∣
X
∣
=
t
r
(
X
∗
d
X
)
=
∣
X
∣
t
r
(
X
−
1
d
X
)
(
X
可
逆
)
d
(
X
⊙
Y
)
=
d
X
⊙
Y
+
X
⊙
d
Y
a
=
t
r
(
a
)
t
r
(
A
T
)
=
t
r
(
A
)
t
r
(
A
+
B
)
=
t
r
(
A
)
+
t
r
(
B
)
t
r
(
A
B
)
=
t
r
(
B
A
)
(
A
与
B
尺
寸
相
同
)
t
r
(
A
T
(
B
⊙
C
)
)
=
t
r
(
(
A
⊙
B
)
T
C
)
(
A
,
B
,
C
尺
寸
相
同
)
\mathrm d(X+Y)=\mathrm d(X)+\mathrm d(Y)\\ \mathrm d(XY)=\mathrm d(X)Y+Xd(Y)\\ \mathrm d(X^T)={\mathrm d(X)}^T\\ \mathrm d\ tr(X) =tr\ \mathrm d(X)\\ \mathrm dX^{-1}=-X^{-1}\mathrm dXX^{-1}\\ \mathrm d|X|=tr(X^*\mathrm dX)=|X|tr(X^{-1}\mathrm dX)(X可逆)\\ \mathrm d(X \odot Y)=\mathrm dX \odot Y+X \odot \mathrm dY\\ a=tr(a)\\ tr(A^T)=tr(A)\\ tr(A+B)=tr(A)+tr(B) \\ tr(AB)=tr(BA)(A与B尺寸相同)\\ tr(A^T(B \odot C))=tr((A \odot B)^TC)(A,B,C尺寸相同)
d(X+Y)=d(X)+d(Y)d(XY)=d(X)Y+Xd(Y)d(XT)=d(X)Td tr(X)=tr d(X)dX−1=−X−1dXX−1d∣X∣=tr(X∗dX)=∣X∣tr(X−1dX)(X可逆)d(X⊙Y)=dX⊙Y+X⊙dYa=tr(a)tr(AT)=tr(A)tr(A+B)=tr(A)+tr(B)tr(AB)=tr(BA)(A与B尺寸相同)tr(AT(B⊙C))=tr((A⊙B)TC)(A,B,C尺寸相同)
x为列向量 (实际无所谓) f为标量,换一句话说,对于给定的式子只要表示为上述形式就可以求得f对x的偏导,上例子。
y
=
x
T
a
d
y
=
d
x
T
a
d
y
=
a
T
d
x
∂
f
∂
x
=
a
T
∂
f
∂
x
T
=
a
y=\textbf x^Ta \\ \mathrm dy= \mathrm d \textbf x^Ta\\ \mathrm dy=a^T\mathrm d \textbf x \\\frac{{\partial f}}{\partial \textbf {x}}=a^T\ \ \ \ \ \ \\ \frac{{\partial f}}{\partial \textbf {x}^T}=a \ \ \ \ \ \ \ \ \ \ \
y=xTady=dxTady=aTdx∂x∂f=aT ∂xT∂f=a
许多人上来就被分母形式,分子形式搞混了,实际上只需要记住一句话。
去他妈的布局标量对向量,向量对标量,无需在意,你只需要把式子变形为上述微分形式,至于形状交给其他项就好,只要是标量对向量求导,无论分子布局分母布局,他们只差一个转置。
标量对矩阵求导
首先来定义一个基本形式
d
f
=
t
r
(
∂
f
∂
X
T
d
X
)
\mathrm df=tr(\frac{\partial f}{\partial X}^T\mathrm dX)
df=tr(∂X∂fTdX)
再来一个例子真的折磨以后练习题直接穿手写版
运用迹交换就好了,注意别套用标量的链式法则就好。