(《机器学习》完整版系列)第5章 神经网络——5.4 BP算法的高级表达(简洁之美)

对数学成绩好的同学,可以学习BP算法的高级表达,即由向量和矩阵表达BP算法中的公式。

BP算法的高级表达

在博偏导数与梯度中,我们提到梯度的偏导数表达有两种形式,一是整体形式;二是分量形式。 【西瓜书式(5.11)   ∼ \,\thicksim (5.14)】及其推导过程——误差逆传播算法均采取分量形式,这里我们再用整体形式处理,主要是针对数学成绩好的同学,你可视其为BP算法的高级表达。

第一步:画计算图

我们将【西瓜书图5.7】BP网络的前馈运算过程(从输入至目标函数 E k E_k Ek)的计算图画出来,如图 11所示,它关注“运算过程”的分拆和复合。 图中,实圆圈表示变量(向量或标量),虚圆圈表示常量,箭头线表示运算方向。 对比【西瓜书图5.7】,有:(1)【西瓜书图5.7】中的结点在这里仍体现为结点,但这里每层用一个圆圈表示向量,如, x = ( x 1 ; x 2 ; ⋯   ; x d ) \boldsymbol{x}=(x_1;x_2;\cdots;x_d) x=(x1;x2;;xd),其余情况类似;(2)【西瓜书图5.7】中的连线组在这里却体现为结点(实际上是表示这些连线上的权重组成的向量)。 另外,这里还增加了一些结点,包括将复合过程分拆和计算目标函数。
图11 计算图

图11 计算图

第二步:写函数式

图 11中从下至上,体现了前馈运算过程,将过程的式子依次表达出来(其中,依神经网络中的梯度式(A74)处的讨论,式(5.20)、式(5.22)两式已将分组向量转化为矩阵),即
α = V T x 其中: V T = ( v . 1 T ; v . 2 T ; ⋯   ; v . q T ) 即: V = ( [ v i h ] i h ) d × q b = ( [ f ( α h − γ h ) ] h ) β = W T b 其中: W T = ( w . 1 T ; w . 2 T ; ⋯   ; w . l T ) 即: W = ( [ w h j ] h j ) q × l y ^ k = ( [ f ( β j − θ j ) ] j ) E k = 1 2 ( y ^ k − y k ) T ( y ^ k − y k ) \begin{align} \boldsymbol{\alpha } & =\mathbf{V}^\mathrm{T}\boldsymbol{x} \tag{5.20} \\ & \text{其中:} \mathbf{V}^\mathrm{T}=(\boldsymbol{v}_{.1}^\mathrm{T};\boldsymbol{v}_{.2}^\mathrm{T};\cdots;\boldsymbol{v}_{.q}^\mathrm{T})\text{即:}\mathbf{V}=\left(\left[v_{ih} \right]_{ih}\right)_{d\times q}\notag \\ \boldsymbol{b } & =([f({\alpha}_h-{\gamma }_h)]_h) \tag{5.21} \\ \boldsymbol{\beta } & =\mathbf{W}^\mathrm{T}\boldsymbol{b} \tag{5.22} \\ & \text{其中:} \mathbf{W}^\mathrm{T}=(\boldsymbol{w}_{.1}^\mathrm{T};\boldsymbol{w}_{.2}^\mathrm{T};\cdots;\boldsymbol{w}_{.l}^\mathrm{T})\text{即:}\mathbf{W}=\left(\left[w_{hj} \right]_{hj}\right)_{q\times l}\notag \\ \boldsymbol{\hat{y}}^k & =([f({\beta }_j-{\theta }_j)]_j) \tag{5.23} \\ E_k & =\frac{1}{2}(\boldsymbol{\hat{y}}^k-\boldsymbol{y}^k)^\mathrm{T}(\boldsymbol{\hat{y}}^k-\boldsymbol{y}^k)\tag{5.24} \end{align} αbβy^kEk=VTx其中:VT=(v.1T;v.2T;;v.qT)即:V=([vih]ih)d×q=([f(αhγh)]h)=WTb其中:WT=(w.1T;w.2T;;w.lT)即:W=([whj]hj)q×l=([f(βjθj)]j)=21(y^kyk)T(y^kyk)(5.20)(5.21)(5.22)(5.23)(5.24)
式(5.20)至式(5.24)这五个函数对应于图 11中五层箭头线。

