DNN反向传播推导过程
2018-02-05 19:57
429 查看
1.LL层神经网络的前向传播:
设第ll层的权值矩阵为WlWl,输出为zlzl,激活值为alal, 激活函数都选用σσ,误差函数选择均方误差,则有如下关系:zl=Wlal−1+blal=σ(zl)J(W,b,x,y)=12<
1b023
span style="display: inline-block; width: 0px; height: 4.002em;">||aL−y||22zl=Wlal−1+blal=σ(zl)J(W,b,x,y)=12||aL−y||22
2.LL 层神经网络的反向传播:
对于输出层LL层:∂J(W,b,x,y)∂WL==∂J(W,b,x,y)∂aL∂aL∂zL∂zL∂WL(aL−y)⨀σ′(zL)(aL−1)T(18)(19)(18)∂J(W,b,x,y)∂WL=∂J(W,b,x,y)∂aL∂aL∂zL∂zL∂WL(19)=(aL−y)⨀σ′(zL)(aL−1)T
∂J(W,b,x,y)∂bL==∂J(W,b,x,y)∂aL∂aL∂zL∂zL∂bL(aL−y)⨀σ′(zL)(20)(21)(20)∂J(W,b,x,y)∂bL=∂J(W,b,x,y)∂aL∂aL∂zL∂zL∂bL(21)=(aL−y)⨀σ′(zL)
显然∂J(W,b,x,y)∂zL=(aL−y)⨀σ′(zL)∂J(W,b,x,y)∂zL=(aL−y)⨀σ′(zL),设其为δLδL
则对于第ll层:
δl=∂J∂zl=∂J∂zL∂zL∂zL−1...∂zl+1∂zlδl=∂J∂zl=∂J∂zL∂zL∂zL−1...∂zl+1∂zl
δl=δl+1∂zl+1∂zl=(Wl+1)Tδl+1⨀σ′(zl)δl=δl+1∂zl+1∂zl=(Wl+1)Tδl+1⨀σ′(zl)
则有:
∂J(W,b,x,y)∂Wl==∂J(W,b,x,y)∂zl∂zl∂Wlδl(al−1)T(22)(23)(22)∂J(W,b,x,y)∂Wl=∂J(W,b,x,y)∂zl∂zl∂Wl(23)=δl(al−1)T
∂J(W,b,x,y)∂bl==∂J(W,b,x,y)∂zl∂zl∂blδl(24)(25)(24)∂J(W,b,x,y)∂bl=∂J(W,b,x,y)∂zl∂zl∂bl(25)=δl
3.激活函数为sigmoid情况下的收敛速度
注意到反向传播过程中的激活函数导数σ′(zl)σ′(zl)的出现,导致在链式求导法则过程中不断连乘σ′(zl)σ′(zl),而如果选择sigmoidsigmoid作为激活函数的时候, 其本身的导数大部分是较小的,导致梯度的消失。为了改进,选择交叉熵损失函数:
J(W,b,x,y)=−y.ln(aL)−(1−y).ln(1−aL))J(W,b,x,y)=−y.ln(aL)−(1−y).ln(1−aL))
激活函数为sigmoidsigmoid则,σ′(x)=σ(x)(1−σ(x))σ′(x)=σ(x)(1−σ(x))
则有:
δl===∂J(W,b,x,y)∂zl−y1aL(aL)(1−aL)+(1−y)11−aL(aL)(1−aL)aL−y(26)(27)(28)(26)δl=∂J(W,b,x,y)∂zl(27)=−y1aL(aL)(1−aL)+(1−y)11−aL(aL)(1−aL)(28)=aL−y
求得的表达式中不含有σ′σ′,所以在使用sigmoid函数的时候,交叉熵损失函数要优于均方误差函数。
4.softmaxsoftmax激活函数与对数似然损失函数
对数似然损失,对于每个样本的对数损失加和:J(W,b,x,y)=−∑kykln(aLk)J(W,b,x,y)=−∑kykln(akL)
对于给定的样本标签yy是一个one-hot向量的时候,可以写作J(W,b,x,y)=−ln(aLi)J(W,b,x,y)=−ln(aiL),其中i为样本真实标签号。
softmax激活函数:
aLi=ezLi∑nLj=1ezLiaiL=eziL∑j=1nLeziL
softmax输出了对应分类的概率,每一个激活值都是(0,1)区间的数字。
此时:
∂J(W,b,x,y)∂zLi===∂J∂aLi∂aLi∂zLi−1aLiezli∑nLj=1ezLj−ezLiezLi(∑nLj=1ezLj)2(aLi−1)(29)(30)(31)(29)∂J(W,b,x,y)∂ziL=∂J∂aiL∂aiL∂ziL(30)=−1aiLezil∑j=1nLezjL−eziLeziL(∑j=1nLezjL)2(31)=(aiL−1)
∂J(W,b,x,y)∂zLj(j≠i)===aLj∂J∂aLi∂aLi∂zLj−1aLi−ezLjezLi(∑kezLk)2(32)(33)(34)(32)∂J(W,b,x,y)∂zjL(j≠i)=∂J∂aiL∂aiL∂zjL(33)=−1aiL−ezjLeziL(∑kezkL)2(34)=ajL
即可以得到完整的∂J(W,b,x,y)∂zL=δL∂J(W,b,x,y)∂zL=δL
然后以同2中式子进行反向传播求解对w,bw,b的偏导数。
5.DNN的正则化
L2正则化的惩罚系数为λλ,则引入正则化的损失函数为:J(W,b,x,y)=J′(W,b,x,y)+λ||w||22J(W,b,x,y)=J′(W,b,x,y)+λ||w||22
在更新WW权重的时候,引入的正则项使梯度下降的时候以学习率αα更新为:
Wl=Wl−α∑δl(al−1)T−αλWlWl=Wl−α∑δl(al−1)T−αλWl
或者多通过dropout进行正则化,每批次训练进行神经元随机抑制,每次训练一个全连接的子集。
相关文章推荐
- DNN反向传播推导过程
- 反向传播的工作过程以及公式推导
- BP神经网络,BP推导过程,反向传播算法,误差反向传播,梯度下降,权值阈值更新推导,隐含层权重更新公式
- 深度学习基础:反向传播即BP算法的推导过程
- 反向传播(Back propagation)算法推导具体过程
- 三、梯度下降与反向传播(含过程推导及证明)
- 梯度下降法和误差反向传播推导
- 反向传播及softmax算法推导
- CNN反向传播训练参数过程
- LSTM反向传播过程记录
- 全连接神经网络的前向和反向传播推导
- Batch Normalization梯度反向传播推导
- 卷积神经网络反向传播理论推导
- 机器学习 李宏毅 L13-Deep learning简介及反向传播推导
- Batch Normalization 反向传播(backpropagation )公式的推导
- Batch Normalization的前向和反向传播过程
- 卷积神经网络(二):Softmax损失以及反向传播导数推导
- 反向传播(BackPropagation)算法的推导
- 神经网络中的反向传播的推导和python实现
- 深度学习21天实战Caffe学习笔记--笔记5--caffe中前向传播、反向传播及最优化求解过程