矩阵论(八):矩阵微分与矩阵求导

矩阵论专栏:专栏(文章按照顺序排序)


机器学习的几乎避免不了矩阵求导,尤其是神经网络方面的,反向传播算法说白了就是在做矩阵求导,拿到代价函数对模型中每个参数矩阵的导数,才能找到一个下降方向,进而更新这些参数来降低损失。虽然实际编程时大可不必考虑这些繁琐的数学计算,但是要真正理解凸优化中的一些方法,掌握这个基本的数学工具还是有必要的。

【1】下面的探讨均在实数域内进行。
【2】虽然 R n R^n Rn定义为实数域 R R R中的 n n n个数组成的有序数组 ( x 1 , x 2 , . . . , x n ) (x_1,x_2,...,x_n) (x1,x2,...,xn)的集合,但当我们讨论 R n R^n Rn中向量时,总是约定它是列向量的形式,即总是一个 n × 1 n\times 1 n×1矩阵。这样更符合一般的习惯,比如线性方程组的表达: A x = b , A ∈ R m × n , x ∈ R n , b ∈ R m Ax=b, A\in R^{m\times n},x\in R^n,b\in R^m Ax=b,ARm×n,xRn,bRm
【3】我们讨论三种情形。向量对向量求导、矩阵对标量求导、标量对矩阵求导。标量对标量求导、标量对向量求导、向量对标量求导都可以看作是向量对向量求导的特例,而向量对矩阵求导、矩阵对向量求导和矩阵对矩阵求导涉及到高阶张量的运算,可以通过把矩阵向量化,从而把高阶运算用低阶运算代替。这样的方法需要向量化运算vec和kronecker积的基础,本篇博客不引入这两个概念,后面的博客探讨矩阵函数的微分时再引入。
【4】符号 ∂ y ∂ x \frac{\partial y}{\partial x} xy表示偏导,本文为表示方便,用 ∂ y ∂ x ( a ) \frac{\partial y}{\partial x}(a) xy(a)表示在点 a a a处的偏导的值(原本的表示应为 ∂ y ∂ x ∣ x = a \frac{\partial y}{\partial x}|_{x=a} xyx=a ∂ f ( x ) ∂ x ∣ x = a \frac{\partial f(x)}{\partial x}|_{x=a} xf(x)x=a

  • 矩阵微分与矩阵求导
    • 布局约定
    • 向量对向量求导
      • 可微与可导的关系
      • 复合函数的链式求导法则
      • 微分的形式不变性
      • 例子
    • 矩阵对标量求导
      • 链式法则
      • 几个公式
    • 标量对矩阵求导
      • 微分的定义
      • 复合函数的微分
      • 常用的微分公式
      • 例子
  • 应用
    • 线性回归问题的最小二乘解
      • L2正则化情形
    • 多层前馈网络(BP网络)的反向传播
    • 循环神经网络(RNN)的反向传播

矩阵微分与矩阵求导

布局约定

详细请见数学-矩阵计算(4)两种布局。在本文中,多数情况下采用分子布局。分子布局和分母布局实际上无需刻意区分,只要两种布局采用不同的符号就可以了。然而,有时候有些作者对分子布局和分母布局采用相同的符号,这时候就必须事先知道作者采用的是什么样的布局,才能确定该符号表达的布局是怎样的。例如,设有m维向量 y y y和n维向量 x x x ∂ y ∂ x \frac{\partial y}{\partial x} xy如果采用的是分子布局,则是 m × n m\times n m×n矩阵,而如果采用的是分母布局,则是 n × m n\times m n×m矩阵。在本文中,我们通过符号来区分分子布局和分母布局(实际上,有了符号的约定以后,可以抛却这两个概念不谈)。

首先,正如文章开头所提,我们默认一个未显式指出究竟是行还是列的向量为列的形式,即任取 x ∈ R n x\in R^n xRn,我们默认 x x x是列向量。接下来,导数的布局通过微商符号的分子和分母的形式推定。以向量对向量的偏导为例, ∂ y ∂ x T \frac{\partial y}{\partial x^T} xTy分子上(即 y y y)是列向量,分母上(即 x T x^T xT)是行向量,则在该矩阵的布局中, y y y的分量 y 1 , y 2 , . . . , y m y_1,y_2,...,y_m y1,y2,...,ym是按列排布的, x x x的分量 x 1 , x 2 , . . . , x n x_1,x_2,...,x_n x1,x2,...,xn是按行排布的(这里真不知道怎么表达才好,实际上我是想说 ∂ y 1 , ∂ y 2 , . . . ∂ y m \partial y_1,\partial y_2,...\partial y_m y1,y2,...ym这样的顺序总是出现在矩阵的一列上, ∂ x 1 , ∂ x 2 , . . . ∂ x n \partial x_1,\partial x_2,...\partial x_n x1,x2,...xn总是出现在矩阵的一行上),即 ∂ y ∂ x T = [ ∂ y 1 ∂ x 1 ∂ y 1 ∂ x 2 . . . ∂ y 1 ∂ x n ∂ y 2 ∂ x 1 ∂ y 2 ∂ x 2 . . . ∂ y 2 ∂ x n . . . . . . . . . . . . ∂ y m ∂ x 1 ∂ y m ∂ x 2 . . . ∂ y m ∂ x n ] \frac{\partial y}{\partial x^T}=

[y1x1y1x2...y1xny2x1y2x2...y2xn............ymx1ymx2...ymxn]
xTy=x1y1x1y2...x1ymx2y1x2y2...x2ym............xny1xny2...xnym
这就是所谓的分子布局。而 ∂ y T ∂ x = [ ∂ y 1 ∂ x 1 ∂ y 2 ∂ x 1 . . . ∂ y m ∂ x 1 ∂ y 1 ∂ x 2 ∂ y 2 ∂ x 2 . . . ∂ y m ∂ x 2 . . . . . . . . . . . . ∂ y 1 ∂ x n ∂ y 2 ∂ x n . . . ∂ y m ∂ x n ] \frac{\partial y^T}{\partial x}=
[y1x1y2x1...ymx1y1x2y2x2...ymx2............y1xny2xn...ymxn]
xyT=x1y1x2y1...xny1x1y2x2y2...xny2............x1ymx2ym...xnym
就是所谓的分母布局。这两种布局间的关系是 ∂ y T ∂ x = ( ∂ y ∂ x T ) T \frac{\partial y^T}{\partial x}=(\frac{\partial y}{\partial x^T})^T xyT=(xTy)T。总结一下就是,我们可以通过符号推定导数的布局是什么样的,在符号(微商)中,一个向量本来是什么形式,它在导数中就是怎样的排布,矩阵也同理。例如设有标量 x ∈ R x\in R xR和矩阵 Y = [ Y i j ] ∈ R m × n Y=[Y_{ij}]\in R^{m\times n} Y=[Yij]Rm×n,则 ∂ x ∂ Y = [ ∂ x ∂ Y 11 ∂ x ∂ Y 12 . . . ∂ x ∂ Y 1 n ∂ x ∂ Y 21 ∂ x ∂ Y 22 . . . ∂ x ∂ Y 2 n . . . . . . . . . . . . ∂ x ∂ Y m 1 ∂ x ∂ Y m 2 . . . ∂ x ∂ Y m n ] \frac{\partial x}{\partial Y}=
[xY11xY12...xY1nxY21xY22...xY2n............xYm1xYm2...xYmn]
Yx=Y11xY21x...Ym1xY12xY22x...Ym2x............Y1nxY2nx...Ymnx
∂ x ∂ Y T = [ ∂ x ∂ Y 11 ∂ x ∂ Y 21 . . . ∂ x ∂ Y m 1 ∂ x ∂ Y 12 ∂ x ∂ Y 22 . . . ∂ x ∂ Y m 2 . . . . . . . . . . . . ∂ x ∂ Y 1 n ∂ x ∂ Y 2 n . . . ∂ x ∂ Y m n ] \frac{\partial x}{\partial Y^T}=
[xY11xY21...xYm1xY12xY22...xYm2............xY1nxY2n...xYmn]
YTx=Y11xY12x...Y1nxY21xY22x...Y2nx............Ym1xYm2x...Ymnx


向量对向量求导

在谈求导前,有必要谈一下微分的概念。一方面在后面可以看到可微是比可导更强的概念,在可微的条件下运用一阶微分的形式不变性可以简化复合函数的求导运算;另一方面,凸优化中的很多结论都是以可微为前提的,仅仅可导是远远不够的。
可微的定义:

  • 定义1:设 c ∈ R n c\in R^n cRn,函数 f : D → R m f:D\rightarrow R^m f:DRm c c c的某个半径为 r > 0 r>0 r>0的邻域 U ( c ) U(c) U(c)内有定义。若存在矩阵 A ∈ R m × n A\in R^{m\times n} ARm×n,使得对于任意的 u ∈ U ˚ ( 0 ) u\in \mathring U(0) uU˚(0) 0 ∈ R n 0\in R^n 0Rn是零向量,去心邻域 U ˚ ( 0 ) \mathring U(0) U˚(0)的半径为 r r r)有如下关系成立: f ( c + u ) − f ( c ) = A u + ο ( ∣ ∣ u ∣ ∣ 2 ) f(c+u)-f(c)=Au+\omicron(||u||_2) f(c+u)f(c)=Au+ο(u2),其中 ο ( ∣ ∣ u ∣ ∣ 2 ) \omicron(||u||_2) ο(u2)是当 u → 0 u\rightarrow 0 u0时的一个高阶无穷小,则称 f f f在点 c c c处是可微的,称 u u u的线性函数 A u Au Au(又叫 f f f在点 c c c处的线性主部)为 f f f在点 c c c处的微分,记作 d f ( c ) = A u df(c)=Au df(c)=Au,并称 A A A f f f在点 c c c处的一阶导数矩阵,简称一阶导数。
    【注1】“ f f f c c c的某个半径为 r > 0 r>0 r>0的邻域 U ( c ) U(c) U(c)内有定义”中“某个”的意思是指存在一个邻域 U ( c ) U(c) U(c),它在 f f f的定义域内
    【注2】当点 c c c给定后, A A A就是一个常矩阵,即要求 A A A u u u是无关的, A A A可以看做是 c c c的函数 A ( c ) A(c) A(c)
    【注3】微分的基本思想是将非线性函数局部线性化。 f ( c + u ) − f ( c ) f(c+u)-f(c) f(c+u)f(c)可以看做是 f f f在点 c c c处,自变量改变量为 u u u时的函数值改变量(因变量改变量),若忽略高阶无穷小项 ο ( ∣ ∣ u ∣ ∣ 2 ) \omicron(||u||_2) ο(u2)则得到 f ( c + u ) − f ( c ) = A u f(c+u)-f(c)=Au f(c+u)f(c)=Au,即在点 c c c的某个邻域内(即“局部”的意思)将 f f f用一个线性函数 A u Au Au替代
    【注4】符号 d f ( c ) df(c) df(c)直观上可以理解为 f f f在点 c c c处的一个微小改变量,相应地 u u u则是 f f f的自变量的一个微小改变量,常记作 d c dc dc,故微分的式子可以写作 d f ( c ) = A d c df(c)=Adc df(c)=Adc(为什么自变量的改变量要采用微分符号d,实际上后面证明了一阶微分的形式不变性后就知道了)
    【注5】高阶无穷小 ο ( ∣ ∣ u ∣ ∣ 2 ) \omicron(||u||_2) ο(u2) u = 0 u=0 u=0处是无定义的,常补充定义 ο ( 0 ) = 0 \omicron(0)=0 ο(0)=0,这样定义中的关系式无论 u u u是否为零都成立

可微是比可导更强的概念,我们在说一个多元向量值函数可导时,往往是指它的每个分量对自变量的每个分量的偏导都存在。再严格一点的,就是指函数的每个分量对自变量的任意方向导数都存在。可微一定可导,可导不一定可微(在一元数量值函数的情形下,这个结论退化成可微与可导等价)。下面给出偏导的概念并证明可微与可导间的关系。

偏导的定义:

  • 定义2:设 c ∈ R n c\in R^n cRn,函数 f : D → R m f:D\rightarrow R^m f:DRm c c c的某个半径为 r > 0 r>0 r>0的邻域 U ( c ) U(c) U(c)内有定义。设 0 ≠ t < r 0\neq t<r 0=t<r,称极限(若存在的话) lim ⁡ t → 0 f i ( c + t e j ) − f i ( c ) t \lim_{t\rightarrow 0}\frac{f_i(c+te_j)-f_i(c)}{t} t0limtfi(c+tej)fi(c)(其中 e j e_j ej是第j个标准向量,其第 j j j个分量为1,其他分量为零)为 f f f的分量 f i f_i fi在点 c c c处对自变量 x ∈ R n x\in R^n xRn的第 j j j个分量的偏导,记作 ∂ f i ∂ x j ( c ) \frac{\partial f_i}{\partial x_j}(c) xjfi(c)
  • 定义3(Jacobian矩阵):函数 f : D → R m ( D ⊆ R n ) f:D\rightarrow R^m(D\subseteq R^n) f:DRm(DRn)在点 c c c处对自变量 x x x的Jacobian矩阵定义如下 ∂ f ∂ x T ( c ) = [ ∂ f 1 ∂ x 1 ( c ) ∂ f 1 ∂ x 2 ( c ) . . . ∂ f 1 ∂ x n ( c ) ∂ f 2 ∂ x 1 ( c ) ∂ f 2 ∂ x 2 ( c ) . . . ∂ f 2 ∂ x n ( c ) . . . . . . . . . . . . ∂ f m ∂ x 1 ( c ) ∂ f m ∂ x 2 ( c ) . . . ∂ f m ∂ x n ( c ) ] \frac{\partial f}{\partial x^T}(c)=
    [f1x1(c)f1x2(c)...f1xn(c)f2x1(c)f2x2(c)...f2xn(c)............fmx1(c)fmx2(c)...fmxn(c)]
    xTf(c)=x1f1(c)x1f2(c)...x1fm(c)x2f1(c)x2f2(c)...x2fm(c)............xnf1(c)xnf2(c)...xnfm(c)

    【注1】当 f f f是数量值函数时,Jacobian矩阵退化为一维行向量,即 f f f的梯度的转置(梯度常常写作列向量);需要注意的是,Jacobian矩阵的第i行就是 f f f的第i个分量 f i f_i fi的梯度的转置;当 f f f是一元数量值函数时,Jacobian矩阵退化为一元情形下的导数的概念。
    【注2】需要区分Jacobian矩阵和梯度矩阵的概念:梯度矩阵是Jacobian矩阵的转置

