概述
在深度网络中,网络参数的学习是通过反向传播的链式求导法则来求 Loss 对某个参数 的偏导数,然后进行参数更新的。因此造成梯度消失的原因主要有两个:1.当网络层 数很深,而当前的参数所在层又靠近网络的输入时,求导链就会非常长;2.如果其中的某些中间结果的值很小,并经过链式的累成作用,最终求得的梯度值就会接近于零,而导致参数得不到更新。
可通过以下方法解决梯度消失的问题:
1. 选用合适的激活函数。比如 ReLU 或者 Leaky ReLU。因为像 Sigmoid 和 Tanh 这样的激活函数,会出现比较大的梯度饱和区域,使得梯度的取值接近于 0。
2. 采用 Batch Normalization 层,对网络中计算得到中间值进行归一化,使得中 间计算结果的取值在均值为 0,方差为 1 这样的分布内。那么此时,在 sigmoid 和 tanh 中,函数取值处于中间变化较大的部分,梯度取值也相对较大,从而 可以防止过拟合。
3. 使用残差结构,残差结构相当于给靠近输入端的网络层提供了一个与靠近输出 端层的直连操作。在反向传播计算时,减少了梯度传播的路径长度,以缓解梯 度消失的问题。
4. 在 RNN 网络中,可以通过使用 LSTM(long-short term memory networks)长 短时记忆网络,来解决信息遗忘和梯度传播的问题
最后
以上就是聪慧冥王星为你收集整理的神经网络中怎么解决梯度消失问题的全部内容,希望文章能够帮你解决神经网络中怎么解决梯度消失问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复