0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

深度神经网络的困扰 梯度爆炸与梯度消失

2a37_sessdw 来源:机器学习实验室 作者:louwill 2021-08-23 09:12 次阅读

原始结构的RNN还不够处理较为复杂的序列建模问题,它存在较为严重的梯度消失问题,最直观的现象就是随着网络层数增加,网络会逐渐变得无法训练。长短期记忆网络(Long Short Time Memory,LSTM)正是为了解决梯度消失问题而设计的一种特殊的RNN结构。

深度神经网络的困扰:梯度爆炸与梯度消失

在此前的普通深度神经网络和深度卷积网络的讲解时,图1就是一个简单的两层普通网络,但当网络结构变深时,神经网络在训练时碰到梯度爆炸或者梯度消失的情况。那么什么是梯度爆炸和梯度消失呢?它们又是怎样产生的?

鉴于神经网络的训练机制,不管是哪种类型的神经网络,其训练都是通过反向传播计算梯度来实现权重更新的。通过设定损失函数,建立损失函数关于各层网络输入输出的梯度计算,当网络训练开动起来的时候,系统便按照反向传播机制来不断更新网络各层参数直到停止训练。但当网络层数加深时,这个训练系统并不是很稳,经常会出现一些问题。其中梯度爆炸和梯度消失便是较为严重的两个问题。

所谓梯度爆炸就是在神经网络训练过程中,梯度变得越来越大以使得神经网络权重得到疯狂更新的情形,这种情况很容易发现,因为梯度过大,计算更新得到的参数也会大到崩溃,这时候我们可能看到更新的参数值中有很多的NaN,这说明梯度爆炸已经使得参数更新出现数值溢出。这便是梯度爆炸的基本情况。

然后是梯度消失。与梯度爆炸相反的是,梯度消失就是在神经网络训练过程中梯度变得越来越小以至于梯度得不到更新的一种情形。当网络加深时,网络深处的误差很难因为梯度的减小很难影响到前层网络的权重更新,一旦权重得不到有效的更新计算,神经网络的训练机制也就失效了。

为什么神经网络训练过程中梯度怎么就会变得越来越大或者越来越小?可以用本书第一讲的神经网络反向传播推导公式为例来解释。

0a52f092-03ac-11ec-9bcf-12bb97331649.png

式(11.1)~-式(11.8)是一个两层网络的反向传播参数更新公式推导过程。离输出层相对较远的是输入到隐藏层的权重参数,可以看到损失函数对于隐藏层输出输入到隐藏层权重和偏置的梯度计算公式,一般而言都会转换从下一层的权重乘以激活函数求导后的式子。如果激活函数求导后的结果和下一层权重的乘积大于1或者说远远大于1的话,在网络层数加深时,层层递增的网络在做梯度更新时往往就会出现梯度爆炸的情况。如果激活函数求导和下一层权重的乘积小于1的话,在网络加深时,浅层的网络梯度计算结果会越来越小往往就会出现梯度消失的情况。所以可是说是反向传播的机制本身造就梯度爆炸和梯度消失这两种不稳定因素。例如,一个100层的深度神经网络,假设每一层的梯度计算值都为1.1,经过由输出到输入的反向传播梯度计算可能最后的梯度值就变成= 13780.61234,这是一个极大的梯度值了,足以造成计算溢出问题。若是每一层的梯度计算值为 0.9,反向传播输入层的梯度计算值则可能为= 0.000026561398,足够小到造成梯度消失。本例只是一个简化的假设情况,实际反向传播计算要更为复杂。

所以总体来说,神经网络的训练中梯度过大或者过小引起的参数过大过小都会导致神经网络失效,那我们的目的就是要让梯度计算回归到正常的区间范围,不要过大也不要过小,这也是解决这两个问题的一个思路。

那么如何解决梯度爆炸和梯度消失问题?梯度爆炸较为容易处理,在实际训练的时候对梯度进行修剪即可,但是梯度消失的处理就比较麻烦了,由上述的分析我们知道梯度消失一个关键在于激活函数。Sigmoid激活函数本身就更容易产生这种问题,所以一般而言,我们换上更加鲁棒的ReLu激活函数以及给神经网络加上归一化激活函数层(BN层),一般问题都能得到很好的解决,但也不是任何情形下都管用,例如,RNN网络,具体在下文中我们再做集中探讨。

