首页 > 编程知识 正文

relu完全解决了梯度消失问题,多层神经网络为什么会造成梯度消失

时间:2023-05-03 17:25:55 阅读:9336 作者:490

梯度消失和梯度爆炸梯度消失的具体表现是,接近输出层的权重更新比较正常,而接近输入层的权重很少更新,或者更新非常慢。 这样,深度网络的学习就等同于只有下级的浅层网络的学习。

梯度爆炸的具体表现是越远离输出层的隐层权重越大,网络参数得到大幅更新,导致网络不稳定,最终不收敛,权重值溢出,即输出值在NaN上权重不更新

的原因梯度消失和梯度爆炸是由神经网络反向传播的协同效应引起的,很可能随着网络层的增加而出现。

以上图的4层网络层为例,各层网络激活后的输出为fI(x ) f_{i}(x ) fi ) x )。 其中x表示第I层的输入,即第i-1层的输出。 于是,简单地标记为f(I1 )=f ) fIwI1bI1) f ) I1 )=f ) I*w_{I1}b_{I1} ) f(I1 )=f ) fIwI1bI1)、fI1=f )

BP反向传播方法基于梯度下降策略,按目标负梯度方向调整参数,参数更新为www(getsw ) deltaw ) ww,给出学习率) alpha ,w=

∂ L o s s ∂ w Delta w = -alpha frac {partial{Loss}} {partial{w}} Δw=−α∂w∂Loss​,如果更新第2层隐藏层的权值信息,根据链式求导法则,可得:
Δ w 2 = ∂ L o s s ∂ w 2 = ∂ L o s s ∂ f 4 ∗ ∂ f 4 ∂ f 3 ∗ ∂ f 3 ∂ f 2 ∗ ∂ f 2 ∂ w 2 Delta w_2 = frac {partial{Loss}} {partial{w_2}} = frac {partial{Loss}} {partial{f_4}} * frac {partial{f_4}} {partial{f_3}} * frac {partial{f_3}} {partial{f_2}} * frac {partial{f_2}} {partial{w_2}} Δw2​=∂w2​∂Loss​=∂f4​∂Loss​∗∂f3​∂f4​​∗∂f2​∂f3​​∗∂w2​∂f2​​
如果每层对激活函数的求导均大于1,那么层数增多的时候,最终求出的梯度更新将以指数形式增加,称为梯度爆炸;如果每层求导小于1,那么层数增多的时候,求出的梯度将会以指数形式减小,称为梯度消失或梯度弥散。

参考链接:

https://zhuanlan.zhihu.com/p/51490163https://zhuanlan.zhihu.com/p/25631496

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。