可微与可导间的关系:

  • 定理1:设 c ∈ R n c\in R^n cRn,若 f f f在点 c c c处可微,则 f f f c c c处的Jacobian矩阵存在,且导数矩阵 A ( c ) = ∂ f ∂ x T ( c ) A(c)=\frac{\partial f}{\partial x^T}(c) A(c)=xTf(c)
    证明:
    根据可微的定义,存在 r > 0 r>0 r>0,对任意 u u u满足 0 < ∣ ∣ u ∣ ∣ 2 < r 0<||u||_2<r 0<u2<r,有 f ( c + u ) − f ( c ) = A ( c ) u + ο ( ∣ ∣ u ∣ ∣ 2 ) f(c+u)-f(c)=A(c)u+\omicron (||u||_2) f(c+u)f(c)=A(c)u+ο(u2),故 lim ⁡ u → 0 f ( c + u ) − f ( c ) − A ( c ) u ∣ ∣ u ∣ ∣ 2 = 0 \lim_{u\rightarrow 0}\frac{f(c+u)-f(c)-A(c)u}{||u||_2}=0 u0limu2f(c+u)f(c)A(c)u=0 u = t e j , t < r u=te_j,t<r u=tej,t<r,则 lim ⁡ t → 0 f ( c + t e j ) − f ( c ) − t A ( c ) e j t = 0 \lim_{t\rightarrow 0}\frac{f(c+te_j)-f(c)-tA(c)e_j}{t}=0 t0limtf(c+tej)f(c)tA(c)ej=0故对任意 i = 1 , 2 , . . . , m i=1,2,...,m i=1,2,...,m j = 1 , 2 , . . . , n j=1,2,...,n j=1,2,...,n ∂ f i ∂ x j ∣ c = lim ⁡ t → 0 f i ( c + t e j ) − f i ( c ) t = e i T A ( c ) e j = a i j \frac{\partial f_i}{\partial x_j}|_c=\lim_{t\rightarrow 0}\frac{f_i(c+te_j)-f_i(c)}{t}=e_i^TA(c)e_j=a_{ij} xjfic=t0limtfi(c+tej)fi(c)=eiTA(c)ej=aij其中 a i j a_{ij} aij是导数矩阵 A ( c ) A(c) A(c) ( i , j ) (i,j) (i,j)元素。得证。