以上便是梯度爆炸和梯度消失这两种问题的基本解释,下面我们回归正题,来谈谈本文的主角——LSTM。

LSTM:让RNN具备更好的记忆机制

前面说了很多铺垫,全部都是为了来讲LSTM。梯度爆炸和梯度消失,普通神经网络和卷积神经网络有,那么循环神经网络RNN也有吗?必须有。而且梯度消失和梯度爆炸的问题之于RNN来说伤害更大。当RNN网络加深时,因为梯度消失的问题使得前层的网络权重得不到更新,RNN就会在一定程度上丢失记忆性。为此,在传统的RNN网络结构基础上,研究人员给出一些著名的改进方案,因为这些改进方案都脱离不了经典的RNN架构,所以一般来说我们也称这些改进方案为RNN变种网络。比较著名的就是GRU(循环门控单元)和LSTM(长短期记忆网络)。GRU和LSTM二者结构基本一致,但有部分不同的地方,本讲以更有代表性的LSTM来进行详解。

在正式深入LSTM的技术细节之前,先要明确几点。第一,LSTM的本质是一种RNN网络。第二,LSTM在传统的RNN结构上做了相对复杂的改进,这些改进使得LSTM相对于经典RNN能够很好的解决梯度爆炸和梯度消失问题,让循环神经网络具备更强更好的记忆性能,这也是LSTM的价值所在。那咱们就来重点看一下LSTM的技术细节。

咱们先摆一张经典RNN结构与LSTM结构对比图,这样能够有一个宏观的把握,然后再针对LSTM结构图中各个部分进行拆解分析。图2所示是标准RNN结构,图3所示是LSTM结构。

0ae0b4a4-03ac-11ec-9bcf-12bb97331649.png

图2 RNN结构

0b0ffda4-03ac-11ec-9bcf-12bb97331649.png

图3 LSTM结构

从图3中可以看到,相较于RNN单元,LSTM单元要复杂许多。每个LSTM单元中包含了4个交互的网络层,现在将LSTM单元放大,并标注上各个结构名称,如图4所示。

0b3e4380-03ac-11ec-9bcf-12bb97331649.png

图4 LSTM单元

根据图4,一个完整的LSTM单元可以用式(11.9)~(11.14)来表示,其中符号表示两个向量合并。

0b5aacb4-03ac-11ec-9bcf-12bb97331649.png

现在我们将LSTM单元结构图进行分解,根据结构图和公式来逐模块解释LSTM。

1. 记忆细胞

如图5红色部分所示,可以看到在LSTM单元的最上面部分有一条贯穿的箭头直线,这条直线由输入到输出,相较于RNN,LSTM提供了c作为记忆细胞输入。记忆细胞提供了记忆的功能,在网络结构加深时仍能传递前后层的网络信息。这样贯穿的直线使得记忆信息在网络各层之间保持下去很容易。

0b8d801c-03ac-11ec-9bcf-12bb97331649.png

图5 LSTM记忆细胞

2. 遗忘门(Forget Gate)

遗忘门的计算公式如下:

0bb8b4a8-03ac-11ec-9bcf-12bb97331649.png

遗忘门的作用是要决定从记忆细胞c中是否丢弃某些信息,这个过程可以通过一个 Sigmoid函数来进行处理。遗忘门在整个结构中的位置如图11.6所示。可以看到,遗忘门接受来自输入和上一层隐状态的值进行合并后加权计算处理。

3. 记忆细胞候选值和更新门

更新门(Update Gate)表示需要将什么样的信息能存入记忆细胞中。除了计算更新门之外,还需要使用tanh计算记忆细胞的候选值。LSTM中更新门需要更加细心一点。记忆细胞候选值和更新门的计算公式如下:

0c2fd024-03ac-11ec-9bcf-12bb97331649.png

更新门和tanh在整个结构中的位置如图7所示。

0c5044ee-03ac-11ec-9bcf-12bb97331649.png

图7 记忆细胞候选值和更新门

4. 记忆细胞更新

结合遗忘门、更新门、上一个单元记忆细胞值和记忆细胞候选值来共同决定和更新当前细胞状态:

0c73d4ea-03ac-11ec-9bcf-12bb97331649.png

记忆细胞更新在LSTM整个结构中位置如图8所示:

0c9d7304-03ac-11ec-9bcf-12bb97331649.png

图8 记忆细胞更新

5. 输出门

LSTM 提供了单独的输出门(Output Gate)。计算公式如下:

