首页 > 编程知识 正文

梯度消失解决方法,进行梯度稀释的原因

时间:2023-05-05 13:46:23 阅读:9367 作者:3871

在学习奋斗中的路人老师的机器学习视频时,在课堂上制作了一个关于神经网络的小Demo,但运行效果很难达到预期,在网上查了一下资料,发现是坡度爆炸和坡度消失引起的灾祸。 今天让我们一起学习梯度消失和梯度爆炸的概念、产生的原因、应该怎么解决吧。

目录

1 .坡度消失和坡度爆炸的概念

2 .坡度消失和坡度爆炸产生的原因

3 .坡度消失和坡度爆炸的解决办法

首先,让我们来理解什么是梯度不稳定的概念。

概念:深神经网络中梯度不稳定,在靠近输入层的隐性层会消失或爆炸。 这种不稳定性才是深度神经网络中基于梯度学习的根本问题。

坡度不稳定的根本原因:前一层坡度是后一层坡度的乘积。 过多的层会导致坡度不稳定的场景,如坡度消失或坡度爆炸。

重点:梯度消失和梯度爆炸属于梯度不稳定的范畴

1 .梯度消失和梯度爆炸概念梯度消失:在神经网络中,当前隐层学习速度低于后隐层学习速度时,即随着隐层数目的增加,分类精度反而降低。 这种现象称为梯度消失。

梯度爆炸:在神经网络中,当前隐层的学习速度低于后隐层的学习速度时,即随着隐层数的增加,分类精度反而下降。 这种现象称为梯度爆炸。

其实坡度消失和坡度爆炸是一回事,只是表现形式和产生的原因不同。

2 .梯度消失和梯度爆炸产生原因梯度消失()1)隐层层数过多; )2)采用了不适当的激活函数(容易发生梯度消失,但也可能发生梯度爆炸)。

梯度爆炸()1)隐藏层层数过多)2)权重初始化值过大

从这三个角度说明这两种现象的根本原因

(1)隐藏层层数过多

总结:从深层网络的角度来说,不同层的学习速度差异较大,网络中接近输出的层学习情况较好,接近输入的层学习较慢,有时即使训练很久,前几层的权重也与刚开始随机初始化的值相同因此,坡度消失或爆炸的根本原因在于反向传播训练规律,先天不足。 具体请参照下图。

从上图可以看出,在四个隐藏层的网络中,第四个隐藏层比第一个隐藏层慢了两位数!

)2)激活函数

以下图中的反向传播为例,假设每层只有一个神经元,每层都可以用表达式1表示。 其中表示sigmoid函数,c表示成本函数,前面一层的输出和后面一层的输入关系如下式1所示。 可以导出公式2。

是sigmoid函数,其导数的图像如下图所示。

为了能看到,

的最大值是

中,通常使用标准方法初始化网络权重。 也就是说,使用平均值为0、标准偏差为1的tmdmf分布。 因此,初始化的网络权重通常小于1,如下所示。 关于2式的连锁求导,层数越多求导结果越小,最终可能没有梯度。 因此,sigmoid函数一般不适合在神经网络中使用,那么在神经网络中应该使用什么样的激活函数呢? 等等,我会为你发表的!

(3)初始化权重值过大

时光流逝

也就是说,当w较大时,通过2式的连锁乘法得到的(反向传播),前面的网络层比后面的网络层梯度变化更快,引起了梯度爆炸的问题。 因此,在一般的神经网络中,权重的初始化一般利用tmdmf分布(正态分布)随机生成权重值。

3 .坡度消失和坡度爆炸的解决方案坡度消失和坡度爆炸的问题都是由于网络太深,网络权重更新不稳定,本质上是由于坡度反向传播中的协同效应。 对于更常见的坡度消失问题,可以考虑以下三种解决方案:

(1)将sigmoid函数替换为ReLU、Leaky-ReLU、P-ReLU、R-ReLU、Maxout等。 (一些激活函数的比较请参考我的博客)

)2)使用Batch Normalization。 (请参阅我的博客以了解Batch Normalization。)

)3) LSTM的结构设计还可以改善RNN中的梯度消失问题。

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