您的位置:首页 > 其它

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进行正则化,每批次训练进行神经元随机抑制,每次训练一个全连接的子集。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: