深度学习中梯度消失原因、梯度爆炸及解决方案
梯度消失产生的原因
梯度消失产生的主要原因有:一是使用了深层网络,二是采用了不合适的损失函数。
(1)目前优化神经网络的方法都是基于BP,即根据损失函数计算的误差通过梯度反向传播的方式,指导深度网络权值的更新优化。其中将误差从末层往前传递的过程需要链式法则(Chain Rule)的帮助。而链式法则是一个连乘的形式,所以当层数越深的时候,梯度将以指数形式传播
。梯度消失问题一般随着网络层数的增加会变得越来越明显。在根据损失函数计算的误差通过梯度反向传播的方式对深度网络权值进行更新时,得到的梯度值接近0,也就是梯度消失。
(2)计算权值更新信息的时候需要计算前层偏导信息,因此如果激活函数选择不合适,比如使用sigmoid,梯度消失就会很明显,原因如果使用sigmoid作为损失函数,其梯度是不可能超过0.25的,这样经过链式求导之后,很容易发生梯度消失。
梯度爆炸产生的原因
梯度爆炸产生的主要原因有:一是使用了深层网络,二是采用了不合适的损失函数。
梯度爆炸和梯度消失恰好相反,在根据损失函数计算的误差通过梯度反向传播的方式对深度网络权值进行更新时,得到的梯度值变为NAN,也就是梯度爆炸。
解决办法
梯度消失
(1)pre-training+fine-tunning
此方法来自Hinton在2006年发表的一篇论文,Hinton为了解决梯度的问题,提出采取无监督逐层训练方法,其基本思想是每次训练一层隐节点,训练时将上一层隐节点的输出作为输入,而本层隐节点的输出作为下一层隐节点的输入,此过程就是逐层“预训练”(pre-training);在预训练完成后,再对整个网络进行“微调”(fine-tunning)。此思想相当于是先寻找局部最优,然后整合起来寻找全局最优,此方法有一定的好处,但是目前应用的不是很多了。
(2) 选择relu等梯度大部分落在常数上的激活函数
relu函数的导数在正数部分是恒等于1的,因此在深层网络中使用relu激活函数就不会导致梯度消失的问题。
(3)batch normalization
BN就是通过对每一层的输出规范为均值和方差一致的方法,消除了权重参数放大缩小带来的影响,进而解决梯度消失的问题,或者可以理解为BN将输出从饱和区拉到了非饱和区。
(4) 残差网络的捷径(shortcut)
相比较于之前的网络结构,残差网络中有很多跨层连接结构(shortcut),这样的结构在反向传播时多了反向传播的路径,可以一定程度上解决梯度消失的问题。
(5)LSTM的“门(gate)”结构
LSTM全称是长短期记忆网络(long-short term memory networks),LSTM的结构设计可以改善RNN中的梯度消失的问题。主要原因在于LSTM内部复杂的“门”(gates),LSTM通过它内部的“门”可以在更新的时候“记住”前几次训练的”残留记忆“。
梯度爆炸
(1)pre-training + fine-tunning
(2)Relu、leaky Relu…
(3)BN
(4)残差网络
(5)LSTM的门结构
(6)重新设计网络模型
(7)梯度阶段
(8)权重正则化
深度学习中梯度消失原因、梯度爆炸及解决方案相关推荐
- 深度学习中多层全连接网络的梯度下降法及其变式
深度学习中多层全连接网络的梯度下降法及其变式 1 梯度下降法 2 梯度下降的变式 1.SGD 2.Momentum 3.Adagrad 4.RMSprop 5.Adam 6.小结 1 梯度下降法 梯度 ...
- 深度学习中的激活函数与梯度消失
转载请注明出处:http://www.cnblogs.com/willnote/p/6912798.html 前言 深度学习的基本原理是基于人工神经网络,信号从一个神经元进入,经过非线性的激活函数,传 ...
- nfa确定化 dfa最小化_深度学习中的优化:梯度下降,确定全局最优值或与之接近的局部最优值...
深度学习中的优化是一项极度复杂的任务,本文是一份基础指南,旨在从数学的角度深入解读优化器. 一般而言,神经网络的整体性能取决于几个因素.通常最受关注的是网络架构,但这只是众多重要元素之一.还有一个常常 ...
- 深度学习中独立同分布假设原因?是必要的吗?
独立同分布的假设指的是对于input的features,要求对于不同的采样是服从独立同分布的.那么为什么要这个假设呢? 要明白这个假设的原因,我们需要先了解深度学习的基本原理.深度学习或者说神经网络的 ...
- [深度学习-优化]梯度消失与梯度爆炸的原因以及解决方案
首先让我们先来了解一个概念:什么是梯度不稳定呢? 概念:在深度神经网络中的梯度是不稳定的,在靠近输入层的隐藏层中或会消失,或会爆炸.这种不稳定性才是深度神经网络中基于梯度学习的根本问题. 产生梯度不稳 ...
- 深度学习中的梯度消失、梯度爆炸问题
写在前面: 有些博主对这个问题的解释很好,这里参考了: 详解机器学习中的梯度消失.爆炸原因及其解决方法 我在这方面的工作经验和知识面还不够,还需要积累后再做出更为专业的解答. 参考我之前转发过的一篇文 ...
- 深度学习中的梯度消失与梯度爆炸及解决方案
1.梯度消失与梯度爆炸 反向传播算法在神经网络中非常常见,可以说是整个深度学习的基石.在反向传播中,经常会出现梯度消失与梯度爆炸的问题.梯度消失产生的原因一般有两种情况:一是结构较深的网络,二是采用了 ...
- 深度学习中梯度消失和梯度爆炸的根本原因及其缓解方法
深度学习中梯度消失和梯度爆炸的根本原因及其缓解方法 一.梯度消失和爆炸的根本原因 1. 深层网络角度 2. 激活函数角度 二.梯度消失.爆炸的解决方案 1. 梯度剪切.正则 2. 采用其他的激活函数 ...
- 【深度学习】梯度消失和梯度爆炸问题的最完整解析
作者丨奥雷利安 · 杰龙 来源丨机械工业出版社<机器学习实战:基于Scikit-Learn.Keras和TensorFlow> 编辑丨极市平台 1 梯度消失与梯度爆炸 正如我们在第10章中 ...
- 动手学深度学习(PyTorch实现)(四)--梯度消失与梯度爆炸
梯度消失与梯度爆炸 1. 梯度消失与梯度爆炸 2. 模型参数的初始化 2.1 PyTorch的默认随机初始化 2.2 Xavier随机初始化 3. 环境因素 3.1 协变量偏移 3.2 标签偏移 3. ...
最新文章
- PX4修改线程内存大小
- 吴恩达机器学习笔记 —— 18 大规模机器学习
- java struts2 安全漏洞 devMode 简介
- win10系统 计算机配置要求高吗,win10配置要求_win10配置要求高吗-太平洋电脑网
- 为UINavigationBar添加自定义背景
- linux之用 grep -r 关键字
- Linux特殊权限:SUID、SGID、SBIT
- select及触发方式,select监听多链接,select与epoll的实现区别
- codeforces 356C Bear and Square Grid
- 算法:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。...
- Preparing Cities for Robot Cars【城市准备迎接自动驾驶汽车】
- mongoose 查询 find 指定字段
- Powershell管理系列(四)Lync server 2013 批量启用语音及分配分机号
- 显示表格数据网页php源码,网页上可以复制的表格数据,为什么察看源代码找不到这些数据?_html/css_WEB-ITnose...
- UItextInput-Protocol
- 学习天才犹太人的经商法则
- 达梦数据库服务未知状态解决历程
- 故障:安装OFFICE2007时,刚开始安装,就提示“windows installer 服务不能更新一个或多个受保护的windows文件”,然后安装回滚,最后退出安装。
- 百度之星2021 决赛
- camstar portal使用webapi,vue elementui前后端分离开发