在学习李宏毅老师机器学习的相关视频时,课下做了一个有关神经网络的小Demo,但是运行效果总是不尽人意,上网查询资料,才发现是梯度爆炸和梯度消失惹的祸。今天就让我们一起来学习一下梯度消失与梯度爆炸的概念、产生原因以及该如何解决。

目录

1.梯度消失与梯度爆炸的概念

2.梯度消失与梯度爆炸的产生原因

3.梯度消失与梯度爆炸的解决方案


首先让我们先来了解一个概念:什么是梯度不稳定呢?

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

产生梯度不稳定的根本原因:前面层上的梯度是来自后面层上梯度的乘积。当存在过多的层时,就会出现梯度不稳定场景,比如梯度消失和梯度爆炸。

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


1.梯度消失与梯度爆炸的概念

梯度消失:在神经网络中,当前面隐藏层的学习速率低于后面隐藏层的学习速率,即随着隐藏层数目的增加,分类准确率反而下降了。这种现象叫梯度消失。

梯度爆炸:在神经网络中,当前面隐藏层的学习速率低于后面隐藏层的学习速率,即随着隐藏层数目的增加,分类准确率反而下降了。这种现象叫梯度爆炸。

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

2.梯度消失与梯度爆炸的产生原因

梯度消失:(1)隐藏层的层数过多;(2)采用了不合适的激活函数(更容易产生梯度消失,但是也有可能产生梯度爆炸)

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

以下将从这3个角度解释产生这两种现象的根本原因

(1)隐藏层的层数过多

总结:从深层网络角度来讲,不同的层学习的速度差异很大,表现为网络中靠近输出的层学习的情况很好,靠近输入的层学习的很慢,有时甚至训练了很久,前几层的权值和刚开始随机初始化的值差不多。因此,梯度消失、爆炸,其根本原因在于反向传播训练法则,属于先天不足。具体见下图:

从上图可以非常容易的看出来:对于四个隐层的网络来说,第四隐藏层比第一隐藏层的更新速度慢了两个数量级!!!

(2)激活函数

我们以下图的反向传播为例,假设每一层只有一个神经元且对于每一层都可以用公式1表示,其中σ为sigmoid函数,C表示的是代价函数,前一层的输出和后一层的输入关系如公式1所示。我们可以推导出公式2。

σ为sigmoid函数,其导数的图像如下图所示:

可见,

的最大值为

,而我们一般会使用标准方法来初始化网络权重,即使用一个均值为0标准差为1的高斯分布。因此,初始化的网络权值通常都小于1,从而有

。对于2式的链式求导,层数越多,求导结果越小,最终导致梯度消失的情况出现。所以说,sigmoid函数一般不适合用于神经网络中,那神经网络中应该用哪些激活函数呢?等等就为你揭晓!

(3)初始化权重的值过大

,也就是w比较大的情况下,根据2式的链式相乘可得(反向传播),则前面的网络层比后面的网络层梯度变化更快,引起了梯度爆炸的问题。所以,在一般的神经网络中,权重的初始化一般都利用高斯分布(正态分布)随机产生权重值。

3.梯度消失与梯度爆炸的解决方案

梯度消失和梯度爆炸问题都是因为网络太深,网络权值更新不稳定造成的,本质上是因为梯度反向传播中的连乘效应。对于更普遍的梯度消失问题,可以考虑一下三种方案解决:

(1)用ReLU、Leaky-ReLU、P-ReLU、R-ReLU、Maxout等替代sigmoid函数。(几种激活函数的比较见我的博客)

(2)用Batch Normalization。(对于Batch Normalization的理解可以见我的博客)

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

