DNN反向传播推导过程
2018-03-21 21:52
309 查看
DNN反向传播推导简介
如果对DNN前向传播,梯度下降不熟悉,建议先了解一下。
这里假设DNN的损失函数如:J(W,b,x,y)=12||aL−y||22J(W,b,x,y)=12||aL−y||22其中输出层为第L层,输出结果aL=σ(zL)=σ(WLaL−1+bL)aL=σ(zL)=σ(WLaL−1+bL),这样损失函数变为:
J(W,b,x,y)=12||σ(WLaL−1+bL)−y||22J(W,b,x,y)=12||σ(WLaL−1+bL)−y||22
求解W,b的梯度为:
∂J(W,b,x,y)∂WL=∂J(W,b,x,y)∂zL∂zL∂WL=(aL−y)⊙σ′(zL)(aL−1)T∂J(W,b,x,y)∂WL=∂J(W,b,x,y)∂zL∂zL∂WL=(aL−y)⊙σ′(zL)(aL−1)T
∂J(W,b,x,y)∂bL=∂J(W,b,x,y)∂zL∂zL∂bL=(aL−y)⊙σ′(zL)∂J(W,b,x,y)∂bL=∂J(W,b,x,y)∂zL∂zL∂bL=(aL−y)⊙σ′(zL)
注意到,求解W,b梯度时有公共部分∂J(W,b,x,y)∂zL∂J(W,b,x,y)∂zL,因此可以先把这一部分算出来,既损失函数对zLzL的导数记为:
δL=∂J(W,b,x,y)∂zL=(aL−y)⊙σ′(zL)δL=∂J(W,b,x,y)∂zL=(aL−y)⊙σ′(zL)
现在我们终于把输出层的梯度算出来了,那么如何计算上一层L−1L−1层的梯度,上上层L−2L−2层的梯度呢?这里我们需要一步步的递推,注意到对于第ll层的未激活输出zlzl,它的梯度可以表示为:
δl=∂J(W,b,x,y)∂zl=∂J(W,b,x,y)∂zL∂zL∂zL−1∂zL−1∂zL−2⋅⋅⋅∂zl+1∂zlδl=∂J(W,b,x,y)∂zl=∂J(W,b,x,y)∂zL∂zL∂zL−1∂zL−1∂zL−2···∂zl+1∂zl
如果可以算出来第ll层δlδl,则该层的Wl,blWl,bl很容易计算,因为根据前向传播有:
zl=Wlal−1+blzl=Wlal−1+bl
所以求得Wl,blWl,bl梯度如下:
∂J(W,b,x,y)∂Wl=∂J(W,b,x,y)∂zl∂zl∂Wl=δl(al−1)T∂J(W,b,x,y)∂Wl=∂J(W,b,x,y)∂zl∂zl∂Wl=δl(al−1)T
∂J(W,b,x,y)∂bl=∂J(W,b,x,y)∂zl∂zl∂bl=δl∂J(W,b,x,y)∂bl=∂J(W,b,x,y)∂zl∂zl∂bl=δl
所以问题的关键就是求δlδl,我们用数学归纳法,第LL层的δLδL上面我们已经求出,假设第l+1l+1层的δl+1δl+1已经求出来了,那么如何求第ll层的δlδl呢?注意这里:
δl=∂J(W,b,x,y)∂zl=∂J(W,b,x,y)∂zl+1∂zl+1∂zl=δl+1∂zl+1∂zlδl=∂J(W,b,x,y)∂zl=∂J(W,b,x,y)∂zl+1∂zl+1∂zl=δl+1∂zl+1∂zl
可见,用归纳法递推δl+1δl+1和δlδl的关键在于如何求解δl+1δlδl+1δl
zl+1zl+1和zlzl的关系很容易找出:
zl+1=Wl+1al+bl+1=Wl+1σ(zl)+bl+1zl+1=Wl+1al+bl+1=Wl+1σ(zl)+bl+1
可以得出:
∂zl+1∂zl=(Wl+1)T⊙(σ′(zl),..,σ′(zl))nl+1∂zl+1∂zl=(Wl+1)T⊙(σ′(zl),..,σ′(zl))⏟nl+1
上式的Hadamard乘积表达的意义是 权值矩阵的每一个列向量都点乘σ′(zl)σ′(zl)
将上式带入上面δlδl和δl+1δl+1的关系我们得出:
δl=δl+1∂zl+1∂zl=(Wl+1)Tδl+1⊙σ′(zl)δl=δl+1∂zl+1∂zl=(Wl+1)Tδl+1⊙σ′(zl)
得到了δlδl的递推关系,只要求出某一层的δlδl,求解Wl,blWl,bl对应的梯度就很简单了。
参考资料:
http://www.cnblogs.com/pinard/p/6422831.html
相关文章推荐
- DNN反向传播推导过程
- 深度学习基础:反向传播即BP算法的推导过程
- BP神经网络,BP推导过程,反向传播算法,误差反向传播,梯度下降,权值阈值更新推导,隐含层权重更新公式
- 反向传播(Back propagation)算法推导具体过程
- 三、梯度下降与反向传播(含过程推导及证明)
- 反向传播的工作过程以及公式推导
- Batch Normalization的前向和反向传播过程
- 神经网络中的反向传播法算法推导及matlab代码实现
- 深度学习21天实战Caffe学习笔记--笔记5--caffe中前向传播、反向传播及最优化求解过程
- 神经网络中的反向传播的推导和python实现
- DNN反向传播详解
- cs231n 矩阵反向传播原理推导
- BP(反向传播)算法和CNN反向传播算法推导(转载)
- 【机器学习】反向传播神经网络推导
- 卷积神经网络反向传播理论推导
- 神经网络反向传播公式的推导
- 深度网络中softmax_loss、Smooth L1 loss计算以及反向传播推导
- 深度学习 — 反向传播(BP)理论推导
- 反向传播的数学推导
- BP神经网络:误差反向传播公式的简单推导