这个定理告诉我们,可微一定可导,且导数矩阵就是Jacobian矩阵。可导不一定可微,有很多反例,这里不再列举。反向传播算法是以复合函数链式求导法则为基础的,实际上,链导法是复合函数微分法则的一个附带结果,下面给出复合函数微分法则,并导出复合函数的链导法则。

  • 定理2:若函数 f : D f → R m ( D f ⊆ R n ) f:D_f\rightarrow R^m(D_f\subseteq R^n) f:DfRm(DfRn)在点 a a a处可微,函数 g : D g → R r ( D g ⊇ R ( f ) ) g:D_g\rightarrow R^r(D_g\supseteq R(f)) g:DgRr(DgR(f))在点 b = f ( a ) b=f(a) b=f(a)处可微,则复合函数 g ∘ f g\circ f gf在点 a a a处可微,且 d g ( f ( a ) ) = B ( b ) A ( a ) d a dg(f(a))=B(b)A(a)da dg(f(a))=B(b)A(a)da,其中 B ( b ) B(b) B(b) g g g在点 b b b处的导数, A ( a ) A(a) A(a) f f f在点 a a a处的导数
    证明:(下面涉及到的所有高阶无穷小都在点 0 0 0处补充定义 ο ( 0 ) = 0 \omicron(0)=0 ο(0)=0
    由可微的定义,存在半径为 r 1 > 0 r_1>0 r1>0的邻域 U ( a ) U(a) U(a),使得任意 ∣ ∣ u ∣ ∣ 2 < r 1 ||u||_2<r_1 u2<r1 f ( a + u ) − f ( a ) = A ( a ) u + ο 1 ( ∣ ∣ u ∣ ∣ 2 ) ( 1 ) f(a+u)-f(a)=A(a)u+\omicron_1 (||u||_2)\qquad (1) f(a+u)f(a)=A(a)u+ο1(u2)(1)存在半径为 r 2 > 0 r_2>0 r2>0的邻域 U ( b ) U(b) U(b),其中 b = f ( a ) b=f(a) b=f(a),使得任意 ∣ ∣ v ∣ ∣ 2 < r 2 ||v||_2<r_2 v2<r2 g ( b + v ) − g ( b ) = B ( b ) v + ο 2 ( ∣ ∣ v ∣ ∣ 2 ) ( 2 ) g(b+v)-g(b)=B(b)v+\omicron_2 (||v||_2)\qquad (2) g(b+v)g(b)=B(b)v+ο2(v2)(2) Δ f = f ( a + u ) − f ( a ) \Delta f=f(a+u)-f(a) Δf=f(a+u)f(a),令(1)式两端 u → 0 u\rightarrow 0 u0得到 Δ f → 0 \Delta f\rightarrow 0 Δf0,故 ∣ ∣ Δ f ∣ ∣ 2 → 0 ||\Delta f||_2\rightarrow 0 Δf20,由极限的定义知存在 r 3 > 0 r_3>0 r3>0使得任意 ∣ ∣ u ∣ ∣ 2 < r 3 ||u||_2<r_3 u2<r3 ∣ ∣ Δ f ∣ ∣ 2 < r 2 ||\Delta f||_2<r_2 Δf2<r2。由(2)知可将 v = Δ f v=\Delta f v=Δf代入,得 g ( b + Δ f ) − g ( b ) = B ( b ) Δ f + ο 2 ( ∣ ∣ Δ f ∣ ∣ 2 ) g(b+\Delta f)-g(b)=B(b)\Delta f+\omicron_2 (||\Delta f||_2) g(b+Δf)g(b)=B(b)Δf+ο2(Δf2),即 g ( f ( a + u ) ) − g ( f ( a ) ) = B ( b ) A ( a ) u + α g(f(a+u))-g(f(a))=B(b)A(a)u+\alpha g(f(a+u))g(f(a))=B(b)A(a)u+α对任意 ∣ ∣ u ∣ ∣ 2 < min ⁡ { r 1 , r 3 } ||u||_2<\min\{r_1,r_3\} u2<min{r1,r3}成立,其中 α = B ( b ) ο 1 ( ∣ ∣ u ∣ ∣ 2 ) + ο 2 ( ∣ ∣ Δ f ∣ ∣ 2 ) \alpha=B(b)\omicron_1 (||u||_2)+\omicron_2(||\Delta f||_2) α=B(b)ο1(u2)+ο2(Δf2)。要证明 g ∘ f g\circ f gf在点 a a a处可微,只需证明 lim ⁡ u → 0 α ∣ ∣ u ∣ ∣ 2 = 0 \lim_{u\rightarrow 0}\frac{\alpha}{||u||_2}=0 limu0u2α=0即可。由于 lim ⁡ u → 0 B ( b ) ο 1 ( ∣ ∣ u ∣ ∣ 2 ) ∣ ∣ u ∣ ∣ 2 = 0 \lim_{u\rightarrow 0}B(b)\frac{\omicron_1(||u||_2)}{||u||_2}=0 limu0B(b)u2ο1(u2)=0,故只需证明 lim ⁡ u → 0 ο 2 ( ∣ ∣ Δ f ∣ ∣ 2 ) ∣ ∣ u ∣ ∣ 2 = 0 \lim_{u\rightarrow 0}\frac{\omicron_2(||\Delta f||_2)}{||u||_2}=0 limu0u2ο2(Δf2)=0。引入函数 Q ( u ) = { ο 2 ( ∣ ∣ Δ f ∣ ∣ 2 ) ∣ ∣ Δ f ∣ ∣ 2 Δ f ≠ 0 0 Δ f = 0 Q(u)=
    {ο2(||Δf||2)||Δf||2Δf00Δf=0
    Q(u)={Δf2ο2(Δf2)0Δf=0Δf=0
    ,其中 ∣ ∣ u ∣ ∣ 2 < min ⁡ { r 1 , r 3 } ||u||_2<\min\{r_1,r_3\} u2<min{r1,r3},可以证明当 u → 0 u\rightarrow 0 u0 Q ( u ) → 0 Q(u)\rightarrow 0 Q(u)0,此处略去,证明见注释。由于 ο 2 ( ∣ ∣ Δ f ∣ ∣ 2 ) ∣ ∣ u ∣ ∣ 2 = Q ( u ) ∣ ∣ Δ f ∣ ∣ 2 ∣ ∣ u ∣ ∣ 2 \frac{\omicron_2(||\Delta f||_2)}{||u||_2}=Q(u)\frac{||\Delta f||_2}{||u||_2} u2ο2(Δf2)=Q(u)u2Δf2 ∣ ∣ Δ f ∣ ∣ 2 ∣ ∣ u ∣ ∣ 2 ⩽ ∣ ∣ A ( a ) u ∣ ∣ 2 ∣ ∣ u ∣ ∣ 2 + ∣ ∣ ο 1 ( ∣ ∣ u ∣ ∣ 2 ) ∣ ∣ 2 ∣ ∣ u ∣ ∣ 2 \frac{||\Delta f||_2}{||u||_2}\leqslant \frac{||A(a)u||_2}{||u||_2}+\frac{||\omicron_1(||u||_2)||_2}{||u||_2} u2Δf2u2A(a)u2+u2ο1(u2)2,由矩阵不等式 A ( a ) T A ( a ) ⩽ λ ( a ) I A(a)^TA(a)\leqslant \lambda(a)I A(a)TA(a)λ(a)I,其中 λ ( a ) \lambda(a) λ(a) A ( a ) T A ( a ) A(a)^TA(a) A(a)TA(a)的最大特征值,得到 ∣ ∣ A ( a ) u ∣ ∣ 2 ∣ ∣ u ∣ ∣ 2 ⩽ λ ( a ) \frac{||A(a)u||_2}{||u||_2}\leqslant \sqrt{\lambda(a)} u2A(a)u2λ(a) ,又由 lim ⁡ u → 0 ∣ ∣ ο 1 ( ∣ ∣ u ∣ ∣ 2 ) ∣ ∣ 2 ∣ ∣ u ∣ ∣ 2 = 0 \lim_{u\rightarrow 0}\frac{||\omicron_1(||u||_2)||_2}{||u||_2}=0 limu0u2ο1(u2)2=0,得到 ∣ ∣ ο 1 ( ∣ ∣ u ∣ ∣ 2 ) ∣ ∣ 2 ∣ ∣ u ∣ ∣ 2 \frac{||\omicron_1(||u||_2)||_2}{||u||_2} u2ο1(u2)2是局部有界的,故 ∣ ∣ Δ f ∣ ∣ 2 ∣ ∣ u ∣ ∣ 2 \frac{||\Delta f||_2}{||u||_2} u2Δf2是局部有界的。综上有 lim ⁡ u → 0 ο 2 ( ∣ ∣ Δ f ∣ ∣ 2 ) ∣ ∣ u ∣ ∣ 2 = 0 \lim_{u\rightarrow 0}\frac{\omicron_2(||\Delta f||_2)}{||u||_2}=0 limu0u2ο2(Δf2)=0,证毕。
    【注1】矩阵不等式见矩阵的正定性
    【注2】 lim ⁡ u → 0 Q ( u ) = 0 \lim_{u\rightarrow 0}Q(u)=0 limu0Q(u)=0的证明:
    利用 l i m u → 0 Δ f = 0 lim_{u\rightarrow 0}\Delta f=0 limu0Δf=0以及 l i m v → 0 ο 2 ( ∣ ∣ v ∣ ∣ 2 ) ∣ ∣ v ∣ ∣ 2 = 0 lim_{v\rightarrow 0}\frac{\omicron_2(||v||_2)}{||v||_2}=0 limv0v2ο2(v2)=0这两个条件即可。 ∀ ϵ > 0 , ∃ δ > 0 , ∀ v \forall \epsilon>0,\exist \delta>0,\forall v ϵ>0,δ>0,v满足 0 < ∣ ∣ v ∣ ∣ 2 < δ 0<||v||_2<\delta 0<v2<δ都有 ∣ ∣ ο 2 ( ∣ ∣ v ∣ ∣ 2 ) ∣ ∣ v ∣ ∣ 2 ∣ ∣ 2 < ϵ ||\frac{\omicron_2(||v||_2)}{||v||_2}||_2<\epsilon v2ο2(v2)2<ϵ ∃ δ 1 > 0 , ∀ u \exist \delta_1>0,\forall u δ1>0,u满足 0 < ∣ ∣ u ∣ ∣ 2 < δ 1 0<||u||_2<\delta_1 0<u2<δ1都有 ∣ ∣ Δ f ∣ ∣ 2 < δ ||\Delta f||_2<\delta Δf2<δ,故由如下结论: ∀ ϵ > 0 , ∃ δ 1 > 0 , ∀ u \forall \epsilon >0,\exist \delta_1>0,\forall u ϵ>0,δ1>0,u满足 0 < ∣ ∣ u ∣ ∣ 2 < δ 1 0<||u||_2<\delta_1 0<u2<δ1,若 Δ f = 0 \Delta f=0 Δf=0,则 ∣ ∣ Q ( u ) ∣ ∣ 2 = 0 < ϵ ||Q(u)||_2=0<\epsilon Q(u)2=0<ϵ,若 0 < ∣ ∣ Δ f ∣ ∣ 2 < δ 0<||\Delta f||_2<\delta 0<Δf2<δ,则 ∣ ∣ Q ( u ) ∣ ∣ 2 = ∣ ∣ ο 2 ( ∣ ∣ Δ f ∣ ∣ 2 ) ∣ ∣ Δ f ∣ ∣ 2 ∣ ∣ 2 < ϵ ||Q(u)||_2=||\frac{\omicron_2(||\Delta f||_2)}{||\Delta f||_2}||_2<\epsilon Q(u)2=Δf2ο2(Δf2)2<ϵ,即无论 ∣ ∣ Δ f ∣ ∣ 2 ||\Delta f||_2 Δf2是否为零都有 ∣ ∣ Q ( u ) ∣ ∣ 2 < ϵ ||Q(u)||_2<\epsilon Q(u)2<ϵ,故 lim ⁡ u → 0 Q ( u ) = 0 \lim_{u\rightarrow 0}Q(u)=0 limu0Q(u)=0

下面由复合函数的微分法则导出复合函数的链式求导法则:

  • 推论:若函数 y = f ( x ) ( D f ⊆ R n , y ∈ R m ) y=f(x)(D_f\subseteq R^n,y\in R^m) y=f(x)(DfRn,yRm)在点 a a a处可微,函数 z = g ( y ) ( D g ⊇ R ( f ) , z ∈ R r ) z=g(y)(D_g\supseteq R(f),z\in R^r) z=g(y)(DgR(f),zRr)在点 b = f ( a ) b=f(a) b=f(a)处可微,则复合函数 g ∘ f g\circ f gf在点 a a a处可微,且其在点 a a a处的导数 ∂ z ∂ x T ( a ) = ∂ z ∂ y T ( b ) ∂ y ∂ x T ( a ) \frac{\partial z}{\partial x^T}(a)=\frac{\partial z}{\partial y^T}(b)\frac{\partial y}{\partial x^T}(a) xTz(a)=yTz(b)xTy(a)

通过一阶微分的形式不变性,我们可以通过求微分来计算复合函数的导数,这在很多情况下是有用的,例如,在矩阵求导中通过计算微分,可以一次性得到多个参变量矩阵的导数。下面给出一阶微分的形式不变性:

  • 一阶微分的形式不变性:
    设函数 f : D f → R m ( D f ⊆ R n ) f:D_f\rightarrow R^m(D_f\subseteq R^n) f:DfRm(DfRn)在点 a a a处可微,其微分为 d f ( a ) = A ( a ) d a df(a)=A(a)da df(a)=A(a)da,函数 g : D g → R r ( D g ⊇ R ( f ) ) g:D_g\rightarrow R^r(D_g\supseteq R(f)) g:DgRr(DgR(f))在点 b = f ( a ) b=f(a) b=f(a)处可微,其微分为 d g ( b ) = B ( b ) d b dg(b)=B(b)db dg(b)=B(b)db,则由复合函数的微分法则知,函数 g ∘ f g\circ f gf在点 a a a处的微分为 d g ( f ( a ) ) = B ( b ) A ( a ) d a dg(f(a))=B(b)A(a)da dg(f(a))=B(b)A(a)da。注意到 d f ( a ) = A ( a ) d a df(a)=A(a)da df(a)=A(a)da,于是 d g ( f ( a ) ) = B ( b ) A ( a ) d a = B ( b ) d f ( a ) dg(f(a))=B(b)A(a)da=B(b)df(a) dg(f(a))=B(b)A(a)da=B(b)df(a),即 d g ( b ) = B ( b ) d b dg(b)=B(b)db dg(b)=B(b)db,这恰好就是 g g g b b b处的微分的形式。这说明无论函数 g g g的变量是自变量还是中间变量,其微分形式就和 g g g只有自变量时一样(这里可以这样理解:给定一个函数,其微分是一个线性函数,即一个线性映射,即使该函数与其他函数复合,这并不影响该函数本身的微分这个线性映射)。
    【注】一阶微分的形式不变性说明了为什么自变量的微小增量也用微分符号d表示: d f ( a ) = A ( a ) d a df(a)=A(a)da df(a)=A(a)da中, d a da da既能表示 f f f a a a处的微分这个线性函数的自变量(这是人为规定的),又能表示把 f f f的自变量当成因变量(中间变量),其取值为 a a a时的微小增量(这是由形式不变性决定的)。

对于函数有多个自变量的情况,例如 y = f ( x 1 , x 2 , . . . , x n ) y=f(x_1,x_2,...,x_n) y=f(x1,x2,...,xn),其中 x 1 , x 2 , . . . , x n x_1,x_2,...,x_n x1,x2,...,xn分别是 m 1 , m 2 , . . . , m n m_1,m_2,...,m_n m1,m2,...,mn维向量,实际上可以看成只有一个自变量 x x x,其中 x = ( x 1 T , x 2 T , . . . , x n T ) T ∈ R ∑ i = 1 n m i x=(x_1^T,x_2^T,...,x_n^T)^T\in R^{\sum_{i=1}^nm_i} x=(x1T,x2T,...,xnT)TRi=1nmi, f f f的微分的定义仍适用。实际上,可以把 f f f的微分的定义等价地拆开写成 f ( x 1 + u 1 , x 2 + u 2 , . . . , x n + u n ) − f ( x 1 , x 2 , . . . , x n ) = A 1 u 1 + A 2 u 2 + . . . + A n u n + ο ( ∣ ∣ u 1 ∣ ∣ 2 2 + ∣ ∣ u 2 ∣ ∣ 2 2 + . . . + ∣ ∣ u n ∣ ∣ 2 2 )

f(x1+u1,x2+u2,...,xn+un)f(x1,x2,...,xn)=A1u1+A2u2+...+Anun+ο(||u1||22+||u2||22+...+||un||22)
=f(x1+u1,x2+u2,...,xn+un)f(x1,x2,...,xn)A1u1+A2u2+...+Anun+ο(u122+u222+...+un22 )相应地微分写成 d y = A 1 d x 1 + A 2 d x 2 + . . . + A n d x n = A d x dy=A_1dx_1+A_2dx_2+...+A_ndx_n=Adx dy=A1dx1+A2dx2+...+Andxn=Adx,其中 A i A_i Ai y y y x i x_i xi的导数, A = [ A 1 A 2 . . . A n ] , d x = ( d x 1 T , d x 2 T , . . . , d x n T ) T A=
[A1A2...An]
,dx=(dx_1^T,dx_2^T,...,dx_n^T)^T
A=[A1A2...An],dx=(dx1T,dx2T,...,dxnT)T

对于函数有多个中间变量的情况,复合函数的微分法则与一阶微分的形式不变性仍适用。例如 z = g ( y 1 , y 2 , . . . , y m ) z=g(y_1,y_2,...,y_m) z=g(y1,y2,...,ym) y i = f i ( x 1 , x 2 , . . . , x n ) y_i=f_i(x_1,x_2,...,x_n) yi=fi(x1,x2,...,xn),若 f 1 , f 2 , . . . , f m f_1,f_2,...,f_m f1,f2,...,fm都在点 x 0 = ( c 1 T , c 2 T , . . , c n T ) T x_0=(c_1^T,c_2^T,..,c_n^T)^T x0=(c1T,c2T,..,cnT)T可微, g g g在点 ( f 1 T ( x 0 ) , f 2 T ( x 0 ) , . . . , f m T ( x 0 ) ) T (f_1^T(x_0),f_2^T(x_0),...,f_m^T(x_0))^T (f1T(x0),f2T(x0),...,fmT(x0))T可微,那么复合函数 z = g ( f 1 ( x ) , f 2 ( x ) , . . . , f m ( x ) ) , x = ( x 1 T , x 2 T , . . , x n T ) T z=g(f_1(x),f_2(x),...,f_m(x)),x=(x_1^T,x_2^T,..,x_n^T)^T z=g(f1(x),f2(x),...,fm(x)),x=(x1T,x2T,..,xnT)T是否在点 x 0 x_0 x0可微呢?答案是肯定的,有如下定理保证:

  • 定理3:函数 f : D f → R m ( D f ⊆ R n ) f:D_f\rightarrow R^m(D_f\subseteq R^n) f:DfRm(DfRn)在点 a a a处可微的充要条件为 f f f的每个分量都在点 a a a处可微(证明略)
    【注】比较 f f f的微分 d f df df和分量 f i f_i fi的微分 d f i df_i dfi可知, d f = ( d f 1 , d f 2 , . . . , d f m ) T df=(df_1,df_2,...,df_m)^T df=(df1,df2,...,dfm)T

对于上述情形,利用该定理可知 f i f_i fi的任意分量都在 x 0 x_0 x0可微( i = 1 , 2 , . . , m i=1,2,..,m i=1,2,..,m),再利用该定理知 f = ( f 1 T , f 2 T , . . . , f m T ) T f=(f_1^T,f_2^T,...,f_m^T)^T f=(f1T,f2T,...,fmT)T x 0 x_0 x0可微,于是由复合函数微分法则得到上述结论。由于多个中间变量可以看成只有一个中间变量,故一阶微分的形式不变性仍成立。

例1:设 z = f ( x , y ) = x T A y , x ∈ R m , y ∈ R n z=f(x,y)=x^TAy,x\in R^m,y\in R^n z=f(x,y)=xTAy,xRm,yRn,求 ∂ z ∂ x \frac{\partial z}{\partial x} xz ∂ z ∂ y \frac{\partial z}{\partial y} yz
法1:根据梯度矩阵(梯度)的定义
∂ z ∂ x = [ ∂ z ∂ x 1 ⋮ ∂ z ∂ x m ] = [ ∂ ∑ i a i y x i ∂ x 1 ⋮ ∂ ∑ i a i y x i ∂ x m ] = [ a 1 y ⋮ a m y ] = A y

zx=[zx1zxm]=[iaiyxix1iaiyxixm]=[a1yamy]=Ay
xz=x1zxmz=x1iaiyxixmiaiyxi=a1yamy=Ay式中 a i a_i ai是矩阵 A A A的第i行。同理可得 ∂ z ∂ y = A T x \frac{\partial z}{\partial y}=A^Tx yz=ATx
法2:利用一阶微分的形式不变性
根据一阶微分的形式不变性容易证明以下几个微分公式:

  • d ( x T y ) = y T d x + x T d y d(x^Ty)=y^Tdx+x^Tdy d(xTy)=yTdx+xTdy
  • d ( A x ) = A d x d(Ax)=Adx d(Ax)=Adx

所以 d ( x T A y ) = ( A y ) T d x + x T d ( A y ) = ( A y ) T d x + x T A d y = ( A y ) T d x + ( A T x ) T d y d(x^TAy)=(Ay)^Tdx+x^Td(Ay)=(Ay)^Tdx+x^TAdy=(Ay)^Tdx+(A^Tx)^Tdy d(xTAy)=(Ay)Tdx+xTd(Ay)=(Ay)Tdx+xTAdy=(Ay)Tdx+(ATx)Tdy,由微分与导数的关系和梯度与导数的关系得 ∂ z ∂ x = A y \frac{\partial z}{\partial x}=Ay xz=Ay ∂ z ∂ y = A T x \frac{\partial z}{\partial y}=A^Tx yz=ATx

例2:设 z = f ( x , y ) = ( A x ) ⊙ ( B y ) , x ∈ R m , y ∈ R n , z ∈ R t z=f(x,y)=(Ax)\odot(By),x\in R^m,y\in R^n,z\in R^t z=f(x,y)=(Ax)(By),xRm,yRn,zRt,求 ∂ z ∂ x T \frac{\partial z}{\partial x^T} xTz ∂ z ∂ y T \frac{\partial z}{\partial y^T} yTz
【注】 ⊙ \odot 是Hardamard积,即逐元素乘积
法1:根据Jacobian矩阵(导数)的定义
∂ z ∂ x T = [ ∂ z 1 ∂ x 1 ⋯ ∂ z 1 ∂ x m ⋮ ⋱ ⋮ ∂ z t ∂ x 1 ⋯ ∂ z t ∂ x m ] = [ ∂ ( a 1 x ) ( b 1 y ) ∂ x 1 ⋯ ∂ ( a 1 x ) ( b 1 y ) ∂ x m ⋮ ⋱ ⋮ ∂ ( a t x ) ( b t y ) ∂ x 1 ⋯ ∂ ( a t x ) ( b t y ) ∂ x m ] = [ a 11 ( b 1 y ) ⋯ a 1 m ( b 1 y ) ⋮ ⋱ ⋮ a t 1 ( b t y ) ⋯ a t m ( b t y ) ] = d i a g ( B y ) A

zxT=[z1x1z1xmztx1ztxm]=[(a1x)(b1y)x1(a1x)(b1y)xm(atx)(bty)x1(atx)(bty)xm]=[a11(b1y)a1m(b1y)at1(bty)atm(bty)]=diag(By)A
xTz=x1z1x1ztxmz1xmzt=x1(a1x)(b1y)x1(atx)(bty)xm(a1x)(b1y)xm(atx)(bty)=a11(b1y)at1(bty)a1m(b1y)atm(bty)=diag(By)A其中 a i , b i a_i,b_i ai,bi分别是 A A A B B B的第i行。同理可得 ∂ z ∂ y T = d i a g ( A x ) B \frac{\partial z}{\partial y^T}=diag(Ax)B yTz=diag(Ax)B
法2:利用一阶微分的形式不变性
根据一阶微分的形式不变性可以证明如下微分公式:

  • d ( x ⊙ y ) = y ⊙ d x + x ⊙ d y = d i a g ( y ) d x + d i a g ( x ) d y d(x\odot y)=y\odot dx+x\odot dy=diag(y)dx+diag(x)dy d(xy)=ydx+xdy=diag(y)dx+diag(x)dy

所以 d z = ( B y ) ⊙ d ( A x ) + ( A x ) ⊙ d ( B y ) = ( B y ) ⊙ ( A d x ) + ( A x ) ⊙ ( B d y ) = d i a g ( B y ) A d x + d i a g ( A x ) B d y dz=(By)\odot d(Ax)+(Ax)\odot d(By)=(By)\odot (Adx)+(Ax)\odot (Bdy)=diag(By)Adx+diag(Ax)Bdy dz=(By)d(Ax)+(Ax)d(By)=(By)(Adx)+(Ax)(Bdy)=diag(By)Adx+diag(Ax)Bdy,故由微分与导数的关系得 ∂ z ∂ x T = d i a g ( B y ) A \frac{\partial z}{\partial x^T}=diag(By)A xTz=diag(By)A ∂ z ∂ y T = d i a g ( A x ) B \frac{\partial z}{\partial y^T}=diag(Ax)B yTz=diag(Ax)B


矩阵对标量求导

矩阵对标量求导用的不多,只简单提一下。
仿照定义1,我们可以写出以标量为自变量的矩阵函数的微分的定义,但由定理3启发,我们可以给出一个等价的定义:

  • 定义4:若矩阵函数 A ( t ) A(t) A(t)的每个元素 a i j ( t ) a_{ij}(t) aij(t)在点 t 0 ∈ R t_0\in R t0R处可微,则称 A ( t ) A(t) A(t) t 0 t_0 t0处可微,且其在该点的导数为 ∂ A ∂ t ( t 0 ) = [ ∂ a 11 ∂ t ( t 0 ) ⋯ ∂ a 1 n ∂ t ( t 0 ) ⋮ ⋱ ⋮ ∂ a m 1 ∂ t ( t 0 ) ⋯ ∂ a m n ∂ t ( t 0 ) ] \frac{\partial A}{\partial t}(t_0)=

    [a11t(t0)a1nt(t0)am1t(t0)amnt(t0)]
    tA(t0)=ta11(t0)tam1(t0)ta1n(t0)tamn(t0)
    【注】 A ( t ) A(t) A(t) t 0 t_0 t0处的微分写作 d A ( t 0 ) = ( d t 0 ) ∂ A ∂ t ( t 0 ) dA(t_0)=(dt_0)\frac{\partial A}{\partial t}(t_0) dA(t0)=(dt0)tA(t0)

  • 定理4(链式法则):设 A = A ( α ) A=A(\alpha) A=A(α) α = α 0 \alpha=\alpha_0 α=α0处可微,标量 α ( t ) \alpha(t) α(t) t 0 t_0 t0处可微, α 0 = α ( t 0 ) \alpha_0=\alpha(t_0) α0=α(t0),则 A ( α ( t ) ) A(\alpha(t)) A(α(t)) t 0 t_0 t0可微,且 ∂ A ∘ α ∂ t ( t 0 ) = ∂ α ∂ t ( t 0 ) ∂ A ∂ t ( α ( t 0 ) ) \frac{\partial A\circ\alpha}{\partial t}(t_0)=\frac{\partial \alpha}{\partial t}(t_0)\frac{\partial A}{\partial t}(\alpha(t_0)) tAα(t0)=tα(t0)tA(α(t0))

矩阵对标量求导有一些简单的公式,在此作为例子:
A ( t ) , B ( t ) A(t),B(t) A(t),B(t) t 0 t_0 t0处可微,则有

  • A A A B B B可加,则 ∂ ( A + B ) ∂ t ( t 0 ) = ∂ A ∂ t ( t 0 ) + ∂ B ∂ t ( t 0 ) \frac{\partial (A+B)}{\partial t}(t_0)=\frac{\partial A}{\partial t}(t_0)+\frac{\partial B}{\partial t}(t_0) t(A+B)(t0)=tA(t0)+tB(t0)
  • A A A B B B可乘,则 ∂ A B ∂ t ( t 0 ) = ∂ A ∂ t ( t 0 ) B ( t 0 ) + A ( t 0 ) ∂ B ∂ t ( t 0 ) \frac{\partial AB}{\partial t}(t_0)=\frac{\partial A}{\partial t}(t_0)B(t_0)+A(t_0)\frac{\partial B}{\partial t}(t_0) tAB(t0)=tA(t0)B(t0)+A(t0)tB(t0)
  • 设标量函数 α ( t ) \alpha(t) α(t) t 0 t_0 t0处可微,则 ∂ α A ∂ t ( t 0 ) = ∂ α ∂ t ( t 0 ) B ( t 0 ) + α ( t 0 ) ∂ B ∂ t ( t 0 ) \frac{\partial \alpha A}{\partial t}(t_0)=\frac{\partial \alpha}{\partial t}(t_0)B(t_0)+\alpha(t_0)\frac{\partial B}{\partial t}(t_0) tαA(t0)=tα(t0)B(t0)+α(t0)tB(t0)

标量对矩阵求导

这部分内容才是机器学习中需要用到的矩阵微分的核心内容。神经网络往往以一个标量值的代价函数作为优化目标,网络参数往往是矩阵形式的,前向传播的过程可以视为计算一个以多个矩阵为自变量的复合函数的值,反向传播的过程可以视为运用链式法则(或复合函数的微分法则)计算该标量函数对各个矩阵参数的导数。

鉴于以(多个)矩阵为自变量的标量函数本质上是多元数量值函数,我们先研究多元数量值函数的微分和导数的定义,然后将它们推广。由于多元数量值函数的微分可以视作多元向量值函数的微分的特例,因此在定义1中令 m = 1 m=1 m=1,就得到了多元数量值函数微分的概念:

  • 定义5:设 c ∈ R n c\in R^n cRn,函数 f : D → R f:D\rightarrow R f:DR c c c的某个半径为 r > 0 r>0 r>0的邻域 U ( c ) U(c) U(c)内有定义。若存在向量 a ∈ R n a\in R^{n} aRn,使得对于任意的 u ∈ U ˚ ( 0 ) u\in \mathring U(0) uU˚(0) 0 ∈ R n 0\in R^n 0Rn是零向量,去心邻域 U ˚ ( 0 ) \mathring U(0) U˚(0)的半径为 r r r)有如下关系成立: f ( c + u ) − f ( c ) = a T u + ο ( ∣ ∣ u ∣ ∣ 2 ) = ∑ i a i u i + ο ( ∑ i u i 2 ) f(c+u)-f(c)=a^Tu+\omicron(||u||_2)=\sum_{i}a_iu_i+\omicron(\sqrt{\sum_{i}u_i^2}) f(c+u)f(c)=aTu+ο(u2)=iaiui+ο(iui2 ),其中 ο ( ∣ ∣ u ∣ ∣ 2 ) \omicron(||u||_2) ο(u2)是当 u → 0 u\rightarrow 0 u0时的一个高阶无穷小,则称 f f f在点 c c c处是可微的,称 u u u的线性函数 a T u a^Tu aTu f f f在点 c c c处的微分,记作 d f ( c ) = a T u df(c)=a^Tu df(c)=aTu,并称 a a a f f f在点 c c c处的梯度向量,简称梯度。

注意到微分的本质是把函数局部线性化,得到函数在某一点的邻域内的线性主部,故很容易将定义5推广到以矩阵为自变量的标量函数的情形:

  • 定义6:设 ( a i j ) m × n = A ∈ R m × n (a_{ij})_{m\times n}=A\in R^{m\times n} (aij)m×n=ARm×n,存在 r > 0 r>0 r>0,数量值函数 y = f ( X ) y=f(X) y=f(X) ∣ ∣ X − A ∣ ∣ F < r ||X-A||_F<r XAF<r时有定义。若存在 ( b i j ) m × n = B ∈ R m × n (b_{ij})_{m\times n}=B\in R^{m\times n} (bij)m×n=BRm×n,使得对于任意的 ( u i j ) m × n = U ∈ R m × n (u_{ij})_{m\times n}=U\in R^{m\times n} (uij)m×n=URm×n满足 0 < ∣ ∣ U ∣ ∣ F < r 0<||U||_F<r 0<UF<r有如下关系成立: f ( A + U ) − f ( A ) = ∑ i j b i j u i j + ο ( ∑ i j u i j 2 ) = t r ( B T U ) + ο ( ∣ ∣ U ∣ ∣ F ) f(A+U)-f(A)=\sum_{ij}b_{ij}u_{ij}+\omicron(\sqrt{\sum_{ij}u_{ij}^2})=tr(B^TU)+\omicron(||U||_F) f(A+U)f(A)=ijbijuij+ο(ijuij2 )=tr(BTU)+ο(UF),则称 f f f在点 A A A处是可微的,称 U U U m × n m\times n m×n个元素的线性函数 t r ( B T U ) tr(B^TU) tr(BTU) f f f在点 A A A处的微分,记作 d f ( A ) = t r ( B T U ) df(A)=tr(B^TU) df(A)=tr(BTU),并称 B B B f f f在点 A A A处的梯度矩阵,简称梯度。 U U U是自变量在 A A A处的增量,常记作 U = d A U=dA U=dA,即 d f ( A ) = t r ( B T d A ) df(A)=tr(B^TdA) df(A)=tr(BTdA)
    【注】 t r ( ∙ ) tr(\bullet) tr()是指矩阵的迹; ∣ ∣ ∙ ∣ ∣ F ||\bullet||_F F是指矩阵的Frobenius范数,当矩阵为行向量或列向量时, ∣ ∣ ∙ ∣ ∣ F ||\bullet||_F F就是向量的Frobenius范数,即2范数,矩阵范数的内容见矩阵的条件数

用类似定理1的证明方法,可以证明 B = ∂ f ∂ X ( A ) = ( ∂ f ∂ x i j ( A ) ) m × n B=\frac{\partial f}{\partial X}(A)=(\frac{\partial f}{\partial x_{ij}}(A))_{m\times n} B=Xf(A)=(xijf(A))m×n即梯度矩阵与 f f f X X X的偏导相等(需要注意的是,以矩阵为自变量的实值函数也有Jacobian矩阵的定义,Jacobian矩阵是梯度矩阵的转置)
利用该结论可以证明如下微分公式:

  • d ∣ X ∣ = t r ( X ∗ d X ) d|X|=tr(X^*dX) dX=tr(XdX),其中 ∣ X ∣ |X| X是方阵 X X X(阶数大于等于2)的行列式, X ∗ X^* X X X X的伴随矩阵
    证:
    由行列式的定义, ∣ X ∣ = ∑ j x i j A i j |X|=\sum_jx_{ij}A_{ij} X=jxijAij对任意 i = 1 , 2 , . . . , n i=1,2,...,n i=1,2,...,n成立,其中 A i j A_{ij} Aij x i j x_{ij} xij的代数余子式(注意 x i j x_{ij} xij不是 A i j A_{ij} Aij的自变量,即 A i j A_{ij} Aij的取值与 x i j x_{ij} xij无关),则 ∂ ∣ X ∣ ∂ x i j = A i j \frac{\partial |X|}{\partial x_{ij}}=A_{ij} xijX=Aij,故 ∂ ∣ X ∣ ∂ X = ( X ∗ ) T \frac{\partial |X|}{\partial X}=(X^*)^T XX=(X)T d ∣ X ∣ = t r ( X ∗ d X ) d|X|=tr(X^*dX) dX=tr(XdX)

还可以证明如下导数公式:
f ( X ) , g ( X ) f(X),g(X) f(X),g(X)是以矩阵 X X X为自变量的数量值函数,若 f f f g g g A A A处可微,则 f ( X ) g ( X ) , f ( X ) + g ( X ) f(X)g(X),f(X)+g(X) f(X)g(X),f(X)+g(X) A A A处可微,且:

  • ∂ f ( X ) g ( X ) ∂ X = ∂ f ( X ) ∂ X g ( X ) + f ( X ) ∂ g ( X ) ∂ X \frac{\partial f(X)g(X)}{\partial X}=\frac{\partial f(X)}{\partial X}g(X)+f(X)\frac{\partial g(X)}{\partial X} Xf(X)g(X)=Xf(X)g(X)+f(X)Xg(X)
  • ∂ f ( X ) ± g ( X ) ∂ X = ∂ f ( X ) ∂ X ± ∂ g ( X ) ∂ X \frac{\partial f(X)\pm g(X)}{\partial X}=\frac{\partial f(X)}{\partial X}\pm\frac{\partial g(X)}{\partial X} Xf(X)±g(X)=Xf(X)±Xg(X)

现在我们依次考虑两种复合函数的情形:

  1. 内层函数是以矩阵为自变量的数量值函数,外层函数是一元数量值函数
  2. 内层函数是以矩阵为自变量的矩阵值函数(称为矩阵函数),外层函数是以矩阵为自变量的数量值函数

第一种情形:

  • 定理5:设 y = f ( X ) , y ∈ R , X ∈ R m × n y=f(X),y\in R, X\in R^{m\times n} y=f(X),yR,XRm×n在点 A A A处可微, z = g ( y ) , z ∈ R , y ∈ R z=g(y),z\in R,y\in R z=g(y),zR,yR在点 b = f ( A ) b=f(A) b=f(A)处可微,则 z = g ( f ( X ) ) z=g(f(X)) z=g(f(X))在点 A A A处可微,且在点 A A A处的微分为 d g ( f ( A ) ) = t r ( ( g ′ ( b ) ∂ f ∂ X ( A ) ) T d X ) dg(f(A))=tr((g'(b)\frac{\partial f}{\partial X}(A))^TdX) dg(f(A))=tr((g(b)Xf(A))TdX)

证明思路与定理2是类似的,证明的关键在于 l i m Δ X → O ο ( ∣ Δ y ∣ ) ∣ ∣ Δ X ∣ ∣ F = 0 lim_{\Delta X\rightarrow O}\frac{\omicron(|\Delta y|)}{||\Delta X||_F}=0 limΔXOΔXFο(Δy)=0,基本思路是改写为 l i m Δ X → O ο ( ∣ Δ y ∣ ) ∣ Δ y ∣ ∣ Δ y ∣ ∣ ∣ Δ X ∣ ∣ F = 0 lim_{\Delta X\rightarrow O}\frac{\omicron(|\Delta y|)}{|\Delta y|}\frac{|\Delta y|}{||\Delta X||_F}=0 limΔXOΔyο(Δy)ΔXFΔy=0,证明 l i m Δ X → O ο ( ∣ Δ y ∣ ) ∣ Δ y ∣ = 0 lim_{\Delta X\rightarrow O}\frac{\omicron(|\Delta y|)}{|\Delta y|}=0 limΔXOΔyο(Δy)=0 ∣ Δ y ∣ ∣ ∣ Δ X ∣ ∣ F \frac{|\Delta y|}{||\Delta X||_F} ΔXFΔy局部有界即可。利用绝对值不等式放缩, ∣ Δ y ∣ ⩽ ∣ t r ( ( ∂ f ∂ X ( A ) ) T Δ X ) ∣ + ∣ ο ( ∣ ∣ Δ X ) ∣ ∣ F ) ∣ |\Delta y|\leqslant|tr((\frac{\partial f}{\partial X}(A))^T\Delta X)|+|\omicron(||\Delta X)||_F)| Δytr((Xf(A))TΔX)+ο(ΔX)F) ∣ ο ( ∣ ∣ Δ X ) ∣ ∣ F ) ∣ ∣ ∣ Δ X ∣ ∣ F \frac{|\omicron(||\Delta X)||_F)|}{||\Delta X||_F} ΔXFο(ΔX)F)局部有界是显然的,而 ∣ t r ( ( ∂ f ∂ X ( A ) ) T Δ X ) ∣ ∣ ∣ Δ X ∣ ∣ F ⩽ ∑ i j ∣ ( ∂ f ∂ X i j ( A i j ) ∣ ∣ Δ X i j ∣ ∣ ∣ Δ X ∣ ∣ F ⩽ ∑ i j ∣ ( ∂ f ∂ X i j ( A i j ) ∣ \frac{|tr((\frac{\partial f}{\partial X}(A))^T\Delta X)|}{||\Delta X||_F}\leqslant\sum_{ij}\frac{|(\frac{\partial f}{\partial X_{ij}}(A_{ij})||\Delta X_{ij}|}{||\Delta X||_F}\leqslant\sum_{ij}|(\frac{\partial f}{\partial X_{ij}}(A_{ij})| ΔXFtr((Xf(A))TΔX)ijΔXF(Xijf(Aij)ΔXijij(Xijf(Aij),也是局部有界的。

第二种情形:
需要考虑矩阵函数的微分,下面给出矩阵函数的微分的定义。
这里不引入向量化和kronecker积的运算,在定义6的基础上仿照定义4的方式给出矩阵函数的微分的定义:

  • 定义7:设有矩阵函数 Y = F ( X ) , X ∈ R m × n , Y ∈ R p × q Y=F(X),X\in R^{m\times n},Y\in R^{p\times q} Y=F(X),XRm×n,YRp×q,若 F ( X ) F(X) F(X)的每个元素 f i j ( X ) , i = 1 , 2 , . . . , p , j = 1 , 2 , . . . , q f_{ij}(X),i=1,2,...,p,j=1,2,...,q fij(X),i=1,2,...,p,j=1,2,...,q都在点 A A A处可微,则称 F ( X ) F(X) F(X)在点 A A A处可微,且点 A A A处的微分为 d F ( A ) = [ d f 11 ( A ) . . . d f 1 q ( A ) ⋮ ⋱ ⋮ d f p 1 ( A ) ⋯ d f p q ( A ) ] dF(A)=
    [df11(A)...df1q(A)dfp1(A)dfpq(A)]
    dF(A)=df11(A)dfp1(A)...df1q(A)dfpq(A)
    该矩阵称为微分矩阵

复合矩阵函数的微分法则是成立的(从而微分的形式不变性也是成立的),但在不使用vec+kronecker计算的情况下应该是无法证明的,这个在后面的博客中再说(vec+kronecker可以参考数学-矩阵计算(2)矩阵函数微积分前奏

下面考虑有多个矩阵自变量的情况:

  • 定义8:设 A i ∈ R m i × n i , i = 1 , 2 , . . . , k A_i\in R^{m_i\times n_i},i=1,2,...,k AiRmi×ni,i=1,2,...,k,存在 r > 0 r>0 r>0,数量值函数 y = f ( X 1 , X 2 , . . . , X k ) , X i ∈ R m i × n i y=f(X_1,X_2,...,X_k),X_i\in R^{m_i\times n_i} y=f(X1,X2,...,Xk),XiRmi×ni ∑ i ∣ ∣ X i − A i ∣ ∣ F 2 < r \sqrt{\sum_{i}||X_i-A_i||_F^2}<r iXiAiF2 <r时有定义。若存在 B i ∈ R m i × n i , i = 1 , 2 , . . . , k B_i\in R^{m_i\times n_i},i=1,2,...,k BiRmi×ni,i=1,2,...,k,使得对于任意的 U i ∈ R m i × n i , i = 1 , 2 , . . . , k U_i\in R^{m_i\times n_i},i=1,2,...,k UiRmi×ni,i=1,2,...,k满足 0 < ∑ i ∣ ∣ U i ∣ ∣ F 2 < r 0<\sqrt{\sum_i||U_i||_F^2}<r 0<iUiF2 <r有如下关系成立: f ( A 1 + U 1 , A 2 + U 2 , . . . , A k + U k ) − f ( A 1 , A 2 , . . . , A k ) = ∑ i t r ( B i T U i ) + ο ( ∑ i ∣ ∣ U i ∣ ∣ F 2 ) f(A_1+U_1,A_2+U_2,...,A_k+U_k)-f(A_1,A_2,...,A_k)=\sum_itr(B_i^TU_i)+\omicron(\sqrt{\sum_i||U_i||_F^2}) f(A1+U1,A2+U2,...,Ak+Uk)f(A1,A2,...,Ak)=itr(BiTUi)+ο(iUiF2 ),则称 f f f ( A 1 , A 2 , . . . , A k ) (A_1,A_2,...,A_k) (A1,A2,...,Ak)处是可微的,记作 d f ( A 1 , . . . A k ) = ∑ i t r ( B i T d A i ) df(A_1,...A_k)=\sum_itr(B_i^TdA_i) df(A1,...Ak)=itr(BiTdAi)

可以证明定义中的 B i B_i Bi恰好是 f f f X i X_i Xi A i A_i Ai处的偏导 ∂ f ∂ X i ( A i ) \frac{\partial f}{\partial X_i}(A_i) Xif(Ai),微分形式不变性等仍成立,不再赘述。
下面根据定义7以及一阶微分的形式不变性证明若干常用的微分矩阵的计算公式,前面的例子中出现的微分公式都可以视作下面的公式的特例:(以下设 α ∈ R \alpha\in R αR为常数, β ∈ R \beta \in R βR为变量, A = ( a i j ) A=(a_{ij}) A=(aij)为常矩阵, X = ( x i j ) X=(x_{ij}) X=(xij), Y = ( y i j ) Y=(y_{ij}) Y=(yij)为变量,这三个矩阵的大小视公式中出现的运算而定)

  • d A = O dA=O dA=O
    证:
    d A = [ d a 11 ⋯ d a 1 n ⋮ ⋱ ⋮ d a m 1 ⋯ d a m n ] = O dA=
    [da11da1ndam1damn]
    =O
    dA=da11dam1da1ndamn=O
  • d ( α X ) = α d X d(\alpha X)=\alpha dX d(αX)=αdX
    证:
    d ( α X ) = [ d ( α x 11 ) ⋯ d ( α x 1 n ) ⋮ ⋱ ⋮ d ( α x m 1 ) ⋯ d ( α x m n ) ] = [ α d x 11 ⋯ α d x 1 n ⋮ ⋱ ⋮ α d x m 1 ⋯ α d x m n ] = α d X d(\alpha X)=
    [d(αx11)d(αx1n)d(αxm1)d(αxmn)]
    =
    [αdx11αdx1nαdxm1αdxmn]
    =\alpha dX
    d(αX)=d(αx11)d(αxm1)d(αx1n)d(αxmn)=αdx11αdxm1αdx1nαdxmn=αdX
  • d ( β X ) = ( d β ) X + β d X d(\beta X)=(d\beta)X+\beta dX d(βX)=(dβ)X+βdX
    证:
    d ( β X ) = [ d ( β x 11 ) ⋯ d ( β x 1 n ) ⋮ ⋱ ⋮ d ( β x m 1 ) ⋯ d ( β x m n ) ] = [ x 11 d β + β d x 11 ⋯ x 1 n d β + β d x 1 n ⋮ ⋱ ⋮ x m 1 d β + β d x m 1 ⋯ x m n d β + β d x m n ] = ( d β ) X + β d X d(\beta X)=
    [d(βx11)d(βx1n)d(βxm1)d(βxmn)]
    =
    [x11dβ+βdx11x1ndβ+βdx1nxm1dβ+βdxm1xmndβ+βdxmn]
    =(d\beta)X+\beta dX
    d(βX)=d(βx11)d(βxm1)d(βx1n)d(βxmn)=x11dβ+βdx11xm1dβ+βdxm1x1ndβ+βdx1nxmndβ+βdxmn=(dβ)X+βdX
  • d X T = ( d X ) T dX^T=(dX)^T dXT=(dX)T
    证:
    d X T = [ d x 11 ⋯ d x m 1 ⋮ ⋱ ⋮ d x 1 n ⋯ d x m n ] = ( d X ) T dX^T=
    [dx11dxm1dx1ndxmn]
    =(dX)^T
    dXT=dx11dx1ndxm1dxmn=(dX)T
  • d t r ( X ) = t r ( d X ) dtr(X)=tr(dX) dtr(X)=tr(dX)
    证:
    d t r ( X ) = d ∑ i x i i = ∑ i d x i i = t r ( d X ) dtr(X)=d\sum_ix_{ii}=\sum_idx_{ii}=tr(dX) dtr(X)=dixii=idxii=tr(dX)
  • F F F是一个逐元素函数,即 F ( X ) = [ f ( x 11 ) ⋯ f ( x 1 n ) ⋮ ⋱ ⋮ f ( x m 1 ) ⋯ f ( x m n ) ] , f : R → R F(X)=
    [f(x11)f(x1n)f(xm1)f(xmn)]
    ,f:R\rightarrow R
    F(X)=f(x11)f(xm1)f(x1n)f(xmn),f:RR
    ,则 d F ( X ) = F ′ ( X ) ⊙ d X dF(X)=F'(X)\odot dX dF(X)=F(X)dX,其中 F ′ F' F也是逐元素函数
    证:
    d F ( X ) = [ d f ( x 11 ) ⋯ d f ( x 1 n ) ⋮ ⋱ ⋮ d f ( x m 1 ) ⋯ d f ( x m n ) ] = [ f ′ ( x 11 ) d x 11 ⋯ f ′ ( x 1 n ) d x 1 n ⋮ ⋱ ⋮ f ′ ( x m 1 ) d x m 1 ⋯ f ′ ( x m n ) d x m n ] = F ′ ( X ) ⊙ d X dF(X)=
    [df(x11)df(x1n)df(xm1)df(xmn)]
    =
    [f(x11)dx11f(x1n)dx1nf(xm1)dxm1f(xmn)dxmn]
    =F'(X)\odot dX
    dF(X)=df(x11)df(xm1)df(x1n)df(xmn)=f(x11)dx11f(xm1)dxm1f(x1n)dx1nf(xmn)dxmn=F(X)dX
  • d ( X ± Y ) = d X ± d Y d(X\pm Y)=dX\pm dY d(X±Y)=dX±dY
    证:
    d ( X ± Y ) = [ d ( x 11 ± y 11 ) . . . d ( x 1 n ± y 1 n ) ⋮ ⋱ ⋮ d ( x m 1 ± y m 1 ) . . . d ( x m n ± y m n ) ] = [ d x 11 ± d y 11 . . . d x 1 n ± d y 1 n ⋮ ⋱ ⋮ d x m 1 ± d y m 1 . . . d x m n ± d y m n ] = d X ± d Y d(X\pm Y)=
    [d(x11±y11)...d(x1n±y1n)d(xm1±ym1)...d(xmn±ymn)]
    =
    [dx11±dy11...dx1n±dy1ndxm1±dym1...dxmn±dymn]
    =dX\pm dY
    d(X±Y)=d(x11±y11)d(xm1±ym1)......d(x1n±y1n)d(xmn±ymn)=dx11±dy11dxm1±dym1......dx1n±dy1ndxmn±dymn=dX±dY
  • d ( X Y ) = ( d X ) Y + X d Y d(XY)=(dX)Y+XdY d(XY)=(dX)Y+XdY
    证:
    由于 ( d ( X Y ) ) i j = d ∑ k x i k y k j = ∑ k ( y k j d x i k + x i k d y k j ) = ( ( d X ) Y ) i j + ( X d Y ) i j (d(XY))_{ij}=d\sum_kx_{ik}y_{kj}=\sum_k(y_{kj}dx_{ik}+x_{ik}dy_{kj})=((dX)Y)_{ij}+(XdY)_{ij} (d(XY))ij=dkxikykj=k(ykjdxik+xikdykj)=((dX)Y)ij+(XdY)ij,故 d ( X Y ) = ( d X ) Y + X d Y d(XY)=(dX)Y+XdY d(XY)=(dX)Y+XdY
  • d ( X ⊙ Y ) = d X ⊙ Y + X ⊙ d Y d(X\odot Y)=dX\odot Y+X\odot dY d(XY)=dXY+XdY
    证:
    由于 ( d ( X ⊙ Y ) ) i j = d ( x i j y i j ) = y i j d x i j + x i j d y i j = ( d X ⊙ Y ) i j + ( X ⊙ d Y ) i j (d(X\odot Y))_{ij}=d(x_{ij}y_{ij})=y_{ij}dx_{ij}+x_{ij}dy_{ij}=(dX\odot Y)_{ij}+(X\odot dY)_{ij} (d(XY))ij=d(xijyij)=yijdxij+xijdyij=(dXY)ij+(XdY)ij,故 d ( X ⊙ Y ) = d X ⊙ Y + X ⊙ d Y d(X\odot Y)=dX\odot Y+X\odot dY d(XY)=dXY+XdY
    【注】 ⊙ \odot 是逐元素乘积
  • d ( X ⊘ Y ) = ( d X ⊙ Y − X ⊙ d Y ) ⊘ ( Y ⊙ Y ) d(X\oslash Y)=(dX\odot Y-X\odot dY)\oslash(Y\odot Y) d(XY)=(dXYXdY)(YY)
    证:
    由于 ( d ( X ⊘ Y ) ) i j = d x i j y i j = y i j d x i j − x i j d y i j y i j 2 = Z i j (d(X\oslash Y))_{ij}=d\frac{x_{ij}}{y_{ij}}=\frac{y_{ij}dx_{ij}-x_{ij}dy_{ij}}{y_{ij}^2}=Z_{ij} (d(XY))ij=dyijxij=yij2yijdxijxijdyij=Zij,其中 Z = ( d X ⊙ Y − X ⊙ d Y ) ⊘ ( Y ⊙ Y ) Z=(dX\odot Y-X\odot dY)\oslash(Y\odot Y) Z=(dXYXdY)(YY),故 d ( X ⊘ Y ) = Z = ( d X ⊙ Y − X ⊙ d Y ) ⊘ ( Y ⊙ Y ) d(X\oslash Y)=Z=(dX\odot Y-X\odot dY)\oslash(Y\odot Y) d(XY)=Z=(dXYXdY)(YY)
    【注】 ⊘ \oslash 是逐元素除法

上面的公式基本就够用了,这些公式可以用来计算复合函数等复杂函数的微分矩阵,进而计算梯度矩阵/偏导矩阵。下面举几个微分矩阵和标量对矩阵求导的例子:(我们当然可以直接根据Jacobian矩阵或梯度矩阵的定义计算,但下面利用定义7/8+上面的微分公式+微分形式不变性来推导这些结果)
【注】关于矩阵的迹的运算律参考链接
微分矩阵:

  • d X − 1 = − X − 1 ( d X ) X − 1 dX^{-1}=-X^{-1}(dX)X^{-1} dX1=X1(dX)X1
    证:
    X − 1 X = I X^{-1}X=I X1X=I两边微分,得 ( d X − 1 ) X + X − 1 d X = O (dX^{-1})X+X^{-1}dX=O (dX1)X+X1dX=O,用 X − 1 X^{-1} X1右乘式的两端,得 d X − 1 + X − 1 ( d X ) X − 1 = O dX^{-1}+X^{-1}(dX)X^{-1}=O dX1+X1(dX)X1=O,即 d X − 1 = − X − 1 ( d X ) X − 1 dX^{-1}=-X^{-1}(dX)X^{-1} dX1=X1(dX)X1
  • d ln ⁡ ( X ) = d X ⊘ X d\ln(X)=dX \oslash X dln(X)=dXX,其中 ln ⁡ ( X ) \ln(X) ln(X)是将以e为底的对数函数逐元素应用到矩阵 X X X
    证:
    d ln ⁡ ( X ) = ( 1 ⊘ X ) ⊙ d X = d X ⊘ X d\ln(X)=(1\oslash X)\odot dX=dX\oslash X dln(X)=(1X)dX=dXX
  • d σ ( X ) = σ ( X ) ⊙ σ ( − X ) ⊙ d X d\sigma(X)=\sigma(X)\odot\sigma(-X)\odot dX dσ(X)=σ(X)σ(X)dX,其中 σ ( X ) \sigma(X) σ(X)是将sigmoid函数逐元素应用到矩阵 X X X
    【注】sigmoid函数是神经网络中常用的激活函数,定义为 σ : R → R + , σ ( z ) = 1 1 + e − z \sigma:R\rightarrow R_+,\sigma(z)=\frac{1}{1+e^{-z}} σ:RR+,σ(z)=1+ez1
    证:
    只需证明 ∀ z ∈ R , σ ′ ( z ) = σ ( z ) σ ( − z ) \forall z\in R,\sigma'(z)=\sigma(z)\sigma(-z) zR,σ(z)=σ(z)σ(z)。由sigmoid函数的定义得 ( 1 + e − z ) σ ( z ) = 1 (1+e^{-z})\sigma(z)=1 (1+ez)σ(z)=1,两端微分得 − e − z σ ( z ) d z + ( 1 + e − z ) σ ′ ( z ) d z = 0 -e^{-z}\sigma(z)dz+(1+e^{-z})\sigma'(z)dz=0 ezσ(z)dz+(1+ez)σ(z)dz=0,故 − e − z σ ( z ) + ( 1 + e − z ) σ ′ ( z ) = 0 -e^{-z}\sigma(z)+(1+e^{-z})\sigma'(z)=0 ezσ(z)+(1+ez)σ(z)=0 σ ′ ( z ) = e − z σ ( z ) 1 + e − z = σ ( z ) 1 + e z = σ ( z ) σ ( − z ) \sigma'(z)=\frac{e^{-z}\sigma(z)}{1+e^{-z}}=\frac{\sigma(z)}{1+e^{z}}=\sigma(z)\sigma(-z) σ(z)=1+ezezσ(z)=1+ezσ(z)=σ(z)σ(z)
  • d g ( x ) = 1 T e x d i a g ( e x ) − e x ( e x ) T ( 1 T e x ) 2 d x dg(x)=\frac{1^Te^xdiag(e^x)-e^x(e^x)^T}{(1^Te^x)^2}dx dg(x)=(1Tex)21Texdiag(ex)ex(ex)Tdx,其中 g ( x ) = e x 1 T e x , x ∈ R n g(x)=\frac{e^x}{1^Te^x},x\in R^n g(x)=1Texex,xRn e x e^x ex是将以 e e e为底的指数函数逐元素应用到向量 x x x
    【注】这里定义的函数 g g g就是softmax函数,softmax函数是神经网络中常用的激活函数,在分类问题中常用于输出层得到概率分布
    证:
    g ( x ) = e x 1 T e x , x ∈ R n g(x)=\frac{e^x}{1^Te^x},x\in R^n g(x)=1Texex,xRn 1 T e x g ( x ) = e x 1^Te^xg(x)=e^x 1Texg(x)=ex,两端微分得 1 T ( e x ⊙ d x ) g ( x ) + 1 T e x d g ( x ) = e x ⊙ d x 1^T(e^x\odot dx)g(x)+1^Te^xdg(x)=e^x\odot dx 1T(exdx)g(x)+1Texdg(x)=exdx,又因为 1 T ( e x ⊙ d x ) = t r ( 1 T ( e x ⊙ d x ) ) = t r ( ( 1 ⊙ e x ) T d x ) = ( e x ) T d x 1^T(e^x\odot dx)=tr(1^T(e^x\odot dx))=tr((1\odot e^x)^Tdx)=(e^x)^Tdx 1T(exdx)=tr(1T(exdx))=tr((1ex)Tdx)=(ex)Tdx,故 d g ( x ) = e x ⊙ d x − ( e x ) T d x g ( x ) 1 T e x = d i a g ( e x ) d x − g ( x ) ( e x ) T d x 1 T e x = 1 T e x d i a g ( e x ) − e x ( e x ) T ( 1 T e x ) 2 d x dg(x)=\frac{e^x\odot dx-(e^x)^Tdxg(x)}{1^Te^x}=\frac{diag(e^x)dx-g(x)(e^x)^Tdx}{1^Te^x}=\frac{1^Te^xdiag(e^x)-e^x(e^x)^T}{(1^Te^x)^2}dx dg(x)=1Texexdx(ex)Tdxg(x)=1Texdiag(ex)dxg(x)(ex)Tdx=(1Tex)21Texdiag(ex)ex(ex)Tdx

梯度矩阵/Jacobian矩阵:

  • ∂ t r ( X ) ∂ X = I \frac{\partial tr(X)}{\partial X}=I Xtr(X)=I
    证:
    d t r ( X ) = t r ( d X ) dtr(X)=tr(dX) dtr(X)=tr(dX)及定义7即证。
  • ∂ t r ( X T X ) ∂ X = 2 X \frac{\partial tr(X^TX)}{\partial X}=2X Xtr(XTX)=2X
    证:
    d ( t r ( X T X ) ) = t r ( d ( X T X ) ) = t r ( ( d X T ) X + X T d X ) = t r ( ( d X ) T X ) + t r ( X T d X ) = 2 t r ( X T d X ) d(tr(X^TX))=tr(d(X^TX))=tr((dX^T)X+X^TdX)=tr((dX)^TX)+tr(X^TdX)=2tr(X^TdX) d(tr(XTX))=tr(d(XTX))=tr((dXT)X+XTdX)=tr((dX)TX)+tr(XTdX)=2tr(XTdX)及定义7即证。
  • y = g ( x ) , x , y ∈ R n y=g(x),x,y\in R^n y=g(x),x,yRn,其中 g g g是softmax函数,则 ∂ y ∂ x T = [ y 1 ( 1 − y 1 ) − y 1 y 2 ⋯ − y 1 y n − y 2 y 1 y 2 ( 1 − y 2 ) ⋯ − y 2 y n ⋯ ⋯ ⋯ ⋯ − y n y 1 − y n y 2 ⋯ y n ( 1 − y n ) ] \frac{\partial y}{\partial x^T}=
    [y1(1y1)y1y2y1yny2y1y2(1y2)y2ynyny1yny2yn(1yn)]
    xTy=y1(1y1)y2y1yny1y1y2y2(1y2)yny2y1yny2ynyn(1yn)

    证:
    利用 d g ( x ) = 1 T e x d i a g ( e x ) − e x ( e x ) T ( 1 T e x ) 2 d x dg(x)=\frac{1^Te^xdiag(e^x)-e^x(e^x)^T}{(1^Te^x)^2}dx dg(x)=(1Tex)21Texdiag(ex)ex(ex)Tdx(这个例子也可以直接根据Jacobian矩阵的定义计算)。 ∂ y ∂ x T = 1 T e x d i a g ( e x ) − e x ( e x ) T ( 1 T e x ) 2 = 1 ( ∑ i e x i ) 2 ( ∑ i e x i [ e x 1 e x 2 ⋯ e x n ] − [ e x 1 e x 1 e x 1 e x 2 ⋯ e x 1 e x n e x 2 e x 1 e x 2 e x 2 ⋯ e x 2 e x n ⋯ ⋯ ⋯ ⋯ e x n e x 1 e x n e x 2 ⋯ e x n e x n ] ) = [ e x 1 ∑ i e x i ( 1 − e x 1 ∑ i e x i ) − e x 1 ∑ i e x i e x 2 ∑ i e x i ⋯ − e x 1 ∑ i e x i e x n ∑ i e x i − e x 2 ∑ i e x i e x 1 ∑ i e x i e x 2 ∑ i e x i ( 1 − e x 2 ∑ i e x i ) ⋯ − e x 2 ∑ i e x i e x n ∑ i e x i ⋯ ⋯ ⋯ ⋯ − e x n ∑ i e x i e x 1 ∑ i e x i − e x n ∑ i e x i e x 2 ∑ i e x i ⋯ e x n ∑ i e x i ( 1 − e x n ∑ i e x i ) ] = [ y 1 ( 1 − y 1 ) − y 1 y 2 ⋯ − y 1 y n − y 2 y 1 y 2 ( 1 − y 2 ) ⋯ − y 2 y n ⋯ ⋯ ⋯ ⋯ − y n y 1 − y n y 2 ⋯ y n ( 1 − y n ) ]
    yxT=1Texdiag(ex)ex(ex)T(1Tex)2=1(iexi)2(iexi[ex1ex2exn][ex1ex1ex1ex2ex1exnex2ex1ex2ex2ex2exnexnex1exnex2exnexn])=[ex1iexi(1ex1iexi)ex1iexiex2iexiex1iexiexniexiex2iexiex1iexiex2iexi(1ex2iexi)ex2iexiexniexiexniexiex1iexiexniexiex2iexiexniexi(1exniexi)]=[y1(1y1)y1y2y1yny2y1y2(1y2)y2ynyny1yny2yn(1yn)]
    xTy=(1Tex)21Texdiag(ex)ex(ex)T=(iexi)21(iexiex1ex2exnex1ex1ex2ex1exnex1ex1ex2ex2ex2exnex2ex1exnex2exnexnexn)=iexiex1(1iexiex1)iexiex2iexiex1iexiexniexiex1iexiex1iexiex2iexiex2(1iexiex2)iexiexniexiex2iexiex1iexiexniexiex2iexiexniexiexn(1iexiexn)=y1(1y1)y2y1yny1y1y2y2(1y2)yny2y1yny2ynyn(1yn)

应用

线性回归问题的最小二乘解

机器学习中的线性回归问题表述如下:
设有m个样本 s 1 , s 2 , . . . , s m s_1,s_2,...,s_m s1,s2,...,sm(为表示方便,假设 s i s_i si是行向量),每个样本包含n个特征( s i T ∈ R n s_i^T\in R^n siTRn),样本的标签分别是 y 1 , y 2 , . . . , y m ∈ R y_1,y_2,...,y_m\in R y1,y2,...,ymR。现要求得一线性模型 y i = s i θ + b y_i=s_i\theta+b yi=siθ+b对于任意i成立,其中 θ ∈ R n \theta\in R^n θRn b ∈ R b\in R bR是要求解的参数。该问题可写成如下矩阵形式:设 a i = [ 1 s i ] a_i=

[1si]
ai=[1si] A = [ a 1 a 2 . . . a m ] A=
[a1a2...am]
A=a1a2...am
(A称为设计矩阵), x = [ b θ ] x=
[bθ]
x=[bθ]
y = [ y 1 y 2 . . . y m ] y=
[y1y2...ym]
y=y1y2...ym
,求解参数向量x使得 A x = y Ax=y Ax=y。可见线性回归问题实质上就是求解一个线性方程组。

在前面的博客中,曾给出线性方程组最小二乘解的广义逆解法和投影矩阵解法,并证明了这些方法的正确性。现在利用矩阵微分的方法解决这个问题:
根据最小二乘解的定义,我们要最小化 f ( x ) = ∣ ∣ A x − y ∣ ∣ 2 f(x)=||Ax-y||_2 f(x)=Axy2,这等价于最小化 z = f ( x ) 2 = ∣ ∣ A x − y ∣ ∣ 2 2 = ( A x − y ) T ( A x − y ) z=f(x)^2=||Ax-y||_2^2=(Ax-y)^T(Ax-y) z=f(x)2=Axy22=(Axy)T(Axy) d z = ( A d x ) T ( A x − y ) + ( A x − y ) T A d x = 2 ( A x − y ) T A d x dz=(Adx)^T(Ax-y)+(Ax-y)^TAdx=2(Ax-y)^TAdx dz=(Adx)T(Axy)+(Axy)TAdx=2(Axy)TAdx,得 ∂ z ∂ x = 2 A T ( A x − y ) \frac{\partial z}{\partial x}=2A^T(Ax-y) xz=2AT(Axy) d ∂ z ∂ x = 2 A T A d x d\frac{\partial z}{\partial x}=2A^TAdx dxz=2ATAdx,故Hessian矩阵为 ∂ ∂ x T ( ∂ z ∂ x ) = 2 A T A \frac{\partial}{\partial x^T}(\frac{\partial z}{\partial x})=2A^TA xT(xz)=2ATA,是对称半正定的,故 z z z是凸函数。令 ∂ z ∂ x = 0 \frac{\partial z}{\partial x}=0 xz=0即得到全局最优解,得正规方程 A T A x = A T y A^TAx=A^Ty ATAx=ATy,这就证明了求最小二乘解等价于解正规方程。

L2正则化情形

正则化是一种提高模型泛化能力的技术,通过“权值衰减”的方式,缓解模型的过拟合问题。在线性回归中讨论L2正则化,不仅是因为这项技术能够增强模型的泛化能力,还因为对于线性回归问题来说,只要进行L2正则化,那么最优解存在且唯一。
S = [ s 1 s 2 . . . s m ] S=

[s1s2...sm]
S=s1s2...sm P = [ 0 0 1 × n 0 n × 1 I n ] P=
[001×n0n×1In]
P=[00n×101×nIn]
,则 A = [ 1 m × 1 S ] A=
[1m×1S]
A=[1m×1S]
θ = P x \theta=Px θ=Px。加入正则化项 λ ∣ ∣ θ ∣ ∣ 2 2 , λ > 0 \lambda ||\theta||_2^2,\lambda>0 λθ22,λ>0后,我们要优化的函数为 f ( x ) = ∣ ∣ A x − y ∣ ∣ 2 2 + λ ∣ ∣ θ ∣ ∣ 2 2 = ∣ ∣ A x − y ∣ ∣ 2 2 + λ ∣ ∣ P x ∣ ∣ 2 2 f(x)=||Ax-y||^2_2+\lambda ||\theta||_2^2=||Ax-y||^2_2+\lambda ||Px||_2^2 f(x)=Axy22+λθ22=Axy22+λPx22对该式微分得 1 2 d f = ( A x − y ) T A d x + λ x T P T P d x = ( A x − y ) T A d x + λ x T P d x
12df=(Axy)TAdx+λxTPTPdx=(Axy)TAdx+λxTPdx
21df=(Axy)TAdx+λxTPTPdx=(Axy)TAdx+λxTPdx
于是 1 2 ∂ f ∂ x = A T ( A x − y ) + λ P T x = A T ( A x − y ) + λ P x \frac{1}{2}\frac{\partial f}{\partial x}=A^T(Ax-y)+\lambda P^Tx=A^T(Ax-y)+\lambda Px 21xf=AT(Axy)+λPTx=AT(Axy)+λPx再求一次微分可得Hessian矩阵,易验证其为对称半正定的,于是带有L2正则化的线性回归仍是凸优化问题。令 ∂ f ∂ x = 0 \frac{\partial f}{\partial x}=0 xf=0得如下方程 ( A T A + λ P ) x = A T y (A^TA+\lambda P)x=A^Ty (ATA+λP)x=ATy只要 A T A + λ P A^TA+\lambda P ATA+λP可逆,则方程的解存在且唯一。为此,我们证明如下结论:

  • 定理: A T A + λ P A^TA+\lambda P ATA+λP是对称正定矩阵
    证明:
    对称性易证。现证明正定性:由 A = [ 1 m × 1 S ] A=
    [1m×1S]
    A=[1m×1S]
    P = [ 0 0 1 × n 0 n × 1 I n ] P=
    [001×n0n×1In]
    P=[00n×101×nIn]
    A T A = [ m 1 m × 1 T S S T 1 m × 1 S T S ] A^TA=
    [m1m×1TSST1m×1STS]
    ATA=[mST1m×11m×1TSSTS]
    A T A + λ P = [ m 1 m × 1 T S S T 1 m × 1 S T S + λ I n ] A^TA+\lambda P=
    [m1m×1TSST1m×1STS+λIn]
    ATA+λP=[mST1m×11m×1TSSTS+λIn]
    任意 0 ≠ z ∈ R n + 1 0\neq z\in R^{n+1} 0=zRn+1 z T A T A z = ( A z ) T ( A z ) = ∣ ∣ A z ∣ ∣ 2 2 ⩾ 0 z^TA^TAz=(Az)^T(Az)=||Az||_2^2\geqslant 0 zTATAz=(Az)T(Az)=Az220(即 A T A A^TA ATA是对称半正定的),令 z = ( z 1 , z ˜ T ) z=(z_1,\text{\~{z}}^T) z=(z1,z˜T),其中 z ˜ ∈ R n \text{\~{z}}\in R^n z˜Rn,则 z T A T A z = z T [ m 1 m × 1 T S S T 1 m × 1 S T S ] z = m z 1 2 + 2 ( z ˜ T S T 1 m × 1 ) z 1 + z ˜ T S T S z ˜ ⩾ 0
    zTATAz=zT[m1m×1TSST1m×1STS]z=mz12+2(\~{z}TST1m×1)z1+\~{z}TSTS\~{z}0
    zTATAz=zT[mST1m×11m×1TSSTS]z=mz12+2(z˜TST1m×1)z1+z˜TSTSz˜0
    z T ( A T A + λ P ) z = z T [ m 1 m × 1 T S S T 1 m × 1 S T S + λ I n ] z = m z 1 2 + 2 ( z ˜ T S T 1 m × 1 ) z 1 + z ˜ T S T S z ˜ + λ ∣ ∣ z ˜ ∣ ∣ 2 2 = z T A T A z + λ ∣ ∣ z ˜ ∣ ∣ 2 2
    zT(ATA+λP)z=zT[m1m×1TSST1m×1STS+λIn]z=mz12+2(\~{z}TST1m×1)z1+\~{z}TSTS\~{z}+λ||\~{z}||22=zTATAz+λ||\~{z}||22
    zT(ATA+λP)z=zT[mST1m×11m×1TSSTS+λIn]z=mz12+2(z˜TST1m×1)z1+z˜TSTSz˜+λz˜22=zTATAz+λz˜22
    z ˜ = 0 \text{\~{z}}=0 z˜=0时,由 z ≠ 0 z\neq 0 z=0 z 1 ≠ 0 z_1\neq 0 z1=0 z T ( A T A + λ P ) z = m z 1 2 > 0 z^T(A^TA+\lambda P)z=mz_1^2\gt 0 zT(ATA+λP)z=mz12>0;当 z ˜ ≠ 0 \text{\~{z}}\neq 0 z˜=0时, λ ∣ ∣ z ˜ ∣ ∣ 2 2 > 0 \lambda||\text{\~{z}}||_2^2\gt 0 λz˜22>0,故 z T ( A T A + λ P ) z = z T A T A z + λ ∣ ∣ z ˜ ∣ ∣ 2 2 > 0 z^T(A^TA+\lambda P)z=z^TA^TAz+\lambda||\text{\~{z}}||_2^2\gt 0 zT(ATA+λP)z=zTATAz+λz˜22>0
    综上,只要 z ≠ 0 z\neq 0 z=0就有 z T ( A T A + λ P ) z > 0 z^T(A^TA+\lambda P)z>0 zT(ATA+λP)z>0,故 A T A + λ P A^TA+\lambda P ATA+λP是对称正定矩阵。

因为 A T A + λ P A^TA+\lambda P ATA+λP是对称正定矩阵,故 A T A + λ P A^TA+\lambda P ATA+λP一定可逆。这就证明了 f ( x ) f(x) f(x)的最优解存在且唯一,且为 x = ( A T A + λ P ) − 1 A T y x=(A^TA+\lambda P)^{-1}A^Ty x=(ATA+λP)1ATy


多层前馈网络的反向传播

多层前馈网络又称多层感知机或BP网络,是回归问题/分类问题中常用的模型。
图片来自维基百科
在推导反向传播前,先看一下前向传播是怎么进行的。

单样本:
a [ l ] ∈ R n l a^{[l]}\in R^{n_l} a[l]Rnl是神经网络中第 l l l层的激励值,其中 n l n_l nl是第 l l l层的神经元个数, g [ l ] g^{[l]} g[l]是第 l l l层的激活函数, W [ l ] W^{[l]} W[l] b [ l ] b^{[l]} b[l]是第 l l l层的参数。设输入层是第0层,即对于样本 x ∈ R n 0 x\in R^{n_0} xRn0,有 a [ 0 ] = x a^{[0]}=x a[0]=x n 0 n_0 n0即该样本的特征数量。输出层是第 L L L层,即对于样本 x x x,网络的预测值 y ^ = a [ L ] ∈ R n L \hat y=a^{[L]}\in R^{n_L} y^=a[L]RnL。则前向传播的过程形式化如下:
依次对 l = 1 , 2 , . . . , L l=1,2,...,L l=1,2,...,L计算下式: z [ l ] = W [ l ] a [ l − 1 ] + b [ l ] a [ l ] = g [ l ] ( z [ l ] ) z^{[l]}=W^{[l]}a^{[l-1]}+b^{[l]}\\a^{[l]}=g^{[l]}(z^{[l]}) z[l]=W[l]a[l1]+b[l]a[l]=g[l](z[l])得到神经网络的预测值 y ^ = a [ L ] \hat y=a^{[L]} y^=a[L]后,计算损失函数的值 L ( y ^ , y ) L(\hat y,y) L(y^,y),其中 y y y是样本 x x x的真实标签。

多样本:
设有 m m m个样本 x ( 1 ) , x ( 2 ) , . . . , x ( m ) x^{(1)},x^{(2)},...,x^{(m)} x(1),x(2),...,x(m)按列构成矩阵 X X X,即 X ∈ R n 0 × m X\in R^{n_0\times m} XRn0×m,它们的标签 y ( 1 ) , y ( 2 ) , . . . , y ( m ) y^{(1)},y^{(2)},...,y^{(m)} y(1),y(2),...,y(m)按列构成矩阵 Y Y Y Y ∈ R n L × m Y\in R^{n_L\times m} YRnL×m(在分类问题中,样本的标签是one-hot向量,即目标概率分布)。多样本的情形实际上只是让 m m m个样本同时前向传播,神经网络的参数和单样本时是相同的。设 A [ l ] = [ a [ l ] ( 1 ) a [ l ] ( 2 ) ⋯ a [ l ] ( m ) ] A^{[l]}=

[a[l](1)a[l](2)a[l](m)]
A[l]=[a[l](1)a[l](2)a[l](m)],其中 a [ l ] ( i ) ∈ R n l a^{[l](i)}\in R^{n_l} a[l](i)Rnl是第 l l l层第 i i i个样本的激励值。多样本情形下的前向传播可形式化如下:
依次对 l = 1 , 2 , . . . , L l=1,2,...,L l=1,2,...,L计算下式: Z [ l ] = W [ l ] A [ l − 1 ] + b [ l ] 1 m × 1 T A [ l ] = G [ l ] ( Z [ l ] ) Z^{[l]}=W^{[l]}A^{[l-1]}+b^{[l]}1_{m\times 1}^T\\A^{[l]}=G^{[l]}(Z^{[l]}) Z[l]=W[l]A[l1]+b[l]1m×1TA[l]=G[l](Z[l])函数 G [ l ] : R n l × m → R n l × m G^{[l]}:R^{n_l\times m}\rightarrow R^{n_l\times m} G[l]:Rnl×mRnl×m满足 G [ l ] ( Z [ l ] ) = [ g [ l ] ( z [ l ] ( 1 ) ) g [ l ] ( z [ l ] ( 2 ) ) ⋯ g [ l ] ( z [ l ] ( m ) ) ] G^{[l]}(Z^{[l]})=
[g[l](z[l](1))g[l](z[l](2))g[l](z[l](m))]
G[l](Z[l])=[g[l](z[l](1))g[l](z[l](2))g[l](z[l](m))]
,其中 g [ l ] g^{[l]} g[l]是第 l l l层的激活函数(实际上多数激活函数是逐元素函数(softmax等除外),此时 G [ l ] G^{[l]} G[l] g [ l ] g^{[l]} g[l]可以统一定义为一个以矩阵为自变量的逐元素函数,不需要区分开)。神经网络的预测值为 A [ L ] = Y ^ = [ y ^ ( 1 ) y ^ ( 2 ) ⋯ y ^ ( m ) ] A^{[L]}=\hat Y=
[y^(1)y^(2)y^(m)]
A[L]=Y^=[y^(1)y^(2)y^(m)]
,其中 y ^ ( i ) = g [ L ] ( z [ L ] ( i ) ) \hat y^{(i)}=g^{[L]}(z^{[L](i)}) y^(i)=g[L](z[L](i)),损失函数 J ( Y ^ , Y ) J(\hat Y,Y) J(Y^,Y)的值一般取每个样本的损失函数值的平均值,即 J ( Y ^ , Y ) = 1 m ∑ i L ( y ^ ( i ) , y ( i ) ) J(\hat Y,Y)=\frac{1}{m}\sum_iL(\hat y^{(i)},y^{(i)}) J(Y^,Y)=m1iL(y^(i),y(i))
常用的损失函数:
对于回归问题,常用均方误差函数MSE: L ( y ^ , y ) = ∣ ∣ y ^ − y ∣ ∣ 2 2 L(\hat y,y)=||\hat y-y||_2^2 L(y^,y)=y^y22容易推导出对于多样本的情形有 J ( Y ^ , Y ) = 1 m ∣ ∣ Y ^ − Y ∣ ∣ F 2 J(\hat Y, Y)=\frac{1}{m}||\hat Y-Y||_F^2 J(Y^,Y)=m1Y^YF2对于分类问题,常用交叉熵代价函数CrossEntropyLoss:
如果输出层的激励函数采用sigmoid函数的话,则 L ( y ^ , y ) = − ∑ i = 1 n L ( y i ln ⁡ y ^ i + ( 1 − y i ) ln ⁡ ( 1 − y ^ i ) ) = − ( y T ln ⁡ y ^ + ( 1 − y ) T ln ⁡ ( 1 − y ^ ) ) L(\hat y,y)=-\sum_{i=1}^{n_L}(y_i\ln\hat y_i+(1-y_i)\ln(1-\hat y_i))=-(y^T\ln\hat y+(1-y)^T\ln(1-\hat y)) L(y^,y)=i=1nL(yilny^i+(1yi)ln(1y^i))=(yTlny^+(1y)Tln(1y^))容易推导出对于多样本的情形有 J ( Y ^ , Y ) = − 1 m t r ( Y T ln ⁡ Y ^ + ( 1 − Y ) T ln ⁡ ( 1 − Y ^ ) ) J(\hat Y, Y)=-\frac{1}{m}tr(Y^T\ln\hat Y+(1-Y)^T\ln(1-\hat Y)) J(Y^,Y)=m1tr(YTlnY^+(1Y)Tln(1Y^))如果输出层的激励函数采用softmax函数的话,则 L ( y ^ , y ) = − ∑ i = 1 n L y i ln ⁡ y ^ i = − y T ln ⁡ y ^ L(\hat y,y)=-\sum_{i=1}^{n_L}y_i\ln\hat y_i=-y^T\ln\hat y L(y^,y)=i=1nLyilny^i=yTlny^对于多样本的情形有 J ( Y ^ , Y ) = − 1 m t r ( Y T ln ⁡ Y ^ ) J(\hat Y,Y)=-\frac{1}{m}tr(Y^T\ln\hat Y) J(Y^,Y)=m1tr(YTlnY^)
一句话总结,前向传播就是在计算以多个矩阵为自变量的非线性实值函数 f ( X , Y , Θ ) = J ( Y ^ , Y ) f(X,Y,\Theta)=J(\hat Y, Y) f(X,Y,Θ)=J(Y^,Y),其中 Θ \Theta Θ是神经网络的参数组,包含神经网络中的所有参数 W [ 1 ] , b [ 1 ] , W [ 2 ] , b [ 2 ] , . . . , W [ L ] , b [ L ] W^{[1]},b^{[1]},W^{[2]},b^{[2]},...,W^{[L]},b^{[L]} W[1],b[1],W[2],b[2],...,W[L],b[L](很多资料中前向传播的概念是仅仅计算到输出层的值就可以了,但由于反向传播是从代价函数开始的,因此这里我们把使用输出层的值计算代价函数也视为前向传播的一部分)。由于计算过程是从输入层到输出层逐层传递的,因此称为“前向传播”。

由凸优化的相关理论知,最小化代价函数需要找到函数的一个下降方向,而负梯度方向是一个自然存在的下降方向,因此需要一个算法求出代价函数对网络的各个参数矩阵的梯度矩阵。反向传播算法(BP)以复合函数的微分法则(或复合函数的链导法则)为理论基础,从输出层(准确说是从代价函数)开始到输入层,逐层求解代价函数对各层参数的梯度矩阵,从而得到代价函数的一个下降方向。

下面以分类问题为例推导BP算法,输出层激励函数采用Softmax,代价函数采用交叉熵代价函数。由于单样本的前向、反向传播过程可以视为多样本情形的特例(即 m = 1 m=1 m=1),因此下面只推导多样本情形:

一些前提结论(这些结论将在推导过程中直接使用):

  • d g ( x ) ⊘ g ( x ) = d x − 1 n × 1 g ( x ) T d x , x ∈ R n dg(x)\oslash g(x)=dx-1_{n\times 1}g(x)^Tdx,x\in R^n dg(x)g(x)=dx1n×1g(x)Tdx,xRn,其中 g g g是softmax函数
    证:
    由于 d g ( x ) ⊘ g ( x ) = d ln ⁡ g ( x ) dg(x)\oslash g(x)=d\ln g(x) dg(x)g(x)=dlng(x),因此先计算 ln ⁡ g ( x ) \ln g(x) lng(x) ln ⁡ g ( x ) = ln ⁡ e x 1 T e x = ln ⁡ ( e x ⊘ ( 1 T e x 1 n × 1 ) ) = ln ⁡ e x − ln ⁡ ( 1 T e x 1 n × 1 ) = x − ln ⁡ ( 1 T e x 1 n × 1 )
    lng(x)=lnex1Tex=ln(ex(1Tex1n×1))=lnexln(1Tex1n×1)=xln(1Tex1n×1)
    lng(x)=ln1Texex=ln(ex(1Tex1n×1))=lnexln(1Tex1n×1)=xln(1Tex1n×1)
    d ln ⁡ g ( x ) = d x − d ln ⁡ ( 1 T e x 1 n × 1 ) = d x − ( 1 T ( d e x ) 1 n × 1 ) ⊘ ( 1 T e x 1 n × 1 ) = d x − 1 T ( e x ⊙ d x ) 1 n × 1 1 T e x = d x − ( e x ) T d x 1 n × 1 1 T e x = d x − 1 n × 1 g ( x ) T d x
    \begin{aligned}\begin{aligned}d\ln g(x)&=dx-d\ln(1^Te^x1_{n\times 1})\\&=dx-(1^T(de^x)1_{n\times 1})\oslash(1^Te^x1_{n\times 1})\\&=dx-\frac{1^T(e^x\odot dx)1_{n\times 1}}{1^Te^x}\\&=dx-\frac{(e^x)^Tdx1_{n\times 1}}{1^Te^x}\\&=dx-1_{n\times 1}g(x)^Tdx\end{aligned}
    \end{aligned}
    dlng(x)=dxdln(1Tex1n×1)=dx(1T(dex)1n×1)(1Tex1n×1)=dx1Tex1T(exdx)1n×1=dx1Tex(ex)Tdx1n×1=dx1n×1g(x)Tdx
  • [ a 1 a 2 ⋯ a n ] = A ∈ R m × n , [ b 1 b 2 ⋯ b n ] = B ∈ R m × n
    [a1a2an]
    =A\in R^{m\times n},
    [b1b2bn]
    =B\in R^{m\times n}
    [a1a2an]=ARm×n,[b1b2bn]=BRm×n
    ,则 t r ( [ a 1 T b 1 1 n × 1 a 2 T b 2 1 n × 1 ⋯ a n T b n 1 n × 1 ] ) = t r ( A T B ) tr(
    [a1Tb11n×1a2Tb21n×1anTbn1n×1]
    )=tr(A^TB)
    tr([a1Tb11n×1a2Tb21n×1anTbn1n×1])=tr(ATB)

    (它们的值都是 ∑ i j a i j b i j \sum_{ij}a_{ij}b_{ij} ijaijbij
  • 在分类问题中有 Y T 1 n L × 1 = 1 m × 1 Y^T1_{n_L\times 1}=1_{m\times 1} YT1nL×1=1m×1,其中 Y ∈ R n L × m Y\in R^{n_L\times m} YRnL×m是m个样本的标签(one-hot形式)按列排成的矩阵, n L n_L nL是网络的输出层的神经元数目,即类别数
    (这是因为概率分布的总和是1,也可以从one-hot向量的格式看出来,one-hot向量只有一个分量是1,其他分量都是0)
  • 前面提到过的一些微分公式

推导过程:
从代价函数开始到输出层(输出层激励函数 g [ L ] g^{[L]} g[L]是softmax函数):
d J = − 1 m t r ( Y T d ln ⁡ Y ^ ) = − 1 m t r ( Y T ( d Y ^ ⊘ Y ^ ) )

dJ=1mtr(YTdlnY^)=1mtr(YT(dY^Y^))
dJ=m1tr(YTdlnY^)=m1tr(YT(dY^Y^)) d Y ^ ⊘ Y ^ = d G [ L ] ( Z [ L ] ) ⊘ G [ L ] ( Z [ L ] ) = [ d g [ L ] ( z [ L ] ( 1 ) ) ⋯ d g [ L ] ( z [ L ] ( m ) ) ] ⊘ [ g [ L ] ( z [ L ] ( 1 ) ) ⋯ g [ L ] ( z [ L ] ( m ) ) ] = [ d g [ L ] ( z [ L ] ( 1 ) ) ⊘ g [ L ] ( z [ L ] ( 1 ) ) ⋯ d g [ L ] ( z [ L ] ( m ) ) ⊘ g [ L ] ( z [ L ] ( m ) ) ] = [ d z [ L ] ( 1 ) − 1 n L × 1 g [ L ] ( z [ L ] ( 1 ) ) T d z [ L ] ( 1 ) ⋯ d z [ L ] ( m ) − 1 n L × 1 g [ L ] ( z [ L ] ( m ) ) T d z [ L ] ( m ) ] = d Z [ L ] − [ 1 n L × 1 ( y ^ ( 1 ) ) T d z [ L ] ( 1 ) ⋯ 1 n L × 1 ( y ^ ( m ) ) T d z [ L ] ( m ) ]
dY^Y^=dG[L](Z[L])G[L](Z[L])=[dg[L](z[L](1))dg[L](z[L](m))][g[L](z[L](1))g[L](z[L](m))]=[dg[L](z[L](1))g[L](z[L](1))dg[L](z[L](m))g[L](z[L](m))]=[dz[L](1)1nL×1g[L](z[L](1))Tdz[L](1)dz[L](m)1nL×1g[L](z[L](m))Tdz[L](m)]=dZ[L][1nL×1(y^(1))Tdz[L](1)1nL×1(y^(m))Tdz[L](m)]
dY^Y^=dG[L](Z[L])G[L](Z[L])=[dg[L](z[L](1))dg[L](z[L](m))][g[L](z[L](1))g[L](z[L](m))]=[dg[L](z[L](1))g[L](z[L](1))dg[L](z[L](m))g[L](z[L](m))]=[dz[L](1)1nL×1g[L](z[L](1))Tdz[L](1)dz[L](m)1nL×1g[L](z[L](m))Tdz[L](m)]=dZ[L][1nL×1(y^(1))Tdz[L](1)1nL×1(y^(m))Tdz[L](m)]
− m d J = t r ( Y T ( d Y ^ ⊘ Y ^ ) ) = t r ( Y T ( d Z [ L ] − [ 1 n L × 1 ( y ^ ( 1 ) ) T d z [ L ] ( 1 ) ⋯ 1 n L × 1 ( y ^ ( m ) ) T d z [ L ] ( m ) ] ) ) = t r ( Y T d Z [ L ] ) − t r ( [ Y T 1 n L × 1 ( y ^ ( 1 ) ) T d z [ L ] ( 1 ) ⋯ Y T 1 n L × 1 ( y ^ ( m ) ) T d z [ L ] ( m ) ] ) = t r ( Y T d Z [ L ] ) − t r ( [ 1 m × 1 ( y ^ ( 1 ) ) T d z [ L ] ( 1 ) ⋯ 1 m × 1 ( y ^ ( m ) ) T d z [ L ] ( m ) ] ) = t r ( Y T d Z [ L ] ) − t r ( Y ^ T d Z [ L ] ) = t r ( ( Y − Y ^ ) T d Z [ L ] )
mdJ=tr(YT(dY^Y^))=tr(YT(dZ[L][1nL×1(y^(1))Tdz[L](1)1nL×1(y^(m))Tdz[L](m)]))=tr(YTdZ[L])tr([YT1nL×1(y^(1))Tdz[L](1)YT1nL×1(y^(m))Tdz[L](m)])=tr(YTdZ[L])tr([1m×1(y^(1))Tdz[L](1)1m×1(y^(m))Tdz[L](m)])=tr(YTdZ[L])tr(Y^TdZ[L])=tr((YY^)TdZ[L])
mdJ=tr(YT(dY^Y^))=tr(YT(dZ[L][1nL×1(y^(1))Tdz[L](1)1nL×1(y^(m))Tdz[L](m)]))=tr(YTdZ[L])tr([YT1nL×1(y^(1))Tdz[L](1)YT1nL×1(y^(m))Tdz[L](m)])=tr(YTdZ[L])tr([1m×1(y^(1))Tdz[L](1)1m×1(y^(m))Tdz[L](m)])=tr(YTdZ[L])tr(Y^TdZ[L])=tr((YY^)TdZ[L])
由微分和梯度矩阵的关系得 ∂ J ∂ Z [ L ] = 1 m ( Y ^ − Y ) \frac{\partial J}{\partial Z^{[L]}}=\frac{1}{m}(\hat Y-Y) Z[L]J=m1(Y^Y),可见梯度矩阵的形式十分简单。这就是机器学习框架(如Tensorflow和Pytorch)中CrossEntropyLoss的实现要把softmax集成到loss函数中的原因,因为这样的话在反向传播时能节省大量不必要的运算,做个矩阵减法就是导数了(还有一点就是前向传播时log和softmax结合也可以简化运算)。
Pytorch官方文档
Tensorflow官方文档
在这里插入图片描述
【注】当输出层的激励函数采用sigmoid函数,代价函数采用交叉熵代价函数时,反向传播有类似的结果,感兴趣的读者可以自己试一下。

输出层还没算完: d Z [ L ] = ( d W [ L ] ) A [ L − 1 ] + W [ L ] d A [ L − 1 ] + ( d b [ L ] ) 1 m × 1 T dZ^{[L]}=(dW^{[L]})A^{[L-1]}+W^{[L]}dA^{[L-1]}+(db^{[L]})1_{m\times 1}^T dZ[L]=(dW[L])A[L1]+W[L]dA[L1]+(db[L])1m×1T d J = t r ( ( ∂ J ∂ Z [ L ] ) T d Z [ L ] ) = t r ( ( ∂ J ∂ Z [ L ] ) T ( d W [ L ] ) A [ L − 1 ] ) + t r ( ( ∂ J ∂ Z [ L ] ) T W [ L ] d A [ L − 1 ] ) + t r ( ( ∂ J ∂ Z [ L ] ) T ( d b [ L ] ) 1 m × 1 T ) = t r ( ( ∂ J ∂ Z [ L ] ( A [ L − 1 ] ) T ) T d W [ L ] ) + t r ( ( ( W [ L ] ) T ∂ J ∂ Z [ L ] ) T d A [ L − 1 ] ) + t r ( ( ∂ J ∂ Z [ L ] 1 m × 1 ) T d b [ L ] )

dJ=tr((JZ[L])TdZ[L])=tr((JZ[L])T(dW[L])A[L1])+tr((JZ[L])TW[L]dA[L1])+tr((JZ[L])T(db[L])1m×1T)=tr((JZ[L](A[L1])T)TdW[L])+tr(((W[L])TJZ[L])TdA[L1])+tr((JZ[L]1m×1)Tdb[L])
dJ=tr((Z[L]J)TdZ[L])=tr((Z[L]J)T(dW[L])A[L1])+tr((Z[L]J)TW[L]dA[L1])+tr((Z[L]J)T(db[L])1m×1T)=tr((Z[L]J(A[L1])T)TdW[L])+tr(((W[L])TZ[L]J)TdA[L1])+tr((Z[L]J1m×1)Tdb[L])故由微分与梯度矩阵的关系得 ∂ J ∂ W [ L ] = ∂ J ∂ Z [ L ] ( A [ L − 1 ] ) T \frac{\partial J}{\partial W^{[L]}}=\frac{\partial J}{\partial Z^{[L]}}(A^{[L-1]})^T W[L]J=Z[L]J(A[L1])T ∂ J ∂ b [ L ] = ∂ J ∂ Z [ L ] 1 m × 1 \frac{\partial J}{\partial b^{[L]}}=\frac{\partial J}{\partial Z^{[L]}}1_{m\times 1} b[L]J=Z[L]J1m×1 ∂ J ∂ A [ L − 1 ] = ( W [ L ] ) T ∂ J ∂ Z [ L ] \frac{\partial J}{\partial A^{[L-1]}}=(W^{[L]})^T\frac{\partial J}{\partial Z^{[L]}} A[L1]J=(W[L])TZ[L]J。这就得到了代价函数对输出层参数 W [ L ] , b [ L ] W^{[L]},b^{[L]} W[L],b[L]的梯度。通过将 ∂ J ∂ A [ L − 1 ] \frac{\partial J}{\partial A^{[L-1]}} A[L1]J保存下来,求导运算可以继续传播下去。为了后面表示方便,我们把上面的微分式中的每一项用单个符号代替,即简写为 d J = d J W [ L ] + d J A [ L − 1 ] + d J b [ L ] dJ=dJ_{W^{[L]}}+dJ_{A^{[L-1]}}+dJ_{b^{[L]}} dJ=dJW[L]+dJA[L1]+dJb[L],注意后面计算时只会把 d J A [ L − 1 ] dJ_{A^{[L-1]}} dJA[L1]展开, d J W [ L ] dJ_{W^{[L]}} dJW[L] d J b [ L ] dJ_{b^{[L]}} dJb[L]是不会再变的。同理,对于任意变量 V V V d J V dJ_{V} dJV表示 J J J V V V的微分项。

从第 l l l层到第 l − 1 l-1 l1层:
假设第 l l l层的梯度已得出,即已知 ∂ J ∂ W [ l ] \frac{\partial J}{\partial W^{[l]}} W[l]J ∂ J ∂ b [ l ] \frac{\partial J}{\partial b^{[l]}} b[l]J ∂ J ∂ A [ l − 1 ] \frac{\partial J}{\partial A^{[l-1]}} A[l1]J,则通过 ∂ J ∂ A [ l − 1 ] \frac{\partial J}{\partial A^{[l-1]}} A[l1]J可以计算第 l − 1 l-1 l1层的梯度: d A [ l − 1 ] = d G [ l − 1 ] ( Z [ l − 1 ] ) = [ d g [ l − 1 ] ( z [ l − 1 ] ( 1 ) ) ⋯ d g [ l − 1 ] ( z [ l − 1 ] ( m ) ) ] = [ ∂ g [ l − 1 ] ∂ z [ l − 1 ] ( 1 ) T d z [ l − 1 ] ( 1 ) ⋯ ∂ g [ l − 1 ] ∂ z [ l − 1 ] ( m ) T d z [ l − 1 ] ( m ) ]

dA[l1]=dG[l1](Z[l1])=[dg[l1](z[l1](1))dg[l1](z[l1](m))]=[g[l1]z[l1](1)Tdz[l1](1)g[l1]z[l1](m)Tdz[l1](m)]
dA[l1]=dG[l1](Z[l1])=[dg[l1](z[l1](1))dg[l1](z[l1](m))]=[z[l1](1)Tg[l1]dz[l1](1)z[l1](m)Tg[l1]dz[l1](m)] d J A [ l − 1 ] = t r ( ( ∂ J ∂ A [ l − 1 ] ) T d A [ l − 1 ] ) = t r ( [ ( ∂ J ∂ A [ l − 1 ] ) T ∂ g [ l − 1 ] ∂ z [ l − 1 ] ( 1 ) T d z [ l − 1 ] ( 1 ) ⋯ ( ∂ J ∂ A [ l − 1 ] ) T ∂ g [ l − 1 ] ∂ z [ l − 1 ] ( m ) T d z [ l − 1 ] ( m ) ] ) = t r ( ( B [ l − 1 ] ) T d Z [ l − 1 ] )
dJA[l1]=tr((JA[l1])TdA[l1])=tr([(JA[l1])Tg[l1]z[l1](1)Tdz[l1](1)(JA[l1])Tg[l1]z[l1](m)Tdz[l1](m)])=tr((B[l1])TdZ[l1])
dJA[l1]=tr((A[l1]J)TdA[l1])=tr([(A[l1]J)Tz[l1](1)Tg[l1]dz[l1](1)(A[l1]J)Tz[l1](m)Tg[l1]dz[l1](m)])=tr((B[l1])TdZ[l1])
其中 B [ l − 1 ] = [ ( ∂ g [ l − 1 ] T ∂ z [ l − 1 ] ( 1 ) ∂ J ∂ A [ l − 1 ] ) 1 ⋯ ( ∂ g [ l − 1 ] T ∂ z [ l − 1 ] ( m ) ∂ J ∂ A [ l − 1 ] ) m ] B^{[l-1]}=
[(g[l1]Tz[l1](1)JA[l1])1(g[l1]Tz[l1](m)JA[l1])m]
B[l1]=[(z[l1](1)g[l1]TA[l1]J)1(z[l1](m)g[l1]TA[l1]J)m]
故由微分与梯度矩阵的关系得 ∂ J ∂ Z [ l − 1 ] = B [ l − 1 ] \frac{\partial J}{\partial Z^{[l-1]}}=B^{[l-1]} Z[l1]J=B[l1]
实际上,大多激活函数都是逐元素函数(例如sigmoid,tanh,relu等等),此时 G [ l − 1 ] G^{[l-1]} G[l1]也是一个逐元素函数,故 d A [ l − 1 ] = d G [ l − 1 ] ( Z [ l − 1 ] ) = G [ l − 1 ] ′ ( Z [ l − 1 ] ) ⊙ d Z [ l − 1 ] dA^{[l-1]}=dG^{[l-1]}(Z^{[l-1]})=G^{[l-1]'}(Z^{[l-1]})\odot dZ^{[l-1]} dA[l1]=dG[l1](Z[l1])=G[l1](Z[l1])dZ[l1] d J A [ l − 1 ] = t r ( ( ∂ J ∂ A [ l − 1 ] ) T d A [ l − 1 ] ) = t r ( ( ∂ J ∂ A [ l − 1 ] ) T ( G [ l − 1 ] ′ ( Z [ l − 1 ] ) ⊙ d Z [ l − 1 ] ) ) = t r ( ( ∂ J ∂ A [ l − 1 ] ⊙ G [ l − 1 ] ′ ( Z [ l − 1 ] ) ) T d Z [ l − 1 ] ) )
dJA[l1]=tr((JA[l1])TdA[l1])=tr((JA[l1])T(G[l1](Z[l1])dZ[l1]))=tr((JA[l1]G[l1](Z[l1]))TdZ[l1]))
dJA[l1]=tr((A[l1]J)TdA[l1])=tr((A[l1]J)T(G[l1](Z[l1])dZ[l1]))=tr((A[l1]JG[l1](Z[l1]))TdZ[l1]))
故由微分与梯度矩阵的关系得 ∂ J ∂ Z [ l − 1 ] = ∂ J ∂ A [ l − 1 ] ⊙ G [ l − 1 ] ′ ( Z [ l − 1 ] ) \frac{\partial J}{\partial Z^{[l-1]}}=\frac{\partial J}{\partial A^{[l-1]}}\odot G^{[l-1]'}(Z^{[l-1]}) Z[l1]J=A[l1]JG[l1](Z[l1])。得到了 ∂ J ∂ Z [ l − 1 ] \frac{\partial J}{\partial Z^{[l-1]}} Z[l1]J后,计算代价函数对第 l − 1 l-1 l1层的参数 W [ l − 1 ] , b [ l − 1 ] W^{[l-1]},b^{[l-1]} W[l1],b[l1]的梯度的方法与输出层是相同的,故不再赘述。


循环神经网络的反向传播(待补充)

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

exp(i)

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

举报

选择你想要举报的内容(必选)
  • 内容涉黄
  • 政治相关
  • 内容抄袭
  • 涉嫌广告
  • 内容侵权
  • 侮辱谩骂
  • 样式问题
  • 其他
新手
引导
客服 举报 返回
顶部