首页 > 编程知识 正文

lstm解决梯度消失的问题,梯度消失梯度爆炸的表现

时间:2023-05-05 18:22:29 阅读:9369 作者:2130

1 .神经网络神经网络其实是多层探测器,我们来看看它的结构吧:

从上图可以看出,神经网络主要分为三种网络层

输入层:是数据输入神经网络的入口,例如MNIST为28*28的像素点集,则输入层需要28*28个输入神经元,生成表示偏移量的输入神经元(图示

作为例子举出:人的脸部识别系统,假设有3个隐藏层

隐藏层1:识别眼睛和眉毛特征

隐藏层2:识别口和耳的特征

隐藏层3:识别肤色,即所有面部

隐藏层是指从低层逐步抽象到高层的网络层隐藏层:是模型预测值的输出口。 这里,使用经常用于对MNIST的图像类别进行分类的softmax

那么,我知道:

自下而上(输出层(非显示层)输出层)是通过训练模型的过程:小批量/总量数据逐步调节权重,基于loss函数求出最佳loss的过程

自上而下,进行逆微分调参,并在此基础上进行梯度爆炸和消失问题分析

到目前为止,我们对神经网络有了初步的认识。 其次是重点输出层梯度消失

2 .梯度消失和梯度爆炸如前所述,反向传播算法,即BP算法从输出层反向传播到输入层,逐层传递梯度爆炸,进一步进行权重更新;

无论是机器学习还是深度学习(DNN ),都应该知道在一次训练中根据上次的误差进行坡度下降的权重更高

此时,随着网络层的增加,我们将暴露出两个问题:梯度消失和梯度爆炸

2.1 .从深度网络角度描述梯度消失和梯度爆炸深度神经网络训练时,采用反向传播方式。 这种方式在用链式求导规律计算各层梯度时涉及一些联合操作。 因此,在推导激活函数时,如果该部分大于1且明显层数较多,则最终求得的3358www.Sina.com/呈指数增长,为误差梯度; 当该部分小于1时,随着层数增多,求得的梯度更新信息呈指数衰减,产生梯度爆炸

2.2从激活函数的角度计算权重更新信息时,需要计算上一层偏导数信息,因此激活函数选择不合适,如梯度更新,原因见下图,左图为sigmoid的3358 www.Sina

2.2.1 sigmoid函数及其导数的公式如下:

看看那个函数及其导数图像:

设2.2.2tanh为激活函数tanh,其导数如下,可见tanh虽然略优于sigmoid,但其导数仍然小于1。 tanh的数学表达如下。

3. 梯度消失3.1预训练和微调该方法来自Hinton 2006年发表的论文,hint on提出了一种无监督逐步训练的方法,其基本思想是每次训练一个隐藏节点训练时输入上一隐藏节点的输出,本层隐藏节点的输出下一隐藏节点的输入完成预训练后,对整个网络进行“精细调整”(fine-tunning )。 Hinton是训练深度信念网络(Deep Belief Networks ),采用该方法,每层预训练完成后,采用BP算法训练整个网络。 这一观点相当于首先寻找局部最优,然后综合起来寻找全局最优,这种方法有一定的好处,但目前很少得到应用。

3.2梯度剪切、正则梯度剪切的方案主要针对使用sigmoid,梯度消失就会很明显了提出,即设定梯度剪切阈值,然后更新梯度时,如果梯度超过该阈值,则强制限制在该范围内。 这可以防止梯度爆炸。

注: WGAN也有梯度剪切限制操作,与此不同,WGAN限制梯度更新信息是为了保证lipchitz条件。

解决梯度爆炸的另一种手段是采用加权正则化,比较常见的是L1和L2正则。 规范化是指通过将网络权重规范化来仔细观察正规项损失函数的形式。

a是正则化系数,发生梯度爆炸时权重范数非常大,可以被正则化项部分抑制

制。

3.3 采用不同的激活函数 (1) ReLU函数:

如果激活函数的导数为1,那么就不存在梯度消失爆炸的问题了,每层的网络都可以得到相同的更新速度,ReLU就这样应运而生。

ReLU的主要贡献在于:

解决了梯度消失、爆炸的问题。计算方便,计算速度快。加速了网络的训练。

同时也存在一些缺点:

由于负数部分恒为0,会导致一些神经元无法激活(可通过设置小学习率部分解决)。输出不是以0为中心的。(2) LeakyReLU函数:

LeakyReLU就是为了解决ReLU的0区间带来的影响,该函数输出对负值输入有很小的坡度,由于导数总是不为零,这能减少静默神经元的出现,允许基于梯度的学习(虽然会很慢),解决了ReLU函数进入负区间后,导致神经元不学习的问题。

(3) ELU函数:

融合了sigmoid和ReLU,左侧具有软饱和性,右侧无饱和性。右侧线性部分使得ELU能够缓解梯度消失,而左侧软饱能够让ELU对输入变化或噪声更鲁棒。ELU的输出均值接近于零,所以收敛速度更快,但相对于LeakyReLU来说,计算要更耗时间一些。

还有其他一些激活函数,如下表:

3.4 Batch Normalization

BN是深度学习发展以来提出的最重要的成果之一了,目前已经被广泛的应用到了各大网络中,具有加速网络收敛速度,提升训练稳定性的效果,BN本质上是解决反向传播过程中的梯度问题。BN全名是Batch Normalization,简称BN,即批规范化,通过规范化操作将输出信号x规范化保证网络的稳定性。
反向传播式子中有w的存在,所以w的大小影响了梯度的消失和爆炸,BN就是通过对每一层的输出规范为均值和方差一致的方法,消除了w带来的放大缩小的影响,进而解决梯度消失和爆炸的问题,或者可以理解为BN将输出从饱和区拉倒了非饱和区。
有关Batch Normalization详细的内容可以参考这篇博客:Batch Normalization

3.5 残差结构

事实上,就是残差网络的出现导致了image net比赛的终结,自从残差提出后,几乎所有的深度网络都离不开残差的身影,相比较之前的几层,几十层的深度网络,在残差网络面前都不值一提,残差可以很轻松的构建几百层,一千多层的网络而不用担心梯度消失过快的问题,原因就在于残差的捷径(shortcut)部分。具体关于残差网络ResNet的理解后续再来解析。

3.6 LSTM网络

LSTM是循环神经网络RNN的变体,全称是长短期记忆网络(long-short term memory networks),它是不那么容易发生梯度消失的,主要原因在于LSTM内部复杂的“门”结构,LSTM通过它内部的“门”可以接下来更新的时候“记住”前几次训练的“残留记忆”,因此,经常用于生成文本中。关于LSTM的原理详解后续再分析。

 

 

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