说明
本文大部分内容翻译自Matrix calculus,部分结合自身的理解。
简单来说,矩阵求导就是分别将各元素进行求导,然后将求导的结果写成矩阵的形式(向量为矩阵特殊形式),根据写成的矩阵的排列方式,又分为分子布局和分母布局。
- 分子布局:行数和分子相同的维度,列数和分母相同的维度。如列向量对列向量的导数为分子各元素分别对分母各元素的导数,然后将结果排列为矩阵,矩阵的行数为分子的行数,矩阵的列数为分母的行数
- 分母布局:行数和分母相同的维度,列数和分子相同的维度。如列向量对列向量的导数为分子各元素分别对分母各元素的导数,然后将结果排列为矩阵,矩阵的行数为分母的行数,矩阵的列数为分子的行数
- 混合布局:向量或者矩阵在分子时采用分子布局,向量或矩阵在分母时采用分母布局。
布局方式详细参见Layout conventions,不同的文章可能使用不同的布局方式,如在深度学习的领域中,如在优化算法中需要计算W−α∂LW时,为了保证维度相容,就采用的是分母布局或混合布局。无需纠结,最终只是在求导结果中相差个转置,其实只要保证求导的结果矩阵维度相容,一般就没有问题,本文采用分子布局。
向量和矩阵之间,矩阵和矩阵之间的导数涉及到三维、四维张量,这里暂不考虑这种导数。
符号说明
我们使用M(n,m)表示包含n行m列的n∗m实矩阵的空间,该空间中的一般矩阵用粗体大写字母表示,如A,X,Y等,
而若该矩阵属于M(n,1),即列向量,则用粗体小写字母表示,如a,x,y等,不做特别说明的话,向量默认为列向量,
特别地,M(1,1)空间中的元素为标量,用小些斜体字母表示,如a,x,y等。
通常使用字母表的前半部分(a,b,c,⋯)用于表示常量,字母表的后半部分(x,y,z,⋯)表示变量。
- 标量a,b,c,d,e为常量,标量u,v为x、x或X的函数
- 向量a,b,c,d,e为常向量,向量u,v为x、x或X的函数
- 矩阵A,B,C,D,E为常矩阵,矩阵U,V为x、x或X的函数
矩阵的转置:XT,矩阵的迹:tr(X),矩阵的行列式:det(X)或|X|,矩阵的范数:||X||。
向量求导定义
向量可以看作只有一列的矩阵,是矩阵求导的特殊情况
向量对标量求导定义
向量y=[y1,y2,⋯,ym]T对标量x的导数写成如下形式:
∂y∂x=[∂y1∂x,∂y2∂x,⋯,∂ym∂x]T
即:
(∂y∂x)i=∂yi∂x
标量对向量求导定义
标量y对向量xT=[x1,x2,⋯,xn]对的导数写成如下形式:
∂y∂xT=[∂y∂x1,∂y∂x2,⋯,∂y∂xn]T
即:
(∂y∂xT)i=∂y∂xi
向量对向量求导定义
向量y=[y1,y2,⋯,ym]T对向量x=[x1,x2,⋯,xn]T对的导数写成如下形式:
∂y∂x=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢∂y1∂x1∂y2∂x1⋮∂ym∂x1∂y1∂x2∂y2∂x2⋮∂ym∂x2⋯⋯⋱⋯∂y1∂xn∂y2∂xn⋮∂ym∂xn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥
为m∗n维矩阵,也叫做雅可比矩阵。即:
(∂y∂x)ij=∂yi∂xj
矩阵求导定义
矩阵对标量求导定义
矩阵Y对标量x的导数定义如下:
∂Y∂x=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢∂y11∂x∂y21∂x⋮∂ym1∂x∂y12∂x∂y22∂x⋮∂ym2∂x⋯⋯⋱⋯∂y1n∂x∂y2n∂x⋮∂ymn∂x⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥
即:
(∂Y∂x)ij=∂yij∂x
标量对矩阵求导定义
标量y对矩阵X的导数定义如下:
∂y∂X=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢∂y∂x11∂y∂x12⋮∂y∂x1q∂y∂x21∂y∂x22⋮∂y∂x2q⋯⋯⋱⋯∂y∂xp1∂y∂xp2⋮∂y∂xpq⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥
即:
(∂y∂X)ij=∂y∂xji
求导法则
在微分、求导过程中,有三条法则非常重要,在矩阵的微分、求导过程中也同样重要。
- 链式法则:如果y=f(g(x)),则y′(x)=f′(g(x))g′(x)
- 乘积法则:(fg)′=f′g+fg′
- 求和法则:(f+g)′=f′+g′
求和法则是通用的,由于矩阵乘积不是可交换的,所以乘积法则需要注意顺序。链式法则在矩阵对标量和标量对矩阵求导时不适用(这个情况下,一般使用迹运算)。
一些恒等式
常用等式
||X||2=tr(XT⋅X)=tr(X⋅XT)
tr(ABCD)=tr(BCDA)=tr(CDAB)=tr(DABC)
转置
由上述的向量、矩阵的导数定义,易知:
∂yT∂x=∂y∂xT=(∂y∂x)T
其中x,y为满足上述定义的标量、向量或矩阵。
向量对向量求导恒等式
根据上面的定义和求导法则,很容易推导上述结果,下面选择一个进行推导证明:
(∂vu∂x)ij⇒∂vu∂x=∂vui∂xj=v∂ui∂xj+∂v∂xjui=v∂ui∂xj+ui∂v∂xj=v(∂u∂x)ij+(u∂v∂x)ij=v∂u∂x+u∂v∂x
标量对向量求导恒等式
向量对标量求导恒等式
标量对矩阵求导恒等式
这里选择几个进行证明:
∂(Xa+b)TC(Xa+b)∂X=∂tr((Xa+b)TC(Xa+b))∂X=∂tr((Xa+b)TC(X1a+b))∂X1+∂tr((X2a+b)TC(Xa+b))∂X2=∂tr((Xa+b)TCX1a)∂X1+∂tr((X2a)TC(Xa+b))∂X2=a(Xa+b)TC+(C(Xa+b)aT)T=a(Xa+b)T(C+CT)■
f=∂tr(X−1A)∂X⇒f=∂tr(X−1XX−1A)∂X=∂tr(X−11XX−1A)∂X1+∂tr(X−1X2X−1A)∂X2+∂tr(X−1XX−13A)∂X3=f+X−1AX−1+f=−X−1AX−1■
|X|I=adj(X)X⇒⇒⇒|X|=∑jadj(X)ijXji∀i(∂|X|∂X)ij=∂|X|∂Xji=adj(X)ij∂|X|∂X=adj(X)=|X|X−1■
上面证明过程中用到了伴随矩阵的性质,伴随矩阵的第i行对应的是代数余子式的第i列,而代数余子式的第i列的元素必定去掉了元素X的第i列,也就是说伴随矩阵的第i行元素全部与Xji无关。关于伴随矩阵的具体性质可以参见Adjugate matrix。
其他大部分证明过程类似,或者用了类似的思想,这里由于敲公式太累了,也没有这么多时间,就不一一放出证明过程了。
矩阵对标量求导恒等式
标量对标量求导恒等式