文章目录

  • 原因
  • 解决方案
    • 1.预训练和微调
    • 2.relu、leakyrelu、Relu等激活函数
    • 3.Batch Normalization(批规范化)
    • 4.残差结构
    • 5.梯度剪切、正则
    • 6.LSTM(长短期记忆网络)

原因

梯度消失和梯度爆炸两种情况产生的原因可以总结成2类原因:1.深层网络的结构;2.不合适的损失函数,比如Sigmoid函数。梯度爆炸一般出现在深层网络和权值初始化值太大的情况下。

解决方案

1.预训练和微调

预训练:无监督逐层训练,每次训练一层隐藏点,训练时将上一层隐节点的输出作为输入,而本层隐节点的输出作为下一层隐节点的输入。称为逐层预训练。在预训练完成后还要对整个网络进行微调。

2.relu、leakyrelu、Relu等激活函数

具体介绍可参看我的另外一篇文章详解激活函数

3.Batch Normalization(批规范化)

因为在反向传播的时候,需要计算梯度,那么不可避免带有权重 W,而BN的作用就是通过对每一层的输出规范为均值和方差一致的方法,消除了 W 带来的放大缩小的影响,进而解决梯度消失和爆炸的问题,或者可以理解为BN将输出从饱和区拉到了非饱和区(比如Sigmoid函数)。

4.残差结构

具体介绍可参看我的另外一篇文章ResNet知识点补充

5.梯度剪切、正则

剪切的方法有两种

  • 按值截断:在第t次迭代时,梯度为 gtg_tgt​ ,给定一个区间[a,b],如果一个参数的梯度小于a时,就将其设为a;如果大于b时,就将其设为b。
  • 按模截断:将梯度的模截断到一个给定的截断阈值b。如果 ∣∣gt∣∣2<=b||g_t||^2 <= b∣∣gt​∣∣2<=b ,保持 gtg_tgt​ 不变。如果 ∣∣gt∣∣2>b||g_t||^2 > b∣∣gt​∣∣2>b ,∣∣gt∣∣=b/∣∣gt∣∣∗gt||g_t|| = b/||g_t|| * g_t∣∣gt​∣∣=b/∣∣gt​∣∣∗gt​ ,b为超参数,往往一个小的阈值可以达到很好的效果。在训练循环神经网络时,按模截断是避免题都爆炸问题的有效方法。

正则化的方法有比较常见的l1正则和l2正则,正则化是通过对网络权重做正则限制过拟合,仔细看正则项在损失函数的形式:

λλλ 是正则项系数,如果发生梯度爆炸,权值的范数会变得非常大,通过正则化项,可以部分限制梯度爆炸的发生。

6.LSTM(长短期记忆网络)

在RNN网络结构中,由于使用Logistic或者Tanh函数,所以很容易导致梯度消失的问题,即在相隔很远的时刻时,前者对后者的影响几乎不存在了,LSTM的机制正是为了解决这种长期依赖问题。这个算法不多,只是知道可以解决。

