机器学习中的数学:求导技术
符号约定xxx:标量x\boldsymbol{x}x:向量X\boldsymbol{X}X:矩阵tr(A)tr(\boldsymbol{A})tr(A):矩阵A\boldsymbol{A}A的迹⟨A,B⟩\langle \boldsymbol{A},\boldsymbol{B} \rangle⟨A,B⟩:矩阵A\boldsymbol{A}A和矩阵B\boldsymbol{B}B的内积(数量积)A∗
符号约定
xxx:标量
x\boldsymbol{x}x:向量
X\boldsymbol{X}X:矩阵
tr(A)tr(\boldsymbol{A})tr(A):矩阵A\boldsymbol{A}A的迹
⟨A,B⟩\langle \boldsymbol{A},\boldsymbol{B} \rangle⟨A,B⟩:矩阵A\boldsymbol{A}A和矩阵B\boldsymbol{B}B的内积(数量积)
A∗B\boldsymbol{A}*\boldsymbol{B}A∗B:矩阵A\boldsymbol{A}A和矩阵B\boldsymbol{B}B的元素积(Hadamard积)
A⊗B\boldsymbol{A}\otimes\boldsymbol{B}A⊗B:矩阵A\boldsymbol{A}A和矩阵B\boldsymbol{B}B的张量积(Kronecker积)
vec(A)vec(\boldsymbol{A})vec(A):矩阵A\boldsymbol{A}A的(列)向量化
注:本文在实数范围内进行讨论。
一、求导定义与布局方式
1、求导定义
根据求导的自变量和因变量是标量、向量还是矩阵,有9种可能的求导定义:
自变量/因变量 | 标量yyy | 向量y\boldsymbol{y}y | 矩阵Y\boldsymbol{Y}Y |
---|---|---|---|
标量xxx | ∂y∂x\frac{\partial y}{\partial x}∂x∂y | ∂y∂x\frac{\partial \boldsymbol{y}}{\partial x}∂x∂y | ∂Y∂x\frac{\partial \boldsymbol{Y}}{\partial x}∂x∂Y |
向量x\boldsymbol{x}x | ∂y∂x\frac{\partial y}{\partial \boldsymbol{x}}∂x∂y | ∂y∂x\frac{\partial \boldsymbol{y}}{\partial \boldsymbol{x}}∂x∂y | ∂Y∂x\frac{\partial \boldsymbol{Y}}{\partial \boldsymbol{x}}∂x∂Y |
矩阵X\boldsymbol{X}X | ∂y∂X\frac{\partial y}{\partial \boldsymbol{X}}∂X∂y | ∂y∂X\frac{\partial \boldsymbol{y}}{\partial \boldsymbol{X}}∂X∂y | ∂Y∂X\frac{\partial \boldsymbol{Y}}{\partial \boldsymbol{X}}∂X∂Y |
在高等数学里,我们学习了标量对标量的求导,而其他的任何一种求导,最终都是转化成标量之间的求导,并把结果按照一定的方式排列,以向量或者矩阵的形式表达出来。
2、分子布局和分母布局
以一个mmm维向量y\boldsymbol{y}y对标量xxx的求导为例,它的结果∂y∂x\frac{\partial \boldsymbol{y}}{\partial x}∂x∂y也是一个mmm维向量,其每一维对应向量y\boldsymbol{y}y的每一维对标量xxx的导数。问题是,∂y∂x\frac{\partial \boldsymbol{y}}{\partial x}∂x∂y究竟应该表示成行向量,还是列向量呢?答案是都可以。但是在一系列的计算中,任意书写会带来阅读和求解的困难,为此引入布局的约定概念:
- 分子布局(numerator layout):导数的维度以分子为主。
- 分母布局(denominator layout):导数的维度以分母为主。
由此,我们有(表中分子布局简写为N,分母布局简写为D):
自变量/因变量 | 标量yyy | mmm维列向量y\boldsymbol{y}y | p×qp \times qp×q矩阵Y\boldsymbol{Y}Y |
---|---|---|---|
标量xxx | / | N:mmm维列向量 D:mmm维行向量 |
N:p×qp \times qp×q矩阵 D:q×pq \times pq×p矩阵 |
nnn列向量x\boldsymbol{x}x | N:nnn维行向量 D:nnn维列向量 |
N:m×nm \times nm×n矩阵 D:n×mn \times mn×m 矩阵 |
/ |
s×ts \times ts×t矩阵X\boldsymbol{X}X | N:t×st \times st×s矩阵 D:s×ts \times ts×t矩阵 |
/ | / |
注1:mmm维列向量y\boldsymbol{y}y对nnn维列向量x\boldsymbol{x}x求导的结果,若按分子布局排列,即为一个m×nm \times nm×n维的Jacobian矩阵,
注2:分子布局和分母布局的结果相差一个转置。
注3:在机器学习的算法推导里,通常遵循以下布局的规范(本文采用):
- 向量/矩阵对标量求导,采用分子布局
- 标量对向量/矩阵求导,采用分母布局
- 向量对向量求导,采用分母布局
二、标量对矩阵的求导
1、定义法
设yyy为标量,X\boldsymbol{X}X是m×nm \times nm×n维矩阵,那么yyy对X\boldsymbol{X}X的导数为:
∂y∂X=[∂y∂xij]i=1,j=1m,n \frac{\partial y}{\partial \boldsymbol{X}}=\bigg[\frac{\partial y}{\partial x_{ij}}\bigg]_{i=1,j=1}^{m,n} ∂X∂y=[∂xij∂y]i=1,j=1m,n
例1:f=aTXbf=\boldsymbol{a}^T\boldsymbol{X}\boldsymbol{b}f=aTXb,用定义法求∂f∂X\frac{\partial f}{\partial \boldsymbol{X}}∂X∂f。其中a\boldsymbol{a}a是m×1m \times 1m×1列向量,X\boldsymbol{X}X是m×nm \times nm×n矩阵,b\boldsymbol{b}b是n×1n \times 1n×1列向量,fff是标量。
解: 有如下等式:
aTXb=∑i=1m∑j=1naixijbj \boldsymbol{a}^T\boldsymbol{X}\boldsymbol{b}=\sum_{i=1}^{m}\sum_{j=1}^{n}a_ix_{ij}b_j aTXb=i=1∑mj=1∑naixijbj
从而有:
∂f∂xij=∂aTXb∂xij=aibj \frac{\partial f}{\partial x_{ij}}=\frac{\partial \boldsymbol{a}^T\boldsymbol{X}\boldsymbol{b}}{\partial x_{ij}}=a_ib_j ∂xij∂f=∂xij∂aTXb=aibj
所以:
∂f∂X=abT \frac{\partial f}{\partial \boldsymbol{X}}=\boldsymbol{a}\boldsymbol{b}^T ∂X∂f=abT
2、微分法
在一元微积分中,导数(标量对标量的导数)与微分有联系:
df=f′(x)dx df=f'(x)dx df=f′(x)dx
在多元微积分中,梯度(标量对向量的导数)也与微分有联系:
df=∑i=1n∂f∂xidxi=∂f∂xTdx df=\sum_{i=1}^{n}\frac{\partial f}{\partial x_i}dx_i=\frac{\partial f}{\partial \boldsymbol{x}}^Td\boldsymbol{x} df=i=1∑n∂xi∂fdxi=∂x∂fTdx
把多元微积分中的梯度与微分之间的联系拓展到矩阵,则有:
df=∑i=1m∑j=1n∂f∂xijdxij=tr(∂f∂XTdX) df=\sum_{i=1}^{m}\sum_{j=1}^{n}\frac{\partial f}{\partial x_{ij}}dx_{ij}=tr\bigg(\frac{\partial f}{\partial \boldsymbol{X}}^Td\boldsymbol{X}\bigg) df=i=1∑mj=1∑n∂xij∂fdxij=tr(∂X∂fTdX)
也就是说,全微分dfdfdf是导数∂f∂X(m×n)\frac{\partial f}{\partial \boldsymbol{X}}(m \times n)∂X∂f(m×n)与微分矩阵dX(m×n)d\boldsymbol{X}(m \times n)dX(m×n)的内积(数量积)。同时,根据矩阵的内积和矩阵的迹之间的关系,我们可以如下求出标量fff对矩阵X\boldsymbol{X}X的导数:
- (1)根据给定的fff求出dfdfdf。
- (2)给dfdfdf套上迹trtrtr,由于dfdfdf是标量,故有df=tr(df)df=tr(df)df=tr(df)。
- (3)化简tr(df)tr(df)tr(df),根据导数与微分的联系df=tr(∂f∂XTdX)df=tr\bigg(\frac{\partial f}{\partial \boldsymbol{X}}^Td\boldsymbol{X}\bigg)df=tr(∂X∂fTdX)求得∂f∂X\frac{\partial f}{\partial \boldsymbol{X}}∂X∂f。
例2:f=aTXbf=\boldsymbol{a}^T\boldsymbol{X}\boldsymbol{b}f=aTXb,用微分法求∂f∂X\frac{\partial f}{\partial \boldsymbol{X}}∂X∂f。其中a\boldsymbol{a}a是m×1m \times 1m×1列向量,X\boldsymbol{X}X是m×nm \times nm×n矩阵,b\boldsymbol{b}b是n×1n \times 1n×1列向量,fff是标量。
解:(1)求出dfdfdf:
df=daTXb+aTdXb+aTXdb=aTdXb df=d\boldsymbol{a}^T\boldsymbol{X}\boldsymbol{b}+\boldsymbol{a}^Td\boldsymbol{X}\boldsymbol{b}+\boldsymbol{a}^T\boldsymbol{X}d\boldsymbol{b}=\boldsymbol{a}^Td\boldsymbol{X}\boldsymbol{b} df=daTXb+aTdXb+aTXdb=aTdXb
(2)给dfdfdf套上迹trtrtr并化简:
df=tr(df)=tr(aTdXb)=tr(baTdX)=tr((abT)TdX) df=tr(df)=tr(\boldsymbol{a}^Td\boldsymbol{X}\boldsymbol{b})=tr(\boldsymbol{b}\boldsymbol{a}^Td\boldsymbol{X})=tr((\boldsymbol{a}\boldsymbol{b}^T)^Td\boldsymbol{X}) df=tr(df)=tr(aTdXb)=tr(baTdX)=tr((abT)TdX)
(3)根据导数与微分的联系df=tr(∂f∂XTdX)df=tr\bigg(\frac{\partial f}{\partial \boldsymbol{X}}^Td\boldsymbol{X}\bigg)df=tr(∂X∂fTdX),有:
∂f∂X=abT \frac{\partial f}{\partial \boldsymbol{X}}=\boldsymbol{a}\boldsymbol{b}^T ∂X∂f=abT
例3:f=aTexp(Xb)f=\boldsymbol{a}^Texp(\boldsymbol{X}\boldsymbol{b})f=aTexp(Xb),求∂f∂X\frac{\partial f}{\partial \boldsymbol{X}}∂X∂f。其中a\boldsymbol{a}a是m×1m \times 1m×1列向量,X\boldsymbol{X}X是m×nm \times nm×n矩阵,b\boldsymbol{b}b是n×1n \times 1n×1列向量,expexpexp是逐元素求指数函数,fff是标量。
解:(1)求出dfdfdf:
df=aT(exp(Xb)∗(dXb)) df=\boldsymbol{a}^T(exp(\boldsymbol{X}\boldsymbol{b})*(d\boldsymbol{X}\boldsymbol{b})) df=aT(exp(Xb)∗(dXb))
(2)给dfdfdf套上迹trtrtr并化简:
df=tr(df)=tr(aT(exp(Xb)∗(dXb)))=tr((a∗exp(Xb))TdXb)=tr(b(a∗exp(Xb))TdX)=tr(((a∗exp(Xb))bT)TdX) \begin{aligned} df & =tr(df)=tr(\boldsymbol{a}^T(exp(\boldsymbol{X}\boldsymbol{b})*(d\boldsymbol{X}\boldsymbol{b}))) \\ & = tr((\boldsymbol{a}*exp(\boldsymbol{X}\boldsymbol{b}))^Td\boldsymbol{X}\boldsymbol{b}) \\ & = tr(\boldsymbol{b}(\boldsymbol{a}*exp(\boldsymbol{X}\boldsymbol{b}))^Td\boldsymbol{X}) \\ & = tr(((\boldsymbol{a}*exp(\boldsymbol{X}\boldsymbol{b}))\boldsymbol{b}^T)^Td\boldsymbol{X}) \end{aligned} df=tr(df)=tr(aT(exp(Xb)∗(dXb)))=tr((a∗exp(Xb))TdXb)=tr(b(a∗exp(Xb))TdX)=tr(((a∗exp(Xb))bT)TdX)
(3)根据导数与微分的联系df=tr(∂f∂XTdX)df=tr\bigg(\frac{\partial f}{\partial \boldsymbol{X}}^Td\boldsymbol{X}\bigg)df=tr(∂X∂fTdX),有:
∂f∂X=(a∗exp(Xb))bT \frac{\partial f}{\partial \boldsymbol{X}}=(\boldsymbol{a}*exp(\boldsymbol{X}\boldsymbol{b}))\boldsymbol{b}^T ∂X∂f=(a∗exp(Xb))bT
例4:l=∣∣Xw−y∣∣2l=|| \boldsymbol{X}\boldsymbol{w}-\boldsymbol{y} ||^2l=∣∣Xw−y∣∣2,求w\boldsymbol{w}w的最小二乘估计,即求∂l∂w\frac{\partial l}{\partial \boldsymbol{w}}∂w∂l的零点。其中y\boldsymbol{y}y是m×1m \times 1m×1列向量,X\boldsymbol{X}X是m×nm \times nm×n 矩阵,w\boldsymbol{w}w是n×1n \times 1n×1列向量,lll是标量。
解:(1)求出dldldl:
易知:
l=∣∣Xw−y∣∣2=(Xw−y)T(Xw−y) l=|| \boldsymbol{X}\boldsymbol{w}-\boldsymbol{y} ||^2=(\boldsymbol{X}\boldsymbol{w}-\boldsymbol{y})^T(\boldsymbol{X}\boldsymbol{w}-\boldsymbol{y}) l=∣∣Xw−y∣∣2=(Xw−y)T(Xw−y)
从而有:
dl=(Xdw)T(Xw−y)+(Xw−y)T(Xdw) dl=(\boldsymbol{X}d\boldsymbol{w})^T(\boldsymbol{X}\boldsymbol{w}-\boldsymbol{y})+(\boldsymbol{X}\boldsymbol{w}-\boldsymbol{y})^T(\boldsymbol{X}d\boldsymbol{w}) dl=(Xdw)T(Xw−y)+(Xw−y)T(Xdw)
(2)给dldldl套上迹trtrtr并化简:
dl=tr(dl)=tr((Xdw)T(Xw−y)+(Xw−y)T(Xdw))=tr(2(Xw−y)T(Xdw))=tr((2XT(Xw−y))Tdw) \begin{aligned} dl & =tr(dl)=tr((\boldsymbol{X}d\boldsymbol{w})^T(\boldsymbol{X}\boldsymbol{w}-\boldsymbol{y})+(\boldsymbol{X}\boldsymbol{w}-\boldsymbol{y})^T(\boldsymbol{X}d\boldsymbol{w})) \\ & = tr(2(\boldsymbol{X}\boldsymbol{w}-\boldsymbol{y})^T(\boldsymbol{X}d\boldsymbol{w})) \\ & = tr((2\boldsymbol{X}^T(\boldsymbol{X}\boldsymbol{w}-\boldsymbol{y}))^Td\boldsymbol{w}) \end{aligned} dl=tr(dl)=tr((Xdw)T(Xw−y)+(Xw−y)T(Xdw))=tr(2(Xw−y)T(Xdw))=tr((2XT(Xw−y))Tdw)
(3)根据导数与微分的联系dl=tr(∂l∂wTdw)dl=tr\bigg(\frac{\partial l}{\partial \boldsymbol{w}}^Td\boldsymbol{w}\bigg)dl=tr(∂w∂lTdw),有:
∂l∂w=2XT(Xw−y) \frac{\partial l}{\partial \boldsymbol{w}}=2\boldsymbol{X}^T(\boldsymbol{X}\boldsymbol{w}-\boldsymbol{y}) ∂w∂l=2XT(Xw−y)
(4)求∂l∂w\frac{\partial l}{\partial \boldsymbol{w}}∂w∂l的零点:
令∂l∂w=0\frac{\partial l}{\partial \boldsymbol{w}}=\boldsymbol{0}∂w∂l=0,有:
XTXw=XTy \boldsymbol{X}^T\boldsymbol{X}\boldsymbol{w}=\boldsymbol{X}^T\boldsymbol{y} XTXw=XTy
得到w\boldsymbol{w}w的最小二乘估计为:
w=(XTX)−1XTy \boldsymbol{w}=(\boldsymbol{X}^T\boldsymbol{X})^{-1}\boldsymbol{X}^T\boldsymbol{y} w=(XTX)−1XTy
例5:l=−yTln(softmax(Wx))l=-\boldsymbol{y}^Tln(softmax(\boldsymbol{W}\boldsymbol{x}))l=−yTln(softmax(Wx)),求∂l∂W\frac{\partial l}{\partial \boldsymbol{W}}∂W∂l。其中y\boldsymbol{y}y是除一个元素为111外其他元素为000的m×1m \times 1m×1列向量,W\boldsymbol{W}W是m×nm \times nm×n矩阵,x\boldsymbol{x}x是n×1n \times 1n×1列向量,lll是标量;lnlnln表示逐元素求自然对数,softmax(a)=exp(a)1Texp(a)softmax(\boldsymbol{a})=\frac{exp(\boldsymbol{a})}{\boldsymbol{1}^Texp(\boldsymbol{a})}softmax(a)=1Texp(a)exp(a),其中exp(a)exp(\boldsymbol{a})exp(a)表示逐元素求指数函数,1\boldsymbol{1}1表示全111的列向量。
解:(1)求出dldldl:
注意到:ln(u/c)=ln(u)−1ln(c)ln(\boldsymbol{u}/c)=ln(\boldsymbol{u})-\boldsymbol{1}ln(c)ln(u/c)=ln(u)−1ln(c),以及yT1=1\boldsymbol{y}^T\boldsymbol{1}=1yT1=1,有:
l=−yTln(exp(Wx))+yT1ln(1Texp(Wx))=−yTWx+ln(1Texp(Wx)) \begin{aligned} l & =-\boldsymbol{y}^Tln(exp(\boldsymbol{W}\boldsymbol{x}))+\boldsymbol{y}^T\boldsymbol{1}ln(\boldsymbol{1}^Texp(\boldsymbol{W}\boldsymbol{x})) \\ & = -\boldsymbol{y}^T\boldsymbol{W}\boldsymbol{x}+ln(\boldsymbol{1}^Texp(\boldsymbol{W}\boldsymbol{x})) \end{aligned} l=−yTln(exp(Wx))+yT1ln(1Texp(Wx))=−yTWx+ln(1Texp(Wx))
从而:
dl=−yTdWx+1T(exp(Wx)∗(dWx))1Texp(Wx)=−yTdWx+exp(Wx)T(dWx)1Texp(Wx)=(softmax(Wx)−y)TdWx \begin{aligned} dl & = -\boldsymbol{y}^Td\boldsymbol{W}\boldsymbol{x}+\frac{\boldsymbol{1}^T(exp(\boldsymbol{W}\boldsymbol{x})*(d\boldsymbol{W}\boldsymbol{x}))}{\boldsymbol{1}^Texp(\boldsymbol{W}\boldsymbol{x})} \\ & = -\boldsymbol{y}^Td\boldsymbol{W}\boldsymbol{x}+\frac{exp(\boldsymbol{W}\boldsymbol{x})^T(d\boldsymbol{W}\boldsymbol{x})}{\boldsymbol{1}^Texp(\boldsymbol{W}\boldsymbol{x})} \\ & = (softmax(\boldsymbol{W}\boldsymbol{x})-\boldsymbol{y})^Td\boldsymbol{W}\boldsymbol{x} \end{aligned} dl=−yTdWx+1Texp(Wx)1T(exp(Wx)∗(dWx))=−yTdWx+1Texp(Wx)exp(Wx)T(dWx)=(softmax(Wx)−y)TdWx
(2)给dldldl套上迹trtrtr并化简:
dl=tr(dl)=tr((softmax(Wx)−y)TdWx)=tr(x(softmax(Wx)−y)TdW)=tr(((softmax(Wx)−y)xT)TdW) \begin{aligned} dl & = tr(dl)=tr((softmax(\boldsymbol{W}\boldsymbol{x})-\boldsymbol{y})^Td\boldsymbol{W}\boldsymbol{x}) \\ & = tr(\boldsymbol{x}(softmax(\boldsymbol{W}\boldsymbol{x})-\boldsymbol{y})^Td\boldsymbol{W}) \\ & = tr(((softmax(\boldsymbol{W}\boldsymbol{x})-\boldsymbol{y})\boldsymbol{x}^T)^Td\boldsymbol{W}) \end{aligned} dl=tr(dl)=tr((softmax(Wx)−y)TdWx)=tr(x(softmax(Wx)−y)TdW)=tr(((softmax(Wx)−y)xT)TdW)
(3)根据导数与微分的联系dl=tr(∂l∂WTdW)dl=tr\bigg(\frac{\partial l}{\partial \boldsymbol{W}}^Td\boldsymbol{W}\bigg)dl=tr(∂W∂lTdW),有:
∂l∂W=(softmax(Wx)−y)xT \frac{\partial l}{\partial \boldsymbol{W}}=(softmax(\boldsymbol{W}\boldsymbol{x})-\boldsymbol{y})\boldsymbol{x}^T ∂W∂l=(softmax(Wx)−y)xT
例6: 求tr(AB)tr(\boldsymbol{A}\boldsymbol{B})tr(AB)对矩阵A\boldsymbol{A}A的导数,其中矩阵A\boldsymbol{A}A和矩阵BT\boldsymbol{B}^TBT的形状相同。
解:(1)令f=tr(AB)f=tr(\boldsymbol{A}\boldsymbol{B})f=tr(AB),求出dfdfdf:
df=d(tr(AB))=tr(d(AB))=tr((dA)B)=tr(BdA) df=d(tr(\boldsymbol{A}\boldsymbol{B}))=tr(d(\boldsymbol{A}\boldsymbol{B}))=tr((d\boldsymbol{A})\boldsymbol{B})=tr(\boldsymbol{B}d\boldsymbol{A}) df=d(tr(AB))=tr(d(AB))=tr((dA)B)=tr(BdA)
(2)根据导数与微分的联系df=tr(∂f∂ATdA)df=tr\bigg(\frac{\partial f}{\partial \boldsymbol{A}}^Td\boldsymbol{A}\bigg)df=tr(∂A∂fTdA),有:
∂f∂A=BT \frac{\partial f}{\partial \boldsymbol{A}}=\boldsymbol{B}^T ∂A∂f=BT
三、向量对向量的求导
1、定义法
设y\boldsymbol{y}y为m×1m \times 1m×1列向量,x\boldsymbol{x}x是n×1n \times 1n×1列向量,那么y\boldsymbol{y}y对x\boldsymbol{x}x的导数(分母布局)为n×mn \times mn×m维矩阵:
∂y∂x=(∂y1∂x1∂y2∂x1…∂ym∂x1∂y1∂x2∂y2∂x2…∂ym∂x2…………∂y1∂xn∂y2∂xn…∂ym∂xn) \frac{\partial \boldsymbol{y}}{\partial \boldsymbol{x}}= \begin{pmatrix} \frac{\partial y_1}{\partial x_1} & \frac{\partial y_2}{\partial x_1} & \dots & \frac{\partial y_m}{\partial x_1} \\ \frac{\partial y_1}{\partial x_2} & \frac{\partial y_2}{\partial x_2} & \dots & \frac{\partial y_m}{\partial x_2} \\ \dots & \dots & \dots & \dots \\ \frac{\partial y_1}{\partial x_n} & \frac{\partial y_2}{\partial x_n} & \dots & \frac{\partial y_m}{\partial x_n} \\ \end{pmatrix} ∂x∂y=⎝⎜⎜⎜⎛∂x1∂y1∂x2∂y1…∂xn∂y1∂x1∂y2∂x2∂y2…∂xn∂y2…………∂x1∂ym∂x2∂ym…∂xn∂ym⎠⎟⎟⎟⎞
2、微分法
列向量f\boldsymbol{f}f对列向量x\boldsymbol{x}x的导数(分母布局)与微分有如下联系:
df=∂f∂xTdx d\boldsymbol{f}=\frac{\partial \boldsymbol{f}}{\partial \boldsymbol{x}}^Td\boldsymbol{x} df=∂x∂fTdx
四、求导的链式法则
有时候并不需要使用链式法则,比如下面的例子:
例7:f=tr(YTMY),Y=σ(WX)f=tr(\boldsymbol{Y}^T\boldsymbol{M}\boldsymbol{Y}),Y=\sigma(\boldsymbol{W}\boldsymbol{X})f=tr(YTMY),Y=σ(WX),求∂f∂X\frac{\partial f}{\partial \boldsymbol{X}}∂X∂f。其中W\boldsymbol{W}W是l×ml \times ml×m矩阵,X\boldsymbol{X}X是m×nm \times nm×n矩阵,Y\boldsymbol{Y}Y是l×nl \times nl×n矩阵,M\boldsymbol{M}M是l×ll \times ll×l对称矩阵,σ\sigmaσ是逐元素函数,fff是标量。
解: 先求出∂f∂Y\frac{\partial f}{\partial \boldsymbol{Y}}∂Y∂f:
(1)求出dfdfdf(自变量Y\boldsymbol{Y}Y):
df=tr((dY)TMY)+tr(YTMdY)=tr(YTMTdY)+tr(YTMdY)=tr(YT(M+MT)dY) \begin{aligned} df & = tr((d\boldsymbol{Y})^T\boldsymbol{M}\boldsymbol{Y})+tr(\boldsymbol{Y}^T\boldsymbol{M}d\boldsymbol{Y}) \\ & = tr(\boldsymbol{Y}^T\boldsymbol{M}^Td\boldsymbol{Y})+tr(\boldsymbol{Y}^T\boldsymbol{M}d\boldsymbol{Y}) \\ & = tr(\boldsymbol{Y}^T(\boldsymbol{M}+\boldsymbol{M}^T)d\boldsymbol{Y}) \end{aligned} df=tr((dY)TMY)+tr(YTMdY)=tr(YTMTdY)+tr(YTMdY)=tr(YT(M+MT)dY)
(2)根据导数与微分的联系df=tr(∂f∂YTdY)df=tr\bigg(\frac{\partial f}{\partial \boldsymbol{Y}}^Td\boldsymbol{Y}\bigg)df=tr(∂Y∂fTdY),有:
∂f∂Y=(MT+M)Y=2MY \frac{\partial f}{\partial \boldsymbol{Y}}=(\boldsymbol{M}^T+\boldsymbol{M})\boldsymbol{Y}=2\boldsymbol{M}\boldsymbol{Y} ∂Y∂f=(MT+M)Y=2MY
再求∂f∂X\frac{\partial f}{\partial \boldsymbol{X}}∂X∂f:
(3)求出dfdfdf(自变量X\boldsymbol{X}X):
df=tr(∂f∂YTdY)=tr(∂f∂YT(σ′(WX)∗(WdX)))=tr((∂f∂Y∗σ′(WX))TWdX) \begin{aligned} df & = tr\bigg(\frac{\partial f}{\partial \boldsymbol{Y}}^Td\boldsymbol{Y}\bigg) \\ & = tr\bigg(\frac{\partial f}{\partial \boldsymbol{Y}}^T(\sigma'(\boldsymbol{W}\boldsymbol{X})*(\boldsymbol{W}d\boldsymbol{X}))\bigg) \\ & = tr\Bigg(\bigg(\frac{\partial f}{\partial \boldsymbol{Y}}*\sigma'(\boldsymbol{W}\boldsymbol{X})\bigg)^T\boldsymbol{W}d\boldsymbol{X}\Bigg) \end{aligned} df=tr(∂Y∂fTdY)=tr(∂Y∂fT(σ′(WX)∗(WdX)))=tr((∂Y∂f∗σ′(WX))TWdX)
(4)根据导数与微分的联系df=tr(∂f∂XTdX)df=tr\bigg(\frac{\partial f}{\partial \boldsymbol{X}}^Td\boldsymbol{X}\bigg)df=tr(∂X∂fTdX),有:
∂f∂X=WT(∂f∂Y∗σ′(WX))=WT((2Mσ(WX))∗σ′(WX)) \frac{\partial f}{\partial \boldsymbol{X}} =\boldsymbol{W}^T\bigg(\frac{\partial f}{\partial \boldsymbol{Y}}*\sigma'(\boldsymbol{W}\boldsymbol{X})\bigg) =\boldsymbol{W}^T((2\boldsymbol{M}\sigma(\boldsymbol{W\boldsymbol{X}}))*\sigma'(\boldsymbol{W}\boldsymbol{X})) ∂X∂f=WT(∂Y∂f∗σ′(WX))=WT((2Mσ(WX))∗σ′(WX))
但是很多时候,求导的自变量和因变量间有复杂的链式求导关系,若不使用链式法则计算会有些麻烦。
1、向量对向量求导的链式法则
设向量x(m×1),y(n×1),z(p×1)\boldsymbol{x}(m \times 1),\boldsymbol{y}(n \times 1),\boldsymbol{z}(p \times 1)x(m×1),y(n×1),z(p×1)存在如下依赖关系:
x→y→z \boldsymbol{x}\rightarrow\boldsymbol{y}\rightarrow\boldsymbol{z} x→y→z
则我们有如下链式法则:
∂z∂x=∂y∂x∂z∂y \frac{\partial \boldsymbol{z}}{\partial\boldsymbol{x}}=\frac{\partial \boldsymbol{y}}{\partial\boldsymbol{x}}\frac{\partial \boldsymbol{z}}{\partial\boldsymbol{y}} ∂x∂z=∂x∂y∂y∂z
从维度的角度可以验证上述做法的合理性:
等式左侧是一个m×pm \times pm×p维的矩阵,等式右侧是一个m×nm \times nm×n维矩阵和一个n×pn \times pn×p维矩阵的积,因此维度是相容的。
2、标量对多个向量求导的链式法则
设有依赖关系:
y1→y2→⋯→yn→z \boldsymbol{y}_1\rightarrow\boldsymbol{y}_2\rightarrow\dots\rightarrow\boldsymbol{y}_n\rightarrow z y1→y2→⋯→yn→z
则我们有如下链式法则:
∂z∂y1=∂y2∂y1∂y3∂y2…∂yn∂yn−1∂z∂yn \frac{\partial z}{\partial\boldsymbol{y}_1}=\frac{\partial \boldsymbol{y}_2}{\partial\boldsymbol{y}_1}\frac{\partial \boldsymbol{y}_3}{\partial\boldsymbol{y}_2}\dots\frac{\partial \boldsymbol{y}_n}{\partial\boldsymbol{y}_{n-1}}\frac{\partial z}{\partial\boldsymbol{y}_n} ∂y1∂z=∂y1∂y2∂y2∂y3…∂yn−1∂yn∂yn∂z
3、标量对多个矩阵求导的链式法则
设有依赖关系:
X→Y→z \boldsymbol{X}\rightarrow\boldsymbol{Y}\rightarrow z X→Y→z
则我们有如下链式法则:
∂z∂xij=∑k,l∂z∂ykl∂ykl∂xij=tr((∂z∂Y)T∂Y∂xij) \frac{\partial z}{\partial x_{ij}} =\sum_{k,l}\frac{\partial z}{\partial y_{kl}}\frac{\partial y_{kl}}{\partial x_{ij}} =tr\bigg((\frac{\partial z}{\partial \boldsymbol{Y}})^T\frac{\partial \boldsymbol{Y}}{\partial x_{ij}}\bigg) ∂xij∂z=k,l∑∂ykl∂z∂xij∂ykl=tr((∂Y∂z)T∂xij∂Y)
矩阵对矩阵的求导比较复杂,我们在下一节专门讨论。这里只是给出了对矩阵中的任一标量的链式求导方法,即如何求解∂z∂xij\frac{\partial z}{\partial x_{ij}}∂xij∂z,而没有给出如何求解整体∂z∂X\frac{\partial z}{\partial \boldsymbol{X}}∂X∂z。不过对于∂z∂X\frac{\partial z}{\partial \boldsymbol{X}}∂X∂z的求解,还是有一些有用的结论容易获得,比如下面这个例子。
例8:z=f(Y),Y=AX+Bz=f(\boldsymbol{Y}),\boldsymbol{Y}=\boldsymbol{A}\boldsymbol{X}+\boldsymbol{B}z=f(Y),Y=AX+B,求∂z∂X\frac{\partial z}{\partial\boldsymbol{X}}∂X∂z其中A,B,X,Y\boldsymbol{A},\boldsymbol{B},\boldsymbol{X},\boldsymbol{Y}A,B,X,Y都是矩阵,zzz是标量。
解:(1)由标量对矩阵的导数与微分的关系以及矩阵微分运算,有:
dz=tr(∂z∂YTdY)=tr(∂z∂YTAdX) dz = tr\bigg(\frac{\partial z}{\partial \boldsymbol{Y}}^Td\boldsymbol{Y}\bigg) =tr\bigg(\frac{\partial z}{\partial \boldsymbol{Y}}^T\boldsymbol{A}d\boldsymbol{X}\bigg) dz=tr(∂Y∂zTdY)=tr(∂Y∂zTAdX)
(2)再由dz=tr(∂z∂XTdX)dz=tr\bigg(\frac{\partial z}{\partial \boldsymbol{X}}^Td\boldsymbol{X}\bigg)dz=tr(∂X∂zTdX),有:
∂z∂X=AT∂z∂Y \frac{\partial z}{\partial\boldsymbol{X}}=\boldsymbol{A}^T\frac{\partial z}{\partial \boldsymbol{Y}} ∂X∂z=AT∂Y∂z
五、矩阵对矩阵的求导
1、基本方法
我们首先对这2个矩阵Y(p×q)\boldsymbol{Y}(p \times q)Y(p×q)和X(m×n)\boldsymbol{X}(m \times n)X(m×n)进行向量化:
vec(Y)=[y11,…,yp1,y12,…,yp2,…,y1q,…,ypq]Tvec(X)=[x11,…,xm1,x12,…,xm2,…,x1n,…,xmn]T \begin{aligned} vec(\boldsymbol{Y}) & = [y_{11},\dots,y_{p1},y_{12},\dots,y_{p2},\dots,y_{1q},\dots,y_{pq}]^T \\ vec(\boldsymbol{X}) & = [x_{11},\dots,x_{m1},x_{12},\dots,x_{m2},\dots,x_{1n},\dots,x_{mn}]^T \end{aligned} vec(Y)vec(X)=[y11,…,yp1,y12,…,yp2,…,y1q,…,ypq]T=[x11,…,xm1,x12,…,xm2,…,x1n,…,xmn]T
从而我们可以把矩阵对矩阵的导数转化为向量对向量的导数(分母布局):
∂Y∂X=∂vec(Y)∂vec(X) \frac{\partial \boldsymbol{Y}}{\partial \boldsymbol{X}}=\frac{\partial vec(\boldsymbol{Y})}{\partial vec(\boldsymbol{X})} ∂X∂Y=∂vec(X)∂vec(Y)
其中,∂Y∂X\frac{\partial \boldsymbol{Y}}{\partial \boldsymbol{X}}∂X∂Y是一个mn×pqmn \times pqmn×pq维的矩阵。并且,根据向量对向量的导数和微分的关系,我们有:
vec(dY)=∂Y∂XTvec(dX) vec(d\boldsymbol{Y})=\frac{\partial \boldsymbol{Y}}{\partial \boldsymbol{X}}^Tvec(d\boldsymbol{X}) vec(dY)=∂X∂YTvec(dX)
按此定义,∂f∂X\frac{\partial f}{\partial \boldsymbol{X}}∂X∂f的定义会产生歧义,设X\boldsymbol{X}X是m×nm \times nm×n维矩阵,则:
- 按照标量对矩阵求导的原则,结果应该是一个m×nm \times nm×n维矩阵。
- 按照矩阵对矩阵求导的原则,结果应该是一个mn×1mn \times 1mn×1维矩阵。
为了避免混淆,用记号∇Xf\nabla_{\boldsymbol{X}}f∇Xf表示标量对矩阵导数,而∂f∂X=vec(∇Xf)\frac{\partial f}{\partial \boldsymbol{X}}=vec(\nabla_{\boldsymbol{X}}f)∂X∂f=vec(∇Xf)。
标量对矩阵的二阶导数,又称为Hessian矩阵,定义如下:
∇X2f=∂2f∂X2=∂∇Xf∂X \nabla_{\boldsymbol{X}}^2f=\frac{\partial^2 f}{\partial \boldsymbol{X}^2}=\frac{\partial \nabla_{\boldsymbol{X}}f}{\partial \boldsymbol{X}} ∇X2f=∂X2∂2f=∂X∂∇Xf
其中,∇X2f\nabla_{\boldsymbol{X}}^2f∇X2f是一个mn×mnmn \times mnmn×mn维的对称矩阵。
微分法求矩阵F\boldsymbol{F}F对矩阵X\boldsymbol{X}X的导数的一般步骤概括如下:
- (1)根据给定的F\boldsymbol{F}F求出dFd\boldsymbol{F}dF。
- (2)将dFd\boldsymbol{F}dF向量化为vec(dF)vec(d\boldsymbol{F})vec(dF),并进行化简。
- (3)根据导数与微分的关系vec(dF)=∂F∂XTvec(dX)vec(d\boldsymbol{F})=\frac{\partial \boldsymbol{F}}{\partial \boldsymbol{X}}^Tvec(d\boldsymbol{X})vec(dF)=∂X∂FTvec(dX),求得∂F∂X\frac{\partial \boldsymbol{F}}{\partial \boldsymbol{X}}∂X∂F。
2、链式法则
设有依赖关系:
X→Y→Z \boldsymbol{X}\rightarrow\boldsymbol{Y}\rightarrow\boldsymbol{Z} X→Y→Z
根据导数与微分的联系,有:
vec(dF)=∂F∂YTvec(dY)=∂F∂YT∂Y∂XTvec(dX) vec(d\boldsymbol{F})=\frac{\partial \boldsymbol{F}}{\partial \boldsymbol{Y}}^Tvec(d\boldsymbol{Y}) =\frac{\partial \boldsymbol{F}}{\partial \boldsymbol{Y}}^T\frac{\partial \boldsymbol{Y}}{\partial \boldsymbol{X}}^Tvec(d\boldsymbol{X}) vec(dF)=∂Y∂FTvec(dY)=∂Y∂FT∂X∂YTvec(dX)
从而有链式法则:
∂F∂X=∂Y∂X∂F∂Y \frac{\partial \boldsymbol{F}}{\partial \boldsymbol{X}}=\frac{\partial \boldsymbol{Y}}{\partial \boldsymbol{X}}\frac{\partial \boldsymbol{F}}{\partial \boldsymbol{Y}} ∂X∂F=∂X∂Y∂Y∂F
例9:F=AX\boldsymbol{F}=\boldsymbol{A}\boldsymbol{X}F=AX,X\boldsymbol{X}X是m×nm \times nm×n维矩阵,求∂F∂X\frac{\partial \boldsymbol{F}}{\partial \boldsymbol{X}}∂X∂F。
解:(1)根据给定的F\boldsymbol{F}F求出dFd\boldsymbol{F}dF:
dF=AdX d\boldsymbol{F}=\boldsymbol{A}d\boldsymbol{X} dF=AdX
(2)将dFd\boldsymbol{F}dF向量化为vec(dF)vec(d\boldsymbol{F})vec(dF),并进行化简:
vec(dF)=vec(AdX)=(In⊗A)vec(dX) vec(d\boldsymbol{F})=vec(\boldsymbol{A}d\boldsymbol{X})=(\boldsymbol{I}_n \otimes \boldsymbol{A})vec(d\boldsymbol{X}) vec(dF)=vec(AdX)=(In⊗A)vec(dX)
(3)根据导数与微分的关系vec(dF)=∂F∂XTvec(dX)vec(d\boldsymbol{F})=\frac{\partial \boldsymbol{F}}{\partial \boldsymbol{X}}^Tvec(d\boldsymbol{X})vec(dF)=∂X∂FTvec(dX),求得∂F∂X\frac{\partial \boldsymbol{F}}{\partial \boldsymbol{X}}∂X∂F:
∂F∂X=In⊗AT \frac{\partial \boldsymbol{F}}{\partial \boldsymbol{X}}=\boldsymbol{I}_n \otimes \boldsymbol{A}^T ∂X∂F=In⊗AT
例10:f=ln∣X∣f=ln|\boldsymbol{X}|f=ln∣X∣,X\boldsymbol{X}X是n×nn \times nn×n矩阵,求∇Xf\nabla_{\boldsymbol{X}}f∇Xf和∇X2f\nabla_{\boldsymbol{X}}^2f∇X2f。
解:(1)首先求∇Xf\nabla_{\boldsymbol{X}}f∇Xf:
df=tr(X−1dX)df=tr(\boldsymbol{X}^{-1}d\boldsymbol{X})df=tr(X−1dX),故∇Xf=(X−1)T\nabla_{\boldsymbol{X}}f=(\boldsymbol{X}^{-1})^T∇Xf=(X−1)T。于是问题转化为:F=(X−1)T\boldsymbol{F}=(\boldsymbol{X}^{-1})^TF=(X−1)T,求∂F∂X\frac{\partial \boldsymbol{F}}{\partial \boldsymbol{X}}∂X∂F。
(2)根据给定的F\boldsymbol{F}F求出dFd\boldsymbol{F}dF:
dF=−(X−1dXX−1)T d\boldsymbol{F}=-(\boldsymbol{X}^{-1}d\boldsymbol{X}\boldsymbol{X}^{-1})^T dF=−(X−1dXX−1)T
(3)将dFd\boldsymbol{F}dF向量化为vec(dF)vec(d\boldsymbol{F})vec(dF),并进行化简:
vec(dF)=−Knnvec(X−1dXX−1)=−Knn((X−1)T∗X−1)vec(dX) vec(d\boldsymbol{F})=-\boldsymbol{K}_{nn}vec(\boldsymbol{X}^{-1}d\boldsymbol{X}\boldsymbol{X}^{-1})=-\boldsymbol{K}_{nn}((\boldsymbol{X}^{-1})^T*\boldsymbol{X}^{-1})vec(d\boldsymbol{X}) vec(dF)=−Knnvec(X−1dXX−1)=−Knn((X−1)T∗X−1)vec(dX)
其中Knn\boldsymbol{K}_{nn}Knn是一个交换矩阵。
(4)根据导数与微分的关系vec(dF)=∂F∂XTvec(dX)vec(d\boldsymbol{F})=\frac{\partial \boldsymbol{F}}{\partial \boldsymbol{X}}^Tvec(d\boldsymbol{X})vec(dF)=∂X∂FTvec(dX),求得∂F∂X\frac{\partial \boldsymbol{F}}{\partial \boldsymbol{X}}∂X∂F:
∂F∂X=∂F∂XT=−Knn((X−1)T∗X−1) \frac{\partial \boldsymbol{F}}{\partial \boldsymbol{X}}=\frac{\partial \boldsymbol{F}}{\partial \boldsymbol{X}}^T =-\boldsymbol{K}_{nn}((\boldsymbol{X}^{-1})^T*\boldsymbol{X}^{-1}) ∂X∂F=∂X∂FT=−Knn((X−1)T∗X−1)
例11:F=Aexp(XB)\boldsymbol{F}=\boldsymbol{A}exp(\boldsymbol{X}\boldsymbol{B})F=Aexp(XB),求∂F∂X\frac{\partial \boldsymbol{F}}{\partial \boldsymbol{X}}∂X∂F。其中A\boldsymbol{A}A是l×ml \times ml×m矩阵,X\boldsymbol{X}X是m×nm \times nm×n矩阵,B\boldsymbol{B}B是n×pn \times pn×p矩阵,expexpexp为逐元素求指数函数。
解:(1)根据给定的F\boldsymbol{F}F求出dFd\boldsymbol{F}dF:
dF=A(exp(XB)∗(dXB)) d\boldsymbol{F}=\boldsymbol{A}(exp(\boldsymbol{X}\boldsymbol{B})*(d\boldsymbol{X}\boldsymbol{B})) dF=A(exp(XB)∗(dXB))
(2)将dFd\boldsymbol{F}dF向量化为vec(dF)vec(d\boldsymbol{F})vec(dF),并进行化简:
vec(dF)=(Ip⊗A)vec(exp(XB)∗(dXB))=(Ip⊗A)diag(exp(XB))vec(dXB)=(Ip⊗A)diag(exp(XB))(BT⊗Im)vec(dX) \begin{aligned} vec(d\boldsymbol{F}) & = (\boldsymbol{I}_p \otimes \boldsymbol{A})vec(exp(\boldsymbol{X}\boldsymbol{B})*(d\boldsymbol{X}\boldsymbol{B})) \\ & = (\boldsymbol{I}_p \otimes \boldsymbol{A})diag(exp(\boldsymbol{X}\boldsymbol{B}))vec(d\boldsymbol{X}\boldsymbol{B}) \\ & = (\boldsymbol{I}_p \otimes \boldsymbol{A})diag(exp(\boldsymbol{X}\boldsymbol{B}))(\boldsymbol{B}^T \otimes \boldsymbol{I}_m)vec(d\boldsymbol{X}) \end{aligned} vec(dF)=(Ip⊗A)vec(exp(XB)∗(dXB))=(Ip⊗A)diag(exp(XB))vec(dXB)=(Ip⊗A)diag(exp(XB))(BT⊗Im)vec(dX)
其中diag(A)diag(\boldsymbol{A})diag(A)是用A\boldsymbol{A}A的元素(按列优先)排成的对角阵。
(3)根据导数与微分的关系vec(dF)=∂F∂XTvec(dX)vec(d\boldsymbol{F})=\frac{\partial \boldsymbol{F}}{\partial \boldsymbol{X}}^Tvec(d\boldsymbol{X})vec(dF)=∂X∂FTvec(dX),求得∂F∂X\frac{\partial \boldsymbol{F}}{\partial \boldsymbol{X}}∂X∂F:
∂F∂X=(B⊗Im)diag(exp(XB))(Ip⊗AT) \frac{\partial \boldsymbol{F}}{\partial \boldsymbol{X}}=(\boldsymbol{B} \otimes \boldsymbol{I}_m)diag(exp(\boldsymbol{X}\boldsymbol{B}))(\boldsymbol{I}_p \otimes \boldsymbol{A}^T) ∂X∂F=(B⊗Im)diag(exp(XB))(Ip⊗AT)
例12:l=−yxTw+ln(1+exp(xTw))l=-y\boldsymbol{x}^T\boldsymbol{w}+ln(1+exp(\boldsymbol{x}^T\boldsymbol{w}))l=−yxTw+ln(1+exp(xTw)),求∇wl\nabla_{\boldsymbol{w}}l∇wl和∇w2l\nabla_{\boldsymbol{w}}^2l∇w2l。其中yyy是取值为000或111的标量,x,w\boldsymbol{x},\boldsymbol{w}x,w是n×1n \times 1n×1列向量。
解:(1)∇wl\nabla_{\boldsymbol{w}}l∇wl是个标量对向量的导数,有:
dl=−yxTdw+(1+exp(xTw))−1∗exp(xTw)∗(xTdw) dl=-y\boldsymbol{x}^Td\boldsymbol{w}+(1+exp(\boldsymbol{x}^T\boldsymbol{w}))^{-1}*exp(\boldsymbol{x}^T\boldsymbol{w})*(\boldsymbol{x}^Td\boldsymbol{w}) dl=−yxTdw+(1+exp(xTw))−1∗exp(xTw)∗(xTdw)
所以:
∇wl=x(σ(xTw)−y) \nabla_{\boldsymbol{w}}l=\boldsymbol{x}(\sigma(\boldsymbol{x}^T\boldsymbol{w})-y) ∇wl=x(σ(xTw)−y)
其中,σ(a)=exp(a)1+exp(a)\sigma(a)=\frac{exp(a)}{1+exp(a)}σ(a)=1+exp(a)exp(a)是sigmoid函数。
(2)∇w2l\nabla_{\boldsymbol{w}}^2l∇w2l是个向量对向量的导数,有:
d∇wl=xσ′(xTw)xTdw d\nabla_{\boldsymbol{w}}l=\boldsymbol{x}\sigma'(\boldsymbol{x}^T\boldsymbol{w})\boldsymbol{x}^Td\boldsymbol{w} d∇wl=xσ′(xTw)xTdw
所以:
∇w2l=xσ′(xTw)xT \nabla_{\boldsymbol{w}}^2l=\boldsymbol{x}\sigma'(\boldsymbol{x}^T\boldsymbol{w})\boldsymbol{x}^T ∇w2l=xσ′(xTw)xT
例13:l=∑i=1N(−yixiTw+ln(1+exp(xiTw)))l=\sum_{i=1}^{N}(-y_i\boldsymbol{x}_i^T\boldsymbol{w}+ln(1+exp(\boldsymbol{x}_i^T\boldsymbol{w})))l=∑i=1N(−yixiTw+ln(1+exp(xiTw))),求∇wl\nabla_{\boldsymbol{w}}l∇wl和∇w2l\nabla_{\boldsymbol{w}}^2l∇w2l。其中yiy_iyi是标量,xi,w\boldsymbol{x}_i,\boldsymbol{w}xi,w是n×1n \times 1n×1列向量。
解:(1)求∇wl\nabla_{\boldsymbol{w}}l∇wl(标量对向量的导数):
定义矩阵X=[x1T,…,xNT]T(N×n)\boldsymbol{X}=[\boldsymbol{x}_1^T,\dots,\boldsymbol{x}_N^T]^T(N \times n)X=[x1T,…,xNT]T(N×n),向量y=[y1,…,yN]T\boldsymbol{y}=[y_1,\dots,y_N]^Ty=[y1,…,yN]T,从而可以将lll写成矩阵形式:
l=−yTXw+1Tln(1+exp(Xw)) l=-\boldsymbol{y}^T\boldsymbol{X}\boldsymbol{w}+\boldsymbol{1}^Tln(\boldsymbol{1}+exp(\boldsymbol{X}\boldsymbol{w})) l=−yTXw+1Tln(1+exp(Xw))
其中1\boldsymbol{1}1是全111的N×1N \times 1N×1列向量。
求lll的微分有:
dl=−yTXdw+1T(11+exp(Xw)∗exp(Xw)∗(Xdw))=−yTXdw+1T(σ(Xw)∗(Xdw))=−yTXdw+(1∗σ(Xw))TXdw=−yTXdw+σ(Xw)TXdw \begin{aligned} dl & = -\boldsymbol{y}^T\boldsymbol{X}d\boldsymbol{w}+\boldsymbol{1}^T\bigg(\frac{1}{\boldsymbol{1}+exp(\boldsymbol{X}\boldsymbol{w})}*exp(\boldsymbol{X}\boldsymbol{w})*(\boldsymbol{X}d\boldsymbol{w})\bigg) \\ & = -\boldsymbol{y}^T\boldsymbol{X}d\boldsymbol{w}+\boldsymbol{1}^T(\sigma(\boldsymbol{X}\boldsymbol{w})*(\boldsymbol{X}d\boldsymbol{w})) \\ & = -\boldsymbol{y}^T\boldsymbol{X}d\boldsymbol{w}+(\boldsymbol{1}*\sigma(\boldsymbol{X}\boldsymbol{w}))^T\boldsymbol{X}d\boldsymbol{w} \\ & = -\boldsymbol{y}^T\boldsymbol{X}d\boldsymbol{w}+\sigma(\boldsymbol{X}\boldsymbol{w})^T\boldsymbol{X}d\boldsymbol{w} \end{aligned} dl=−yTXdw+1T(1+exp(Xw)1∗exp(Xw)∗(Xdw))=−yTXdw+1T(σ(Xw)∗(Xdw))=−yTXdw+(1∗σ(Xw))TXdw=−yTXdw+σ(Xw)TXdw
故:
∇wl=XT(σ(Xw)−y) \nabla_{\boldsymbol{w}}l=\boldsymbol{X}^T(\sigma(\boldsymbol{X}\boldsymbol{w})-\boldsymbol{y}) ∇wl=XT(σ(Xw)−y)
(2)求∇w2l\nabla_{\boldsymbol{w}}^2l∇w2l(向量对向量的导数):
求∇wl\nabla_{\boldsymbol{w}}l∇wl的微分有:
d∇wl=XT(σ′(Xw)∗(Xdw))=XTdiag(σ′(Xw))Xdw d\nabla_{\boldsymbol{w}}l=\boldsymbol{X}^T(\sigma'(\boldsymbol{X}\boldsymbol{w})*(\boldsymbol{X}d\boldsymbol{w}))=\boldsymbol{X}^Tdiag(\sigma'(\boldsymbol{X}\boldsymbol{w}))\boldsymbol{X}d\boldsymbol{w} d∇wl=XT(σ′(Xw)∗(Xdw))=XTdiag(σ′(Xw))Xdw
从而:
∇w2l=XTdiag(σ′(Xw))X \nabla_{\boldsymbol{w}}^2l=\boldsymbol{X}^Tdiag(\sigma'(\boldsymbol{X}\boldsymbol{w}))\boldsymbol{X} ∇w2l=XTdiag(σ′(Xw))X
附录
1、矩阵的迹
1.1迹的定义
n×nn \times nn×n矩阵A\boldsymbol{A}A的对角线元素之和称为A\boldsymbol{A}A的迹(trace),记作tr(A)tr(\boldsymbol{A})tr(A),非正方矩阵无迹的定义。
1.2关于迹的等式
(1)若A\boldsymbol{A}A和B\boldsymbol{B}B均为n×nn \times nn×n矩阵,则tr(A±B)=tr(A)±tr(B)tr(\boldsymbol{A} \pm \boldsymbol{B})=tr(\boldsymbol{A}) \pm tr(\boldsymbol{B})tr(A±B)=tr(A)±tr(B)。
(2)若A\boldsymbol{A}A和B\boldsymbol{B}B均为n×nn \times nn×n矩阵,且c1c_1c1和c2c_2c2为常数,则tr(c1A±c2B)=c1tr(A)±c2tr(B)tr(c_1\boldsymbol{A} \pm c_2\boldsymbol{B})=c_1tr(\boldsymbol{A}) \pm c_2tr(\boldsymbol{B})tr(c1A±c2B)=c1tr(A)±c2tr(B)。
(3)tr(AT)=tr(A)tr(\boldsymbol{A}^T)=tr(\boldsymbol{A})tr(AT)=tr(A)。
(4)若矩阵A\boldsymbol{A}A和矩阵BT\boldsymbol{B}^TBT形状相同,则tr(AB)=tr(BA)tr(\boldsymbol{A}\boldsymbol{B})=tr(\boldsymbol{B}\boldsymbol{A})tr(AB)=tr(BA)。
(5)若矩阵A,B,C\boldsymbol{A},\boldsymbol{B},\boldsymbol{C}A,B,C均为m×nm \times nm×n矩阵,则tr(AT(B∗C))=tr((A∗B)TC)tr(\boldsymbol{A}^T(\boldsymbol{B}*\boldsymbol{C}))=tr((\boldsymbol{A}*\boldsymbol{B})^T\boldsymbol{C})tr(AT(B∗C))=tr((A∗B)TC)。
(6)若A\boldsymbol{A}A和B\boldsymbol{B}B均为方阵,则tr(A⊗B)=tr(A)tr(B)tr(\boldsymbol{A}\otimes\boldsymbol{B})=tr(\boldsymbol{A})tr(\boldsymbol{B})tr(A⊗B)=tr(A)tr(B)。
(7)若矩阵A\boldsymbol{A}A和矩阵B\boldsymbol{B}B形状相同,则tr(ATB)=(vec(A))Tvec(B)=⟨A,B⟩tr(\boldsymbol{A}^T\boldsymbol{B})=(vec(\boldsymbol{A}))^Tvec(\boldsymbol{B})=\langle \boldsymbol{A},\boldsymbol{B} \rangletr(ATB)=(vec(A))Tvec(B)=⟨A,B⟩。
2、Hadamard积
2.1Hadamard积的定义
m×nm \times nm×n矩阵A=[aij]\boldsymbol{A}=[a_{ij}]A=[aij]与m×nm \times nm×n矩阵B=[bij]\boldsymbol{B}=[b_{ij}]B=[bij]的Hadamard积记作A∗B\boldsymbol{A}*\boldsymbol{B}A∗B,它仍然是一个m×nm \times nm×n矩阵,其元素定义为两个矩阵对应元素的乘积:
(A∗B)ij=aijbij (\boldsymbol{A}*\boldsymbol{B})_{ij}=a_{ij}b_{ij} (A∗B)ij=aijbij
Hadamard积也称Schur积或者对应元素乘积(简称元素积)。
2.2Hadamard积的性质
(1)若A\boldsymbol{A}A和B\boldsymbol{B}B均为m×nm \times nm×n矩阵,则(A∗B)T=(AT∗BT)(\boldsymbol{A}*\boldsymbol{B})^T=(\boldsymbol{A}^T*\boldsymbol{B}^T)(A∗B)T=(AT∗BT)。
(2)若ccc为常数,则c(A∗B)=(cA)∗B=A∗(cB)c(\boldsymbol{A}*\boldsymbol{B})=(c\boldsymbol{A})*\boldsymbol{B}=\boldsymbol{A}*(c\boldsymbol{B})c(A∗B)=(cA)∗B=A∗(cB)。
(3)若A,B,C,D\boldsymbol{A},\boldsymbol{B},\boldsymbol{C},\boldsymbol{D}A,B,C,D均为m×nm \times nm×n矩阵,则(A+B)∗(C+D)=A∗C+A∗D+B∗C+B∗D(\boldsymbol{A}+\boldsymbol{B})*(\boldsymbol{C}+\boldsymbol{D})=\boldsymbol{A}*\boldsymbol{C}+\boldsymbol{A}*\boldsymbol{D}+\boldsymbol{B}*\boldsymbol{C}+\boldsymbol{B}*\boldsymbol{D}(A+B)∗(C+D)=A∗C+A∗D+B∗C+B∗D。
3、Kronecker积
3.1Kronecker积的定义
两个矩阵的Kronecker积分为右Kronecker积和左Kronecker积。
(1)右Kronecker积:m×nm \times nm×n矩阵A\boldsymbol{A}A和p×qp \times qp×q矩阵B\boldsymbol{B}B的右Kronecker积A⊗B\boldsymbol{A}\otimes\boldsymbol{B}A⊗B是一个mp×nqmp \times nqmp×nq矩阵,定义为:
A⊗B=[aijB]i=1,j=1m,n \boldsymbol{A}\otimes\boldsymbol{B}=[a_{ij}\boldsymbol{B}]_{i=1,j=1}^{m,n} A⊗B=[aijB]i=1,j=1m,n
(2)左Kronecker积:m×nm \times nm×n矩阵A\boldsymbol{A}A和p×qp \times qp×q矩阵B\boldsymbol{B}B的左Kronecker积A⊗B\boldsymbol{A}\otimes\boldsymbol{B}A⊗B是一个mp×nqmp \times nqmp×nq矩阵,定义为:
A⊗B=[Abij]i=1,j=1p,q \boldsymbol{A}\otimes\boldsymbol{B}=[\boldsymbol{A}b_{ij}]_{i=1,j=1}^{p,q} A⊗B=[Abij]i=1,j=1p,q
通常多采用右Kronecker积,为避免混淆,本文一律采用右Kronecker积,简称为Kronecker积(张量积)。
3.2Kronecker积的性质
(1)若α\alphaα和β\betaβ为常数,则(αA)⊗(βB)=αβ(A⊗B)(\alpha\boldsymbol{A})\otimes(\beta\boldsymbol{B})=\alpha\beta(\boldsymbol{A}\otimes\boldsymbol{B})(αA)⊗(βB)=αβ(A⊗B)。
(2)单位矩阵间的Kronecker积满足:Im⊗In=Imn\boldsymbol{I}_m \otimes \boldsymbol{I}_n=\boldsymbol{I}_{mn}Im⊗In=Imn。
(3)对于矩阵Am×n,Bn×k,Cl×p,Dp×q\boldsymbol{A}_{m \times n},\boldsymbol{B}_{n \times k},\boldsymbol{C}_{l \times p},\boldsymbol{D}_{p \times q}Am×n,Bn×k,Cl×p,Dp×q,有(AB)⊗(CD)=(A⊗C)(B⊗D)(\boldsymbol{AB})\otimes(\boldsymbol{CD})=(\boldsymbol{A}\otimes\boldsymbol{C})(\boldsymbol{B}\otimes\boldsymbol{D})(AB)⊗(CD)=(A⊗C)(B⊗D)。
(4)对于矩阵Am×n,Bp×q,Cp×q\boldsymbol{A}_{m \times n},\boldsymbol{B}_{p \times q},\boldsymbol{C}_{p \times q}Am×n,Bp×q,Cp×q,有
A⊗(B±C)=A⊗B±A⊗C(B±C)⊗A=B⊗A±C⊗A \begin{aligned} \boldsymbol{A}\otimes(\boldsymbol{B}\pm\boldsymbol{C}) & = \boldsymbol{A}\otimes\boldsymbol{B}\pm\boldsymbol{A}\otimes\boldsymbol{C} \\ (\boldsymbol{B}\pm\boldsymbol{C})\otimes \boldsymbol{A}& = \boldsymbol{B}\otimes\boldsymbol{A}\pm\boldsymbol{C}\otimes\boldsymbol{A} \end{aligned} A⊗(B±C)(B±C)⊗A=A⊗B±A⊗C=B⊗A±C⊗A
(5)Kronecker积的转置满足:(A⊗B)T=AT⊗BT(\boldsymbol{A}\otimes\boldsymbol{B})^T=\boldsymbol{A}^T\otimes\boldsymbol{B}^T(A⊗B)T=AT⊗BT。
(6)Kronecker积的逆矩阵满足:(A⊗B)−1=A−1⊗B−1(\boldsymbol{A}\otimes\boldsymbol{B})^{-1}=\boldsymbol{A}^{-1}\otimes\boldsymbol{B}^{-1}(A⊗B)−1=A−1⊗B−1。
(7)Kronecker积的行列式满足:det(An×n⊗Bm×m)=(detA)m(detB)ndet(\boldsymbol{A}_{n \times n}\otimes\boldsymbol{B}_{m \times m})=(det\boldsymbol{A})^m(det\boldsymbol{B})^ndet(An×n⊗Bm×m)=(detA)m(detB)n。
(8)对于矩阵Am×n,Bm×n,Cp×q,Dp×q\boldsymbol{A}_{m \times n},\boldsymbol{B}_{m \times n},\boldsymbol{C}_{p \times q},\boldsymbol{D}_{p \times q}Am×n,Bm×n,Cp×q,Dp×q,有(A+B)⊗(C+D)=A⊗C+A⊗D+B⊗C+B⊗D(\boldsymbol{A}+\boldsymbol{B})\otimes(\boldsymbol{C}+\boldsymbol{D})=\boldsymbol{A}\otimes\boldsymbol{C}+\boldsymbol{A}\otimes\boldsymbol{D}+\boldsymbol{B}\otimes\boldsymbol{C}+\boldsymbol{B}\otimes\boldsymbol{D}(A+B)⊗(C+D)=A⊗C+A⊗D+B⊗C+B⊗D。
(9)对于矩阵Am×n,Bp×q,Ck×l\boldsymbol{A}_{m \times n},\boldsymbol{B}_{p \times q},\boldsymbol{C}_{k \times l}Am×n,Bp×q,Ck×l,有(A⊗B)⊗C=A⊗(B⊗C)(\boldsymbol{A}\otimes\boldsymbol{B})\otimes\boldsymbol{C}=\boldsymbol{A}\otimes(\boldsymbol{B}\otimes\boldsymbol{C})(A⊗B)⊗C=A⊗(B⊗C)。
(10)对于矩阵Am×n,Bk×l,Cp×q,Dr×s\boldsymbol{A}_{m \times n},\boldsymbol{B}_{k \times l},\boldsymbol{C}_{p \times q},\boldsymbol{D}_{r \times s}Am×n,Bk×l,Cp×q,Dr×s,有(A⊗B)⊗(C⊗D)=A⊗B⊗C⊗D(\boldsymbol{A}\otimes\boldsymbol{B})\otimes(\boldsymbol{C}\otimes\boldsymbol{D})=\boldsymbol{A}\otimes\boldsymbol{B}\otimes\boldsymbol{C}\otimes\boldsymbol{D}(A⊗B)⊗(C⊗D)=A⊗B⊗C⊗D。
(11)对于矩阵Am×n,Bp×q\boldsymbol{A}_{m \times n},\boldsymbol{B}_{p \times q}Am×n,Bp×q,有exp(A⊗B)=exp(A)⊗exp(B)exp(\boldsymbol{A}\otimes\boldsymbol{B})=exp(\boldsymbol{A})\otimes exp(\boldsymbol{B})exp(A⊗B)=exp(A)⊗exp(B)。
(12))对于矩阵Am×n,Bp×q\boldsymbol{A}_{m \times n},\boldsymbol{B}_{p \times q}Am×n,Bp×q,有
Kpm(A⊗B)=(B⊗A)KqnKpm(A⊗B)Knq=B⊗A \begin{aligned} \boldsymbol{K}_{pm}(\boldsymbol{A}\otimes\boldsymbol{B}) &= (\boldsymbol{B}\otimes\boldsymbol{A})\boldsymbol{K}_{qn} \\ \boldsymbol{K}_{pm}(\boldsymbol{A}\otimes\boldsymbol{B})\boldsymbol{K}_{nq} &= \boldsymbol{B}\otimes\boldsymbol{A} \end{aligned} Kpm(A⊗B)Kpm(A⊗B)Knq=(B⊗A)Kqn=B⊗A
4、置换矩阵
4.1置换矩阵的定义
一个正方矩阵称为置换矩阵,若它的每一行和每一列有且仅有一个非零元素1(其余位置为0)。
4.2置换矩阵的性质
置换矩阵P\boldsymbol{P}P是正交矩阵,即PTP=PPT=I\boldsymbol{P}^T\boldsymbol{P}=\boldsymbol{P}\boldsymbol{P}^T=\boldsymbol{I}PTP=PPT=I。
5、矩阵的向量化
5.1向量化算子的定义
m×nm \times nm×n矩阵的(列)向量化vec(A)vec(\boldsymbol{A})vec(A)将矩阵A=[aij]\boldsymbol{A}=[a_{ij}]A=[aij]的元素按列堆栈,排成一个mn×1mn \times 1mn×1向量
vec(A)=[a11,…,am1,…,a1n,…,amn]T vec(\boldsymbol{A})=[a_{11},\dots,a_{m1},\dots,a_{1n},\dots,a_{mn}]^T vec(A)=[a11,…,am1,…,a1n,…,amn]T
矩阵也可以按行堆栈为行向量rvec(A)rvec(\boldsymbol{A})rvec(A)。称为矩阵的行向量化,定义为
rvec(A)=[a11,…,a1n,…,am1,…,amn] rvec(\boldsymbol{A})=[a_{11},\dots,a_{1n},\dots,a_{m1},\dots,a_{mn}] rvec(A)=[a11,…,a1n,…,am1,…,amn]
显然矩阵的向量化和行向量化之间存在如下关系
vec(AT)=(rvec(A))T vec(\boldsymbol{A}^T)=(rvec(\boldsymbol{A}))^T vec(AT)=(rvec(A))T
5.2交换矩阵的定义
显然,对于一个m×nm \times nm×n矩阵A\boldsymbol{A}A,向量vec(A)vec(\boldsymbol{A})vec(A)和vec(AT)vec(\boldsymbol{A}^T)vec(AT)含有相同的元素,但排列次序不同。因此,存在一个唯一的mn×mnmn \times mnmn×mn置换矩阵,可以将一个矩阵的向量化vec(A)vec(\boldsymbol{A})vec(A)变为其转置矩阵的向量化vec(AT)vec(\boldsymbol{A}^T)vec(AT)。这一置换矩阵称为交换矩阵,记作Kmn\boldsymbol{K}_{mn}Kmn,定义为
Kmnvec(Am×n)=vec(AT) \boldsymbol{K}_{mn}vec(\boldsymbol{A}_{m \times n})=vec(\boldsymbol{A}^T) Kmnvec(Am×n)=vec(AT)
类似地,可以将转置矩阵的向量化vec(AT)vec(\boldsymbol{A}^T)vec(AT)变为原矩阵的向量化vec(A)vec(\boldsymbol{A})vec(A)的交换矩阵是一和nm×nmnm \times nmnm×nm置换矩阵,记作Knm\boldsymbol{K}_{nm}Knm,定义为
Knmvec(AT)=vec(Am×n) \boldsymbol{K}_{nm}vec(\boldsymbol{A}^T)=vec(\boldsymbol{A}_{m \times n}) Knmvec(AT)=vec(Am×n)
mn×mnmn \times mnmn×mn交换矩阵Kmn\boldsymbol{K}_{mn}Kmn的构造方法如下:每一行只赋一个元素1,其余元素全部为0。首先,第1行第1个元素为1,然后这个1元素右移m位,变成第2行该位置的1元素。第2行该位置的1元素再右移m位,变成第3行该位置的1元素。依此类推,找到所有的1元素。但是,如果右移时超过第mn列,则应该转到下一行第1列继续移位,并多移动1位,再在此位置赋1。
5.3交换矩阵的性质
(1)KnmKmn=KmnKnm=Imn\boldsymbol{K}_{nm}\boldsymbol{K}_{mn}=\boldsymbol{K}_{mn}\boldsymbol{K}_{nm}=\boldsymbol{I}_{mn}KnmKmn=KmnKnm=Imn。
(2)KmnTKmn=KmnKmnT=Imn\boldsymbol{K}_{mn}^T\boldsymbol{K}_{mn}=\boldsymbol{K}_{mn}\boldsymbol{K}_{mn}^T=\boldsymbol{I}_{mn}KmnTKmn=KmnKmnT=Imn。
(3)KmnT=Knm\boldsymbol{K}_{mn}^T=\boldsymbol{K}_{nm}KmnT=Knm。
(4)K1n=Kn1=In\boldsymbol{K}_{1n}=\boldsymbol{K}_{n1}=\boldsymbol{I}_nK1n=Kn1=In。
5.4向量化算子的性质
(1)矩阵之和的向量化:vec(A+B)=vec(A)+vec(B)vec(\boldsymbol{A}+\boldsymbol{B})=vec(\boldsymbol{A})+vec(\boldsymbol{B})vec(A+B)=vec(A)+vec(B)。
(2)m×nm \times nm×n矩阵A\boldsymbol{A}A和B\boldsymbol{B}B的Hadamard积的向量化:vec(A∗B)=vec(A)∗vec(B)=diag(vec(A))vec(B)vec(\boldsymbol{A}*\boldsymbol{B})=vec(\boldsymbol{A})*vec(\boldsymbol{B})=diag(vec(\boldsymbol{A}))vec(\boldsymbol{B})vec(A∗B)=vec(A)∗vec(B)=diag(vec(A))vec(B)。
其中diag(vec(A))diag(vec(\boldsymbol{A}))diag(vec(A))表示以vec(A)vec(\boldsymbol{A})vec(A)的各元素(按列排列)为对角元素的对角矩阵。
(3)两个向量的Kronecker积与向量化算子:a⊗b=vec(baT)\boldsymbol{a}\otimes\boldsymbol{b}=vec(\boldsymbol{b}\boldsymbol{a}^T)a⊗b=vec(baT)。
(4)矩阵Am×pBp×qCq×n\boldsymbol{A}_{m \times p}\boldsymbol{B}_{p \times q}\boldsymbol{C}_{q \times n}Am×pBp×qCq×n乘积的向量化与Kronecker积的关系:
vec(ABC)=(CTBT⊗Im)vec(A)vec(ABC)=(CT⊗A)vec(B)vec(ABC)=(Iq⊗AB)vec(C) \begin{aligned} vec(\boldsymbol{ABC}) &= (\boldsymbol{C}^T\boldsymbol{B}^T\otimes\boldsymbol{I}_m)vec(\boldsymbol{A}) \\ vec(\boldsymbol{ABC}) &= (\boldsymbol{C}^T\otimes\boldsymbol{A})vec(\boldsymbol{B}) \\ vec(\boldsymbol{ABC}) &= (\boldsymbol{I}_q\otimes\boldsymbol{AB})vec(\boldsymbol{C}) \end{aligned} vec(ABC)vec(ABC)vec(ABC)=(CTBT⊗Im)vec(A)=(CT⊗A)vec(B)=(Iq⊗AB)vec(C)
(5)Kronecker积的向量化:设有p×mp \times mp×m矩阵X\boldsymbol{X}X和n×qn \times qn×q矩阵Y\boldsymbol{Y}Y,则:
vec(X⊗Y)=(Im⊗Kqp⊗In)(vec(X)⊗vec(Y)) vec(\boldsymbol{X}\otimes\boldsymbol{Y})=(\boldsymbol{I}_m\otimes\boldsymbol{K}_{qp}\otimes\boldsymbol{I}_n)(vec(\boldsymbol{X}) \otimes vec(\boldsymbol{Y})) vec(X⊗Y)=(Im⊗Kqp⊗In)(vec(X)⊗vec(Y))
6、实矩阵微分运算
6.1矩阵微分的定义
m×nm \times nm×n矩阵X\boldsymbol{X}X的微分用符号dXd\boldsymbol{X}dX表示,定义为dX=[dxij]i=1,j=1m,nd\boldsymbol{X}=[dx_{ij}]_{i=1,j=1}^{m,n}dX=[dxij]i=1,j=1m,n。
6.2矩阵微分的常用计算公式
(1)常数矩阵的微分矩阵为零矩阵,即dA=Od\boldsymbol{A}=\boldsymbol{O}dA=O。
(2)常数α\alphaα与矩阵X\boldsymbol{X}X的乘积的微分矩阵为d(αX)=αdXd(\alpha\boldsymbol{X})=\alpha d\boldsymbol{X}d(αX)=αdX。
(3)矩阵转置的微分矩阵为d(XT)=(dX)Td(\boldsymbol{X}^T)=(d\boldsymbol{X})^Td(XT)=(dX)T。
(4)两个矩阵函数的和(差)的微分矩阵为d(U±V)=dU±dVd(\boldsymbol{U}\pm\boldsymbol{V})=d\boldsymbol{U} \pm d\boldsymbol{V}d(U±V)=dU±dV。
(5)两个矩阵函数乘积的微分矩阵为d(UV)=(dU)V+U(dV)d(\boldsymbol{UV})=(d\boldsymbol{U})\boldsymbol{V}+\boldsymbol{U}(d\boldsymbol{V})d(UV)=(dU)V+U(dV)。
(6)矩阵的迹的微分矩阵为d(tr(X))=tr(dX)d(tr(\boldsymbol{X}))=tr(d\boldsymbol{X})d(tr(X))=tr(dX)。
(7)行列式的微分为d∣X∣=tr(X∗dX)d|\boldsymbol{X}|=tr(\boldsymbol{X}^*d\boldsymbol{X})d∣X∣=tr(X∗dX),其中X∗\boldsymbol{X}^*X∗表示X\boldsymbol{X}X的伴随矩阵,在X\boldsymbol{X}X可逆时又可以写作d∣X∣=∣X∣tr(X−1dX)d|\boldsymbol{X}|=|\boldsymbol{X}|tr(\boldsymbol{X}^{-1}d\boldsymbol{X})d∣X∣=∣X∣tr(X−1dX)。
(8)矩阵的Hadamard积的微分矩阵为d(U∗V)=(dU)∗V+U∗(dV)d(\boldsymbol{U}*\boldsymbol{V})=(d\boldsymbol{U})*\boldsymbol{V}+\boldsymbol{U}*(d\boldsymbol{V})d(U∗V)=(dU)∗V+U∗(dV)。
(9)矩阵的Kronecker积的微分矩阵为d(U⊗V)=(dU)⊗V+U⊗(dV)d(\boldsymbol{U}\otimes\boldsymbol{V})=(d\boldsymbol{U})\otimes\boldsymbol{V}+\boldsymbol{U}\otimes(d\boldsymbol{V})d(U⊗V)=(dU)⊗V+U⊗(dV)。
(10)向量化函数的微分矩阵为d(vec(X))=vec(dX)d(vec(\boldsymbol{X}))=vec(d\boldsymbol{X})d(vec(X))=vec(dX)。
(11)矩阵对数的微分矩阵为d(lnX)=X−1dXd(ln\boldsymbol{X})=\boldsymbol{X}^{-1}d\boldsymbol{X}d(lnX)=X−1dX。
(12)逆矩阵的微分矩阵为d(X−1)=−X−1(dX)X−1d(\boldsymbol{X}^{-1})=-\boldsymbol{X}^{-1}(d\boldsymbol{X})\boldsymbol{X}^{-1}d(X−1)=−X−1(dX)X−1。
(13)行列式对数的微分矩阵为d(ln∣X∣)=tr(X−1dX)d(ln|\boldsymbol{X}|)=tr(\boldsymbol{X}^{-1}d\boldsymbol{X})d(ln∣X∣)=tr(X−1dX),其中矩阵X\boldsymbol{X}X可逆。
(14)逐元素函数的微分矩阵为d(f(X))=f′(X)∗dXd(f(\boldsymbol{X}))=f'(\boldsymbol{X})*d\boldsymbol{X}d(f(X))=f′(X)∗dX。
参考资料
[1]知乎:《机器学习中的数学理论1:三步搞定矩阵求导》
[2]张贤达:《矩阵分析与应用》
更多推荐
所有评论(0)