什么是神经网络:梯度消失

        上一篇我们讲解了如何使用反向传播梯度下降法来进行参数更新,今天我们来讲讲更新参数过程中可能出现的问题:梯度消失。

         首先讲解一下什么是梯度消失:梯度消失(Gradient Vanishing)是深度神经网络训练过程中常见的问题,特别是在使用基于梯度的优化算法(如反向传播)时。梯度消失指的是在网络的较深层(靠近输入层的层,因为梯度是从输出层往前传,反向传播,所以靠近输入层的层是较深层)中,梯度逐渐变得非常小,甚至接近于零,导致这些层的参数几乎没有更新,从而使得这些层无法有效地学习到数据的特征。

    那么为什么会出现梯度消失的问题呢?有以下几个原因:

  1. 1. 链式法则的乘积效应:在深层网络中,通过链式法则计算梯度时,梯度会通过每一层逐层传播。如果每层的梯度都小于1(例如,激活函数的导数是0到1之间的值),多个小于1的数相乘会导致梯度逐渐变得非常小。

    2. 激活函数的选择:某些激活函数(例如 sigmoid 和 tanh)在输入较大或较小的时候,导数接近于0,因此在深层网络中使用这些激活函数容易导致梯度消失。

    3. 参数初始化:不恰当的参数初始化可能导致梯度消失问题。如果参数初始化过大或过小,激活值会偏向于某个方向,导致梯度逐渐减小。

  2. 梯度消失会导致以下问题:

    • 1. 网络训练缓慢:由于深层网络中底层参数无法有效更新,网络学习速度变慢。

    • 2. 网络性能下降:无法学习到深层次的抽象特征,影响网络的表征能力和泛化能力。

    • 3. 梯度爆炸问题:梯度消失的对立面是梯度爆炸,即梯度变得非常大,可能导致数值不稳定和训练失败。

        这么说可能有点抽象,让我们来举一个例子来说明什么是梯度消失。

    图片

        假设我们有一个深度神经网络,网络结构包括多个层,并且使用 sigmoid 激活函数。考虑一个具有L层的神经网络,每个隐藏层都使用 sigmoid 激活函数:

    图片

        其中Z是输入加权和,我们将使用反向传播算法来计算每一层的梯度,并观察梯度消失的现象。

  3.     设我们的网络输入是x,输出值是y^(预测值),真实标签是 y,我们使用均方误差(MSE)作为损失函数:

    图片

    现在我们来计算每一层的梯度并观察梯度消失的情况。

    假设我们的网络有 L 个隐藏层(不包括输入层和输出层),每个隐藏层的大小为 n,输出层的大小为 1。

    前向传播

    1. 输入层到第一个隐藏层:

    图片

  4. 2. 各隐藏层之间的传播:对于第 l 层

    图片

  5. 3. 最后一层到输出层:

    图片

    反向传播

    图片

        

  1.       我们可以看到,由于梯度下降的链式法则,每层参数的梯度都需要乘以之前层的激活函数的导数,更新参数时 w=w-n*梯度。这里的n指学习率。而sigmiod函数的导数的取值范围是(0,0.25」,如果我们的网络非常深,梯度会从输出层传播回输入层,每经过一层梯度都会缩小。假如sigmoid求导为0.25,且网络有 10 层。那么,通过 10 层网络后,梯度的大小将变为 0.00095,这说明在网络的前几层,梯度将会变得非常接近于零,几乎无法对参数进行有效的更新,从而导致梯度消失问题。

  2.     为了避免梯度消失,我们可以重新选择激活函数,比如 ReLU,它在正区间具有常数梯度,有助于避免梯度消失,让我们看下他的图像:

    图片

        负数部分导数为0,正数部分导数为1, 从而使梯度下降能够继续迭代。不会出现梯度消失问题。可以有效防止梯度消失现象的发生。

    喜欢的话点个关注哦~会每天分享人工智能机器学习内容,回复关键字可获取相关算法数据及代码~

  • 20
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值