梯度消失和梯度爆炸_出现梯度消失与梯度爆炸的原因以及解决方案相关推荐

  1. 梯度下降参数不收敛_一文讲透梯度下降

    本文始发于个人公众号:TechFlow,原创不易,求个关注 在之前的文章当中,我们一起推导了线性回归的公式,今天我们继续来学习上次没有结束的内容. 上次我们推导完了公式的时候,曾经说过由于有许多的问题 ...

  2. 梯度消失和梯度爆炸_从零开始学Pytorch之梯度消失、梯度爆炸

    本文首发于微信公众号"计算机视觉cv" 深度模型有关数值稳定性的典型问题是消失(vanishing)和爆炸(explosion). 当神经网络的层数较多时,模型的数值稳定性容易变差 ...

  3. javaheapspace解决方案_高手总结的9种 OOM 常见原因及解决方案

    当 JVM 内存严重不足时,就会抛出 java.lang.OutOfMemoryError 错误.本文总结了常见的 OOM 原因及其解决方法,如下图所示.如有遗漏或错误,欢迎补充指正. 1.Java ...

  4. ieee754浮点数转换工具_关于JS浮点数运算不精确的原因和解决方案

    背景 之前在一个项目中,涉及到了金额,协议组定的标准是按照分的单位进行传递的,但是交互上,web页面中为了更友好的体验,是使用的元作为单位的,这个时候就需要转换一下单位 本来是很简单的一个转化的需求, ...

  5. gateway 内存溢出问题_内存溢出和内存泄漏、产生原因以及解决方案

    内存泄露是每个开发者最终都要面对的问题,它是许多问题的根源:反应迟缓,崩溃,高延迟,以及其他应用问题. JavaScript 内存管理 JavaScript 是一种垃圾回收语言.垃圾回收语言通过周期性 ...

  6. 梯度消失和梯度爆炸_梯度消失、爆炸的原因及解决办法

    一.引入:梯度更新规则 目前优化神经网络的方法都是基于反向传播的思想,即根据损失函数计算的误差通过梯度反向传播的方式,更新优化深度网络的权值.这样做是有一定原因的,首先,深层网络由许多非线性层堆叠而来 ...

  7. ztree在刷新时第一个父节点消失_从反向传播推导到梯度消失and爆炸的原因及解决方案(从DNN到RNN,内附详细反向传播公式推导)...

    引言:参加了一家公司的面试和另一家公司的笔试,都问到了这个题!看来很有必要好好准备一下,自己动手推了公式,果然理解更深入了!持续准备面试中... 一. 概述: 想要真正了解梯度爆炸和消失问题,必须手推 ...

  8. 出现梯度消失与梯度爆炸的原因以及解决方案

    出现梯度消失与梯度爆炸的原因以及解决方案 参考文章: (1)出现梯度消失与梯度爆炸的原因以及解决方案 (2)https://www.cnblogs.com/XDU-Lakers/p/10553239. ...

  9. 梯度下降算法的正确步骤_梯度下降算法

    梯度下降算法的正确步骤 Title: What is the Gradient Descent Algorithm and its working. 标题:什么是梯度下降算法及其工作原理. Gradi ...

  10. excel计算二元线性回归_用人话讲明白梯度下降Gradient Descent(以求解多元线性回归参数为例)...

    文章目录 1.梯度 2.多元线性回归参数求解 3.梯度下降 4.梯度下降法求解多元线性回归 梯度下降算法在机器学习中出现频率特别高,是非常常用的优化算法. 本文借多元线性回归,用人话解释清楚梯度下降的 ...

最新文章

  1. 程序员是复制粘贴的工具人?还是掌握“谜底”的魔术师?
  2. TeamViewer 14 on Nvidia Jetson TX2
  3. module 'cv2' has no attribute 'CV_LOAD_IMAGE_GRAYSCALE'
  4. Spark自带的集群模式(Standalone),Spark/Spark-ha集群搭建
  5. server长时间运行query,Ajax刷新被block
  6. 5位院士谈科研瓶颈:必须“逼着自己在精神上愿意吃苦”
  7. 未来教育计算机书,未来教育.全国计算机等级考试
  8. Latex: 表格中 自动换行居中
  9. 深度优先搜索重要模板
  10. php stripcslashes 转义,stripcslashes()
  11. linux基本命令示例_Linux中带示例的sort命令
  12. v$session.sql_id为NULL或不准确的BUG
  13. sqlmap的简单使用(sql注入)
  14. 汽车电子电气TARA分析从入门到放弃
  15. linux与RMB的关系,Ghost 与 Linux 的兼容性
  16. 中国脑与语言认知领域研究学者
  17. 地图名片:百度地图 高德地图 pc 移动端快速实现地图生成、标记以及标注获取链接及代码(霸霸看了都说好)
  18. 如何判断用户是否关注微信订阅号,亲测实战步骤
  19. 关于子类重写父类方法的问题
  20. JeecgBoot 2.4.6 版本发布,基于代码生成器的企业级低代码平台

热门文章

  1. 字符和数字的相互转换,数字和字符串的相互转换
  2. 《Secrets》 秘密 中英互译——【one republic英文经典歌曲】
  3. TCP 三次握手和四次挥手
  4. 双11专栏 | 基于可微渲染模型的妆容解析技术
  5. ui线框图模板_设计库中的17种必备线框模板和UI套件
  6. ​纪念亚伦·斯沃茨:活着的伦理
  7. html并列图片自适应后错位,css3响应式图片列表高度不同导致页面错位
  8. 数据分析师必须知道的知识锦囊
  9. 深度学习(二十三)Maxout网络学习
  10. office显示登陆错误,出现0X80190001错误。