解决梯度爆炸和梯度消失相关推荐

  1. 梯度爆炸与梯度消失是什么?有什么影响?如何解决?

    文章目录 一.梯度爆炸 1.什么是梯度爆炸? 2.有何影响? 二.梯度消失 1.定义 2.有何影响? 三.共同点 1.产生原因 2.解决办法 a. 方案1-预训练加微调 b. 方案2-梯度剪切.正则化 ...

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

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

  3. 梯度消失和梯度爆炸_梯度消失梯度爆炸-Gradient Clip

    梯度爆炸与梯度消失 实际现象: 当我们使用sigmoid function作为激活函数时,随着神经网络的隐藏层数增加,训练误差反而增大,造成了深度网络的不稳定. 梯度弥散: 靠近输出层的hidden ...

  4. 什么是梯度爆炸与梯度消失

    梯度爆炸(Gradient Explosion)和梯度消失(Gradient Vanishing)是深度学习训练过程中的两种常见问题. 梯度爆炸是指当训练深度神经网络时,梯度的值会快速增大,造成参数的 ...

  5. 【转载】梯度爆炸和梯度消失

    写得很全的一篇知乎上的介绍 一.梯度消失 梯度消失出现的原因: 在深层网络中,如果激活函数的导数小于1,根据链式求导法则,靠近输入层的参数的梯度因为乘了很多的小于1的数而越来越小,最终就会趋近于0,例 ...

  6. 为什么会出现梯度爆炸和梯度消失现象?怎么缓解这种现象的发生?

    前言:梯度消失现象在深度神经网络训练过程中表现得尤为突出,随着网络层数的加深,损失在反向传播时梯度在不断减小,导致浅层网络的学习进行不下去,参数得不到有效更新.为什么会出现这种现象呢?下面小编将从神经 ...

  7. 神经网络梯度爆炸、梯度消失原因及解决方案

    本文参考:深度网络梯度爆炸的原因.产生的影响和解决方法(常用激活函数)_凝眸伏笔的博客-CSDN博客 产生原因: 网络层数太深,链式求导时的连乘效应会导致梯度爆炸或梯度消失. 如果梯度值均小于1,则会 ...

  8. 如何理解梯度爆炸和梯度消失

    如何理解梯度爆炸和梯度消失 何为梯度消失,产生的原因是什么? 梯度消失的最核心原因是,选择的优化方法不能很好的应对多层结构.在利用链式法则,求导的过程中导致梯度逐层衰减,最后消失.反之如果每次求导之后 ...

  9. 梯度消失和梯度爆炸_梯度消失和梯度爆炸详解

    在中文搜索引擎搜索梯度爆炸或者梯度消失,出现的往往是一篇文章复制黏贴多次,而且这篇文章讲的并不清晰,比方说下面这种在文章中出现的图一,反正我是根本看不懂这张图描述的实什么,因此那篇被复制黏贴无数次的文 ...

最新文章

  1. Python 精选笔试面试习题—类继承、方法对象、包管理、闭包、可变类型作为默认参数、列表引用、sort与sorted、 append 和 extend、深拷贝和浅拷贝
  2. 业务层战略制定的思路和方法_智能商业时代的一种敏捷战略框架
  3. Windows Store获得Fluent Design加成
  4. 会计日历-自动生成脚本
  5. mysql5.58_mysql5.58编译安装手记
  6. Exceptions(小节)
  7. HTML笔记一,部分常用的元素与属性
  8. matlab linspace
  9. w7重启计算机打印机无法使用,win7系统电脑重启打印机服务就会被关闭的解决方法...
  10. JVM本地方法栈及native方法
  11. EDR BYPASS
  12. c语言课件设计食堂饭卡管理系统,食堂饭卡管理系统课件.doc
  13. thinkpad E40 的 C1门
  14. unity3d游戏开发第二版pdf_从零开始学基于ARKit的Unity3d游戏开发系列10
  15. matlab中pwm占空比计算代码,如何计算pwm波占空比
  16. 关于文件你必须了解的一些基本概念
  17. 嵌入式系统是不是计算机系统,开发必知:嵌入式系统对比计算机系统
  18. Python爬链家网租房信息
  19. 基于JAVA餐饮掌上设备点餐系统计算机毕业设计源码+系统+lw文档+部署
  20. 2021物理化学实验4:液体饱和蒸气压的测定

热门文章

  1. 图像处理:黑白效果(灰度处理)
  2. java ----数据结构和算法
  3. java aes pbe_Java加密技术(三)——PBE算法
  4. 2022-2028全球与中国镀镍钢片市场现状及未来发展趋势
  5. Cmake的安装与使用
  6. linux下ora-12505,甲骨文临时ORA 12505错误后的Linux启动
  7. lmx2592频率源原理图和程序源码。 20MHz——9.8GHz的低噪声锁相环频率源
  8. hdu 1540 Tunnel Warfare(线段树区间合并)
  9. Javascript 04 读取本地文件内容
  10. JeewxBoot 1.3.1 版本发布,免费开源的JAVA微信管家