神经网络问题之一:梯度消失(Vanishing Gradient)

打印 上一主题 下一主题

主题 783|帖子 783|积分 2349

        梯度消失(Vanishing Gradient)问题是深度神经网络训练中的一个关键问题,它主要发生在反向传播过程中,导致靠近输入层的权重更新变得非常缓慢甚至几乎停滞,严重影响网络的训练效果和性能。

图1 在深度神经网络中轻易出现梯度消失和梯度爆炸问题

        超过三层以上的神经网络称为深度神经网络。

一、界说与征象

        梯度消失是指在深度神经网络的反向传播过程中,随着网络层数的增加,梯度值逐层减小,最终趋近于零。这会导致靠近输入层的隐蔽层权重更新变得非常缓慢,几乎不更新,从而阻止网络从输入数据中学习有效的特征表示。

先了解几个根本概念和反向传播过程

1. 几个根本概念

        (1)前向传播:数据从输入层开始,颠末隐蔽层,最终到达输出层的过程。在这个过程中,每一层的输入都是前一层的输出,而每一层的输出则作为下一层的输入。
        (2)损失函数:用于量化模型猜测值与实际值之间的差异。常见的损失函数包罗均方误差、交叉熵损失等。
        (3)梯度:损失函数相对于网络参数的偏导数,表示了损失函数在该点处相对于参数的厘革率。
2. 反向传播步骤

        (1)计算输出层的误差:根据损失函数,计算输出层的猜测值与实际值之间的差异,得到输出层的误差。
        (2)逐层反向传播误差:从输出层开始,使用链式法则逐层计算每个隐蔽层的误差。链式法则答应我们将输出层的误差反向传播到每一层,并计算每层的梯度。对于每一层,我们计算该层每个神经元的梯度,这个梯度表示了损失函数相对于该神经元权重的偏导数。
        (3)更新网络参数:使用计算得到的梯度,根据梯度下降算法或其他优化算法,更新网络的权重和偏置。梯度下降算法的更新公式为:new_parameter = old_parameter - learning_rate * gradient,其中learning_rate是学习率,用于控制更新的步长。

图2 深度神经网络的反向传播过程


、原因

        梯度消失问题主要由以下几个因素引起:
        1. 激活函数的选择:某些非线性激活函数(如Sigmoid和Tanh)在输入值非常大或非常小时,其导数(或梯度)会趋近于零。在深度神经网络中,这些激活函数的梯度在反向传播过程中会逐层累积减小,最终导致梯度消失。
        颠末神经网络中多层的变更,很大概使得后面层的输入数据变得过大或过小,从而掉进激活函数(比方Sigmoid、Tanh)的饱和区。

图3 Sigmoid函数存在梯度消失问题

        饱和区的梯度随x的厘革y的厘革很不明显,即会产生梯度消失问题,进而导致学习过程停止。为防止这个问题,我们希望,数据落入激活函数中间的非饱和区。为了降低内部协变量偏移所带来的负面影响,在训练过程中一样寻常会采用非饱和型激活函数(ReLU)、精致的网络参数初始化,守旧的学习率,但这不仅会使得网络的学习速率太慢,还会使得最终效果特别依靠于网络的初始化。
        2. 链式法则的应用:在深度神经网络中,梯度是通过链式法则从输出层逐层反向传播到输入层的。每一层的梯度都是前一层梯度与该层激活函数导数的乘积。假如每一层的梯度都稍微减小一点,那么颠末多层传播后,梯度值就会变得非常小,几乎为零。
        3. 权重初始化不妥:假如网络权重的初始值设置得太小,那么在前向传播过程中,输入信号大概会迅速衰减,导致激活函数的输入值非常小,进而使得梯度在反向传播过程中也迅速减小。
        4. 网络层数过多:随着网络层数的增加,梯度需要通过更多的层进行反向传播。每一层都大概对梯度进行肯定的衰减,因此层数越多,梯度消失的风险就越大。

、影响

        梯度消失问题对深度神经网络的训练效果和性能有着显著的影响。由于靠近输入层的权重更新变得非常缓慢甚至几乎停滞,这会导致网络无法从输入数据中学习有效的特征表示,从而降低模型的精确性和泛化能力。

、解决方法

        为了解决梯度消失问题,可以采取以下措施:
        1. 选择符合的激活函数:使用ReLU及其变体(如Leaky ReLU、Parametric ReLU等)作为激活函数。这些激活函数在输入为正时具有恒定的导数(对于ReLU为1),有助于缓解梯度消失问题。同时,它们还具有计算简单、收敛速率快等优点。
        合理的权重初始化:采用符合的权重初始化方法(如He初始化或Glorot初始化)来设置网络权重的初始值。这些方法可以根据网络的层数和激活函数的特点来设置权重的初始值,从而减小梯度消失的风险。
        2. 引入批量归一化(Batch Normalization):在每一层的输入处进行归一化操作,使每一层的输入分布更加稳定。这有助于减小内部协变量偏移(Internal Covariate Shift)问题,提高模型的收敛速率和稳定性,同时也在肯定程度上缓解梯度消失问题。
        3. 使用残差连接(Residual Connections):通过引入残差连接来构建残差网络(Residual Networks, ResNets)。残差连接答应梯度在反向传播时直接跳过某些层,从而缓解梯度消失的征象。这种方法在深度神经网络中非常有效,可以显著提高模型的训练效果和性能。
        4. 调解优化算法参数:合理设置优化算法的学习率、动量等参数。学习率不宜过大也不宜过小,以克制权重更新过快或过慢而导致的梯度消失或梯度爆炸问题。动量参数可以资助稳定梯度更新过程,提高训练的稳定性。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

祗疼妳一个

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表