在利用梯度下降法对神经网络权重等参数进行训练时,需要利用反向传播去计算损失函数对权重参数的偏导数。

反向传播

下面分析是如何反向传播的(分析时不考虑偏置项),
在这里插入图片描述

参考上图,
① 对于一个神经元jj,它的输出被定义为,
(1.1)Oj=φ(netj)=φ(k=1NwkjOk) O_j = \varphi(net_j)=\varphi(\sum_{k=1}^N w_{kj}O_k) \tag{1.1}
其中,wkjw_{kj}表示神经元kkjj之间的权重,OkO_k是上一层神经元的输出。φ\varphi为**函数,这里取为logisticlogistic函数,
(1.2)φ(z)=11+ez \varphi(z)=\frac{1}{1+ e^{-z} } \tag{1.2}
logisticlogistic函数的求导公式为,
(1.3)dφ(z)dz=φ(z)(1φ(z)) \dfrac {d\varphi \left( z\right) }{dz}=\varphi\left( z\right) \left( 1-\varphi\left( z\right) \right) \tag{1.3}
② 损失函数定义为,
(1.4)E=12(ty)2 E=\dfrac {1}{2}\left( t-y\right) ^{2} \tag{1.4}
其中,yy为输出层的输出,tt为期望输出。

考虑wkjw_{kj}对于EE的影响,是OjO_j间接影响的,因此可得下面的公式(这里假设jj前一层神经元为ii,即求对wijw_{ij}的偏导数),
(1.5)Ewij=EOjOjnetjnetjwij \dfrac {\partial E}{\partial w_{ij}}=\dfrac {\partial E}{\partial O_{j}}\dfrac {\partial O_{j}}{\partial net_{j}}\dfrac {\partial net_{j}}{\partial w_{ij}} \tag{1.5}
其中,后两个偏导数可以直接求出,Ojnetj\frac{\partial O_{j}}{\partial net_{j}}参考公式1.3{1.3}netjwij=Oi\dfrac {\partial net_{j}}{\partial w_{ij}}=O_i。但是此时,EOj\dfrac{\partial E}{\partial {O_j}},依然无法求出。不过如果jj是输出层,因为Oj=yO_j=y,此时可求出EEOjO_j的偏导数,
(1.6)EOj=Ey=y12(ty)2=yt \dfrac {\partial E}{\partial O_{j}}=\dfrac {\partial E}{\partial y}=\dfrac {\partial }{\partial y}\dfrac {1}{2}\left( t-y\right) ^{2}=y-t \tag{1.6}
下面就到了最关键的一步,此时对于非输出层,我们无法直接求出EOj\frac{\partial E}{\partial {O_j}},考虑将OjO_jEE的作用向jj的下一层迭代,我们把EE考虑成一个输入由L=u,v,wL=u,v \dots,w这些神经元组成的函数,OjO_ju,v,wu,v,w这些神经元的输入,OjO_j直接构成了对netu,netv,netwnet_u,net_v,net_w的影响。
(1.7)E(Oj)Oj=E(netu,netv,,netw)Oj \dfrac {\partial E\left( O_{j}\right) }{\partial O_{j}}=\dfrac {\partial E\left( net_u,net_v,\ldots ,net_{w}\right) }{\partial O_{j}} \tag{1.7}
利用全微分形式,可以获取到一个递归方程,
(1.8)EOj=lL(EnetlnetlOj)=lL(EOlOlnetlwjl) \dfrac {\partial E}{\partial O_{j}}=\sum _{l\in L}\left( \dfrac {\partial E}{\partial net_{l}}\dfrac {\partial net_{l}}{\partial O_j}\right) =\sum _{l\in L}\left( \dfrac {\partial E}{\partial O_l}\dfrac {\partial O_l}{\partial net_l}w_{jl}\right) \tag{1.8}

通过递归方程,我们可以从输出层开始对需要求的偏导数进行递归,因此得名反向传播。

一个例子

下面以一个简单的网络来对上面的反向传播结果进行验证,如下图所示,
在这里插入图片描述
(1.9)Ewj1,j=EOjOjnetjnetjwj1,j \dfrac {\partial E}{\partial w_{j-1,j}}=\dfrac {\partial E}{\partial O_j}\dfrac {\partial O_j}{\partial net_j}\dfrac {\partial net_j}{\partial w_{j-1,j}} \tag{1.9}

其中,上式EOj=Ey\dfrac {\partial E}{\partial O_j}=\dfrac {\partial E}{\partial y},三项偏导数都可求出。接着求Ewj2,j1\dfrac {\partial E}{\partial w_{j-2,j-1}}

(1.10)Ewj2,j1=EOj1Oj1netj1netj1wj2,j1=EOjOjnetjnetjOj1Oj1netj1netj1wj2,j1 \dfrac {\partial E}{\partial w_{j-2,j-1}}=\dfrac {\partial E}{\partial O_{j-1}}\dfrac {\partial O_{j-1}}{\partial net_{j-1}}\dfrac {\partial net_{j-1}}{\partial w_{j-2,j-1}}=\dfrac {\partial E}{\partial O_{j}}\dfrac {\partial O_j}{\partial net_j}\dfrac {\partial net_j}{\partial O_{j-1}}\dfrac {\partial O_{j-1}}{\partial net_{j-1}}\dfrac {\partial net_{j-1}}{\partial w_{j-2,j-1}} \tag{1.10}

在上式中,EOj1=EOjOjnetjnetjOj1\dfrac {\partial E}{\partial O_{j-1}}=\dfrac {\partial E}{\partial O_{j}}\dfrac {\partial O_j}{\partial net_j}\dfrac {\partial net_j}{\partial O_{j-1}},求EOj1\dfrac {\partial E}{\partial O_{j-1}}时先求出EE对上一层的OjO_j的偏导数EOj\dfrac {\partial E}{\partial O_{j}},公式(1.10)和(1.8)完全对应,上述过程充分体现了链式法则

相关文章:

  • 2021-10-20
  • 2021-10-07
  • 2021-12-03
  • 2021-12-18
  • 2021-11-15
  • 2021-10-05
  • 2021-09-27
  • 2022-01-09
猜你喜欢
  • 2021-10-05
  • 2021-10-18
  • 2021-07-22
  • 2022-01-11
  • 2021-05-15
  • 2021-11-07
  • 2021-07-07
相关资源
相似解决方案