梯度消失与梯度爆炸

梯度不稳定

梯度下降算法运行时,前面层的梯度是来自于后面层上梯度的乘积。当在深层神经网络当中,或是采用了不合适的损失函数时,会出现不稳定情况,如梯度消失或梯度爆炸。

原因

image.png

上图为三个隐藏层的单神经网络,假设每一层网络激活函数的输出为g(z),那么下一层的函数则为gi+1(z) = g(z*w) ,设偏差b=0。如果要更新第二隐藏层的权值,根据链式求导法则,可以推出是对激活函数求导后与权重相乘的式子。(公式省略)

如果激活函数求导后与权重相乘的积大于1,那么在深层神经网络当中,最终求出的梯度更新信息将以指数形式增加,发生梯度爆炸。而乘积小于1时,则会发生梯度消失。

哪个更容易发生

因为sigmoid导数最大为1/4,所以在梯度下降算法时,梯度消失更容易发生。

解决

梯度消失

  • 1、ReLU激活函数

如果运用导数为1的激活函数则能有效的解决sigmoid带来的问题,函数如下图:


image.png

优点:计算方便,计算速度快;加速了网络的训练
缺点:由于负数部分恒为0,会导致一些神经元无法激活(可通过设置小学习率部分解决); 输出不是以0为中心的

而leakyReLU很好的解决了ReLU的问题。

  • 2、batchnorm

Batchnorm是深度学习发展以来提出的最重要的成果之一了,目前已经被广泛的应用到了各大网络中,具有加速网络收敛速度,提升训练稳定性的效果,Batchnorm本质上是解决反向传播过程中的梯度问题。参考
)

梯度爆炸

  • 1、使用长短期记忆网络

在循环神经网络中,梯度爆炸的发生可能是因为某种网络的训练本身就存在不稳定性,如随时间的反向传播本质上将循环网络转换成深度多层感知机神经网络。

使用长短期记忆(LSTM)单元和相关的门类型神经元结构可以减少梯度爆炸问题。

采用 LSTM 单元是适合循环神经网络的序列预测的最新最好实践。

  • 2、使用权重正则化(Weight Regularization)

如果梯度爆炸仍然存在,可以尝试另一种方法,即检查网络权重的大小,并惩罚产生较大权重值的损失函数。该过程被称为权重正则化,通常使用的是 L1 惩罚项(权重绝对值)或 L2 惩罚项(权重平方)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。