0cc035f6-03ac-11ec-9bcf-12bb97331649.png

输出门的位置如图9所示。

0ce5e5d0-03ac-11ec-9bcf-12bb97331649.png

图9 输出门

以上便是完整的LSTM结构。虽然复杂,但经过逐步解析之后也就基本清晰了。LSTM 在自然语言处理、问答系统、股票预测等等领域都有着广泛而深入的应用。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4572

    浏览量

    98749
  • LSTM
    +关注

    关注

    0

    文章

    42

    浏览量

    3682

原文标题:深入理解LSTM

文章出处:【微信号:sessdw,微信公众号:三星半导体互动平台】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    详解深度学习、神经网络与卷积神经网络的应用

    在如今的网络时代,错综复杂的大数据和网络环境,让传统信息处理理论、人工智能与人工神经网络都面临巨大的挑战。近些年,深度学习逐渐走进人们的视线,通过
    的头像 发表于 01-11 10:51 728次阅读
    详解<b class='flag-5'>深度</b>学习、<b class='flag-5'>神经网络</b>与卷积<b class='flag-5'>神经网络</b>的应用

    浅析深度神经网络压缩与加速技术

    深度神经网络深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似
    的头像 发表于 10-11 09:14 394次阅读
    浅析<b class='flag-5'>深度</b><b class='flag-5'>神经网络</b>压缩与加速技术

    卷积神经网络深度神经网络的优缺点 卷积神经网络深度神经网络的区别

    深度神经网络是一种基于神经网络的机器学习算法,其主要特点是由多层神经元构成,可以根据数据自动调整神经元之间的权重,从而实现对大规模数据进行预
    发表于 08-21 17:07 2335次阅读

    手写数字识别神经网络的实现(2)

    在练习二中,手写数字识别使用数值微分的方式实现了神经网络,现在用误差反向传播法来实现。两者的区别仅仅是使用不同方法求梯度
    的头像 发表于 06-23 16:57 468次阅读

    人工智能领域的梯度学习研究

    前向梯度学习通常用于计算含有噪声的方向梯度,是一种符合生物学机制、可替代反向传播的深度神经网络学习方法。然而,当要学习的参数量很大时,标准的前向梯度
    发表于 05-30 10:34 231次阅读
    人工智能领域的<b class='flag-5'>梯度</b>学习研究

    浅析三种主流深度神经网络

    来源:青榴实验室1、引子深度神经网络(DNNs)最近在图像分类或语音识别等复杂机器学习任务中表现出的优异性能令人印象深刻。在本文中,我们将了解深度神经网络的基础知识和三个最流行
    的头像 发表于 05-17 09:59 1084次阅读
    浅析三种主流<b class='flag-5'>深度</b><b class='flag-5'>神经网络</b>

    4 TensorFlow实现梯度下降法(1)#神经网络

    神经网络深度学习
    未来加油dz
    发布于 :2023年05月16日 18:55:44

    2.2 梯度下降法的优化(3)#神经网络

    神经网络深度学习
    未来加油dz
    发布于 :2023年05月16日 18:46:36

    2.2 梯度下降法的优化(2)#神经网络

    神经网络深度学习
    未来加油dz
    发布于 :2023年05月16日 18:46:11

    2.2 梯度下降法的优化(1)#神经网络

    神经网络深度学习
    未来加油dz
    发布于 :2023年05月16日 18:45:48

    2.1 梯度下降法的优化(1)#神经网络

    神经网络深度学习
    未来加油dz
    发布于 :2023年05月16日 18:45:01

    1 梯度下降法基本原理(3)#神经网络

    神经网络深度学习
    未来加油dz
    发布于 :2023年05月16日 15:33:42

    1 梯度下降法基本原理(2)#神经网络

    神经网络深度学习
    未来加油dz
    发布于 :2023年05月16日 15:33:17

    1 梯度下降法基本原理(1)#神经网络

    神经网络深度学习
    未来加油dz
    发布于 :2023年05月16日 15:32:54

    浅析三种主流深度神经网络

    来源:青榴实验室 1、引子 深度神经网络(DNNs)最近在图像分类或语音识别等复杂机器学习任务中表现出的优异性能令人印象深刻。 在本文中,我们将了解深度神经网络的基础知识和三个最流行
    的头像 发表于 05-15 14:20 611次阅读
    浅析三种主流<b class='flag-5'>深度</b><b class='flag-5'>神经网络</b>