第三步:计算函数的梯度

根据神经网络中的梯度的方法,可分别求出上述函数的梯度。

神经网络中的梯度式(A74),得式(5.20)关 v \boldsymbol{v} v的梯度
∇ v α = d i a g ( x , ⋯   , x , ⋯   , x ) (其中 x 的个数为 q ) \begin{align} {\nabla}_{\boldsymbol{v}}\boldsymbol{\alpha } =\mathrm{diag}(\boldsymbol{x},\cdots ,\boldsymbol{x},\cdots,\boldsymbol{x}) \quad \text{(其中$\boldsymbol{x}$的个数为$q$)} \tag{5.25} \end{align} vα=diag(x,,x,,x)(其中x的个数为q(5.25)

神经网络中的梯度式(A71),得式(5.21)关于 α \boldsymbol{\alpha } α γ \boldsymbol{\gamma } γ的梯度
∇ α b = d i a g ( ⋯   , ∂ f ( α h − γ h ) ∂ α h , ⋯   ) (通式中下标为变量,下同) = d i a g ( ⋯   , f ( α h − γ h ) ( 1 − f ( α h − γ h ) ) , ⋯   ) (由【西瓜书式(5.9)】 s i g m o i d 函数的导数) = d i a g ( ⋯   , b h ( 1 − b h ) , ⋯   ) (由式(5.21)) ∇ γ b = d i a g ( ⋯   , b h ( b h − 1 ) , ⋯   ) (同样推导) \begin{align} {\nabla}_{\boldsymbol{\alpha }}\boldsymbol{b} & =\mathrm{diag}(\cdots ,\frac{\partial f(\alpha_h-\gamma_h)}{\partial{\alpha }_h},\cdots) \quad \text{(通式中下标为变量,下同)}\notag \\ & =\mathrm{diag}(\cdots , f(\alpha_h-\gamma_h)(1-f(\alpha_h-\gamma_h)),\cdots)\notag \\ & \quad \text{(由【西瓜书式(5.9)】$\mathrm{sigmoid}$函数的导数)}\notag \\ & =\mathrm{diag}(\cdots , b_h(1-b_h),\cdots)\quad \text{(由式(5.21))}\tag{5.26} \\ {\nabla}_{\boldsymbol{\gamma }}\boldsymbol{b} & =\mathrm{diag}(\cdots , b_h(b_h-1),\cdots)\quad \text{(同样推导)}\tag{5.27} \end{align} αbγb=diag(,αhf(αhγh),)(通式中下标为变量,下同)=diag(,f(αhγh)(1f(αhγh)),)(由【西瓜书式(5.9)sigmoid函数的导数)=diag(,bh(1bh),)(由式(5.21)=diag(,bh(bh1),)(同样推导)(5.26)(5.27)

神经网络中的梯度式(A74),得式(5.22)的关于 w \boldsymbol{w} w梯度为
∇ w β = d i a g ( b , ⋯   , b , ⋯   , b ) (其中 b 的个数为 l ) \begin{align} {\nabla}_{\boldsymbol{w}}\boldsymbol{\beta } =\mathrm{diag}(\boldsymbol{b},\cdots ,\boldsymbol{b},\cdots,\boldsymbol{b}) \quad \text{(其中$\boldsymbol{b}$的个数为$l$)} \tag{5.28} \end{align} wβ=diag(b,,b,,b)(其中b的个数为l(5.28)

神经网络中的梯度式(A75),得式(5.22)的关于 b \boldsymbol{b} b梯度为
∇ b β = W \begin{align} {\nabla}_{\boldsymbol{b}}\boldsymbol{\beta } =\mathbf{W} \tag{5.29} \end{align} bβ=W(5.29)

神经网络中的梯度式(A71),得式(5.23)关于 β \boldsymbol{\beta } β θ \boldsymbol{\theta } θ的梯度
∇ β y ^ k = d i a g ( ⋯   , y ^ j k ( 1 − y ^ j k ) , ⋯   ) ∇ θ y ^ k = d i a g ( ⋯   , y ^ j k ( y ^ j k − 1 ) , ⋯   ) \begin{align} {\nabla}_{\boldsymbol{\beta }}\boldsymbol{\hat{y}}^k & =\mathrm{diag}(\cdots , {\hat{y}}_j^k(1-{\hat{y}}_j^k),\cdots)\tag{5.30} \\ {\nabla}_{\boldsymbol{\theta }}\boldsymbol{\hat{y}}^k & =\mathrm{diag}(\cdots , {\hat{y}}_j^k({\hat{y}}_j^k-1),\cdots)\tag{5.31} \end{align} βy^kθy^k=diag(,y^jk(1y^jk),)=diag(,y^jk(y^jk1),)(5.30)(5.31)

复合函数梯度的链式法则式(A62)——即二次型的偏导数,得式(5.24)关于 y ^ k \boldsymbol{\hat{y}}^k y^k的梯度
∇ y ^ k E k = y ^ k − y k = ( [ y ^ j k − y j k ] j ) \begin{align} {\nabla}_{\boldsymbol{\hat{y}}^k} E_k & =\boldsymbol{\hat{y}}^k-\boldsymbol{y}^k\notag \\ & =\left( \left[\hat{y}_j^k-{y}_j^k \right]_j \right)\tag{5.32} \end{align} y^kEk=y^kyk=([y^jkyjk]j)(5.32)

第四步:求复合函数的梯度

根据复合函数梯度的链式法则的讨论及神经网络中的梯度图A.3 梯度链式法则助记,我们将计算图图 11转化为三角形表示的复合函数,如,取图 11顶上三层即得图 12 中的(a),再保持顶点不变,将三角形中的底线和腰线同时下移一层,则得到图 12 中的(b),其余类推。

对这些复合函数用复合函数梯度的链式法则式(A58)或(A59)的链式法则,可分别求出其梯度。
图 12 复合函数的梯度

图 12 复合函数的梯度

由图 12 (a),有
∇ β E k = ∇ β y ^ k ∇ y ^ k E k (由[复合函数梯度的链式法则]式(A58)或(A59)的链式法则,下同) = d i a g ( ⋯   , y ^ j k ( 1 − y ^ j k ) , ⋯   ) ( [ y ^ j k − y j k ] ) (由式(5.30)、式(5.32)) = ( [ y ^ j k ( 1 − y ^ j k ) ( y ^ j k − y j k ) ] ) (由“式(A28)”) ∇ θ E k = ( [ y ^ j k ( y ^ j k − 1 ) ( y ^ j k − y j k ) ] ) (同上) \begin{align} {\nabla}_{\boldsymbol{\beta }} E_k & = {\nabla}_{\boldsymbol{\beta }}\boldsymbol{\hat{y}}^k{\nabla}_{\boldsymbol{\hat{y}}^k} E_k\qquad \text{(由[复合函数梯度的链式法则]式(A58)或(A59)的链式法则,下同)}\notag \\ & =\mathrm{diag}\left(\cdots , {\hat{y}}_j^k(1-{\hat{y}}_j^k),\cdots\right) \left( \left[\hat{y}_j^k-{y}_j^k \right] \right)\qquad \text{(由式(5.30)、式(5.32))}\notag \\ & =\left( \left[\hat{y}_j^k(1-{\hat{y}}_j^k)(\hat{y}_j^k-{y}_j^k) \right] \right) \qquad \text{(由“式(A28)”)}\tag{5.33} \\ {\nabla}_{\boldsymbol{\theta }} E_k & =\left( \left[\hat{y}_j^k({\hat{y}}_j^k-1)(\hat{y}_j^k-{y}_j^k) \right] \right)\qquad \text{(同上)} \tag{5.34} \end{align} βEkθEk=βy^ky^kEk(由[复合函数梯度的链式法则](A58)(A59)的链式法则,下同)=diag(,y^jk(1y^jk),)([y^jkyjk])(由式(5.30)、式(5.32)=([y^jk(1y^jk)(y^jkyjk)])(由(A28)”=([y^jk(y^jk1)(y^jkyjk)])(同上)(5.33)(5.34)
其中,“式(A28)”指向量与矩阵式(A28)

由图 12 (b),有
∇ b E k = ∇ b β ∇ β E k = W ( [ y ^ j k ( 1 − y ^ j k ) ( y ^ j k − y j k ) ] j ) (由式(5.29)、式(5.33)) = ( [ w h j ] h j ) ( [ y ^ j k ( 1 − y ^ j k ) ( y ^ j k − y j k ) ] j ) = ( [ ∑ j = 1 l w h j y ^ j k ( 1 − y ^ j k ) ( y ^ j k − y j k ) ] h ) \begin{align} {\nabla}_{\boldsymbol{b}} E_k & ={\nabla}_{\boldsymbol{b}}\boldsymbol{\beta }{\nabla}_{\boldsymbol{\beta }} E_k\notag \\ & =\mathbf{W}\left( \left[\hat{y}_j^k({1-\hat{y}}_j^k)(\hat{y}_j^k-{y}_j^k) \right]_j \right)\qquad \text{(由式(5.29)、式(5.33))}\notag \\ & =\left( \left[w_{hj} \right]_{hj} \right)\left( \left[\hat{y}_j^k({1-\hat{y}}_j^k)(\hat{y}_j^k-{y}_j^k) \right]_j \right)\notag \\ & =\left( \left[\sum_{j=1}^lw_{hj}\hat{y}_j^k({1-\hat{y}}_j^k)(\hat{y}_j^k-{y}_j^k) \right]_h \right) \tag{5.35} \end{align} bEk=bββEk=W([y^jk(1y^jk)(y^jkyjk)]j)(由式(5.29)、式(5.33)=([whj]hj)([y^jk(1y^jk)(y^jkyjk)]j)= [j=1lwhjy^jk(1y^jk)(y^jkyjk)]h (5.35)
∇ w E k = ∇ w β ∇ β E k = d i a g ( ⋯   , b , ⋯   ) ( [ y ^ j k ( 1 − y ^ j k ) ( y ^ j k − y j k ) ] j ) (由式(5.28)、式(5.33)) = ( [ b y ^ j k ( 1 − y ^ j k ) ( y ^ j k − y j k ) ] j ) (由“式(A28)”) \begin{align} {\nabla}_{\boldsymbol{w}} E_k & ={\nabla}_{\boldsymbol{w}}\boldsymbol{\beta }{\nabla}_{\boldsymbol{\beta }} E_k\notag \\ & =\mathrm{diag}(\cdots ,\boldsymbol{b},\cdots) \left( \left[\hat{y}_j^k({1-\hat{y}}_j^k)(\hat{y}_j^k-{y}_j^k) \right]_j \right)\qquad \text{(由式(5.28)、式(5.33))}\notag \\ & =\left( \left[\boldsymbol{b}\hat{y}_j^k({1-\hat{y}}_j^k)(\hat{y}_j^k-{y}_j^k) \right]_j \right) \qquad \text{(由“式(A28)”)}\tag{5.36} \end{align} wEk=wββEk=diag(,b,)([y^jk(1y^jk)(y^jkyjk)]j)(由式(5.28)、式(5.33)=([by^jk(1y^jk)(y^jkyjk)]j)(由(A28)”(5.36)
其中,“式(A28)”指向量与矩阵式(A28)
b \boldsymbol{b} b为向量,故式(5.36)表达的向量为一组子向量的拼接。注:该向量可与 w \boldsymbol{w} w对齐对应,而向量 w \boldsymbol{w} w也是一组子向量的拼接(由式(5.22)确定),因此,第 j j j对子向量【 b y ^ j k ( 1 − y ^ j k ) ( y ^ j k − y j k ) \boldsymbol{b}\hat{y}_j^k({1-\hat{y}}_j^k)(\hat{y}_j^k-{y}_j^k) by^jk(1y^jk)(y^jkyjk) w j \boldsymbol{w}_j wj】对齐对应。 即元素 b h y ^ j k ( 1 − y ^ j k ) ( y ^ j k − y j k ) \boldsymbol{b}_h\hat{y}_j^k({1-\hat{y}}_j^k)(\hat{y}_j^k-{y}_j^k) bhy^jk(1y^jk)(y^jkyjk)与元素 w h j \boldsymbol{w}_{hj} whj对应,【西瓜书式(5.11)】包含了这个对应关系(即 E k E_k Ek关于元素 w h j \boldsymbol{w}_{hj} whj的梯度)。

由图 12 ©,有
∇ α E k = ∇ α b ∇ b E k (下式由式(5.26)、式(5.35)) = d i a g ( ⋯   , b h ( 1 − b h ) , ⋯   ) ( [ ∑ j = 1 l w h j y ^ j k ( 1 − y ^ j k ) ( y ^ j k − y j k ) ] h ) = ( [ b h ( 1 − b h ) ∑ j = 1 l w h j y ^ j k ( 1 − y ^ j k ) ( y ^ j k − y j k ) ] h ) (由“式(A28)”) \begin{align} & \quad {\nabla}_{\boldsymbol{\alpha }} E_k\notag \\ & ={\nabla}_{\boldsymbol{\alpha }}\boldsymbol{b}{\nabla}_{\boldsymbol{b}} E_k\qquad \text{(下式由式(5.26)、式(5.35))}\notag \\ & =\mathrm{diag}(\cdots , b_h(1-b_h),\cdots)\left( \left[\sum_{j=1}^lw_{hj}\hat{y}_j^k({1-\hat{y}}_j^k)(\hat{y}_j^k-{y}_j^k) \right]_h \right)\notag \\ & =\left( \left[ b_h(1-b_h)\sum_{j=1}^lw_{hj}\hat{y}_j^k({1-\hat{y}}_j^k)(\hat{y}_j^k-{y}_j^k) \right]_h \right) \qquad \text{(由“式(A28)”)}\tag{5.37} \end{align} αEk=αbbEk(下式由式(5.26)、式(5.35)=diag(,bh(1bh),) [j=1lwhjy^jk(1y^jk)(y^jkyjk)]h = [bh(1bh)j=1lwhjy^jk(1y^jk)(y^jkyjk)]h (由(A28)”(5.37)
其中,“式(A28)”指向量与矩阵式(A28)
∇ γ E k = ∇ γ b ∇ b E k (下式由式(5.27)、式(5.35)) = d i a g ( ⋯   , b h ( b h − 1 ) , ⋯   ) ( [ ∑ j = 1 l w h j y ^ j k ( 1 − y ^ j k ) ( y ^ j k − y j k ) ] h ) = ( [ b h ( b h − 1 ) ∑ j = 1 l w h j y ^ j k ( 1 − y ^ j k ) ( y ^ j k − y j k ) ] h ) (由“式(A28)”) \begin{align} & \quad {\nabla}_{\boldsymbol{\gamma }} E_k\notag \\ & ={\nabla}_{\boldsymbol{\gamma }}\boldsymbol{b}{\nabla}_{\boldsymbol{b}} E_k\quad \text{(下式由式(5.27)、式(5.35))}\notag \\ & =\mathrm{diag}(\cdots , b_h(b_h-1),\cdots)\left( \left[\sum_{j=1}^lw_{hj}\hat{y}_j^k({1-\hat{y}}_j^k)(\hat{y}_j^k-{y}_j^k) \right]_h \right)\notag \\ & =\left( \left[ b_h(b_h-1)\sum_{j=1}^lw_{hj}\hat{y}_j^k({1-\hat{y}}_j^k)(\hat{y}_j^k-{y}_j^k) \right]_h \right) \qquad \text{(由“式(A28)”)} \tag{5.38} \end{align} γEk=γbbEk(下式由式(5.27)、式(5.35)=diag(,bh(bh1),) [j=1lwhjy^jk(1y^jk)(y^jkyjk)]h = [bh(bh1)j=1lwhjy^jk(1y^jk)(y^jkyjk)]h (由(A28)”(5.38)
其中,“式(A28)”指向量与矩阵式(A28)
由图 12 (d),有
∇ v E k = ∇ v α ∇ α E k (下式由式(5.25)、式(5.37)) = d i a g ( ⋯   , x , ⋯   ) ( [ b h ( 1 − b h ) ∑ j = 1 l w h j y ^ j k ( 1 − y ^ j k ) ( y ^ j k − y j k ) ] h ) = ( [ x b h ( 1 − b h ) ∑ j = 1 l w h j y ^ j k ( 1 − y ^ j k ) ( y ^ j k − y j k ) ] h ) (由“式(A28)”) \begin{align} & \quad {\nabla}_{\boldsymbol{v}} E_k\notag \\ & = {\nabla}_{\boldsymbol{v}}\boldsymbol{\alpha }{\nabla}_{\boldsymbol{\alpha }} E_k\quad \text{(下式由式(5.25)、式(5.37))}\notag \\ & =\mathrm{diag}(\cdots ,\boldsymbol{x},\cdots)\left( \left[ b_h(1-b_h)\sum_{j=1}^lw_{hj}\hat{y}_j^k({1-\hat{y}}_j^k)(\hat{y}_j^k-{y}_j^k) \right]_h \right)\notag \\ & =\left( \left[ \boldsymbol{x}b_h(1-b_h)\sum_{j=1}^lw_{hj}\hat{y}_j^k({1-\hat{y}}_j^k)(\hat{y}_j^k-{y}_j^k) \right]_h \right) \qquad \text{(由“式(A28)”)}\tag{5.39} \end{align} vEk=vααEk(下式由式(5.25)、式(5.37)=diag(,x,) [bh(1bh)j=1lwhjy^jk(1y^jk)(y^jkyjk)]h = [xbh(1bh)j=1lwhjy^jk(1y^jk)(y^jkyjk)]h (由(A28)”(5.39)
其中,“式(A28)”指向量与矩阵式(A28)
其中, x \boldsymbol{x} x为向量,故式(5.39)表达的向量为一组子向量的拼接。分量的对应关系参照式(5.36)的注。

这样就求出了计算图所表达的所有复合函数的梯度,其中,关于网络参数组的梯度组为( ∇ θ E k , ∇ γ E k , ∇ w E k , ∇ v E k {\nabla}_{\boldsymbol{\theta }} E_k,{\nabla}_{\boldsymbol{\gamma }} E_k,{\nabla}_{\boldsymbol{w}} E_k,{\nabla}_{\boldsymbol{v}} E_k θEk,γEk,wEk,vEk),其余是求参数梯度的链式法则过程中所需的梯度。 对比计算图中的箭头方向,求梯度的过程是逆向的,相当于把误差 E k E_k Ek的影响进行了逆向传播(直至 v \boldsymbol{v} v),这就是误差逆传播(BP)算法名称的含义。

有了参数的梯度后,以学习率 η \eta η乘以负梯度即为参数的更新公式。 如, Δ w = − η ∇ w E k \Delta \boldsymbol{w}=-\eta {\nabla}_{\boldsymbol{w}} E_k Δw=ηwEk,写成分量形式即为 Δ w h j = − η b h y ^ j k ( 1 − y ^ j k ) ( y ^ j k − y j k ) \Delta {w}_{hj}=-\eta {b}_h\hat{y}_j^k({1-\hat{y}}_j^k)(\hat{y}_j^k-{y}_j^k) Δwhj=ηbhy^jk(1y^jk)(y^jkyjk),也即【西瓜书式(5.11),其中(5.10)代入】,其余参数更新公式类推。

本文为原创,您可以:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值