文档章节

神经网络训练中的梯度消失与梯度爆炸

aibati2008
 aibati2008
发布于 2017/09/05 20:02
字数 544
阅读 76
收藏 0

层数比较多的神经网络模型在训练时也是会出现一些问题的,其中就包括梯度消失问题(gradient vanishing problem)和梯度爆炸问题(gradient exploding problem)。梯度消失问题和梯度爆炸问题一般随着网络层数的增加会变得越来越明显。

例如,对于下图所示的含有3个隐藏层的神经网络,梯度消失问题发生时,接近于输出层的hidden layer 3等的权值更新相对正常,但前面的hidden layer 1的权值更新会变得很慢,导致前面的层权值几乎不变,仍接近于初始化的权值,这就导致hidden layer 1相当于只是一个映射层,对所有的输入做了一个同一映射,这是此深层网络的学习就等价于只有后几层的浅层网络的学习了。

而这种问题为何会产生呢?以下图的反向传播为例(假设每一层只有一个神经元且对于每一层,其中为sigmoid函数)

 

可以推导出

而sigmoid的导数如下图

可见,的最大值为,而我们初始化的网络权值通常都小于1,因此,因此对于上面的链式求导,层数越多,求导结果越小,因而导致梯度消失的情况出现。

这样,梯度爆炸问题的出现原因就显而易见了,即,也就是比较大的情况。但对于使用sigmoid激活函数来说,这种情况比较少。因为的大小也与有关(),除非该层的输入值在一直一个比较小的范围内。

其实梯度爆炸和梯度消失问题都是因为网络太深,网络权值更新不稳定造成的,本质上是因为梯度反向传播中的连乘效应。对于更普遍的梯度消失问题,可以考虑用ReLU激活函数取代sigmoid激活函数。另外,LSTM的结构设计也可以改善RNN中的梯度消失问题。

本文转载自:https://zhuanlan.zhihu.com/p/25631496

共有 人打赏支持
aibati2008
粉丝 13
博文 82
码字总数 60908
作品 0
成都
技术主管
私信 提问
深度学习最佳实践系列——权重w初始化

作为深度学习的初学者,我有意识到的一件事情,即网络上没有太多的在线文档能够涵盖所有深层次的学习技巧。都是一些比较零碎的实践技巧,比如权重初始化、正则化及循环学习率等,这些可以使得...

【方向】
06/25
0
0
入门|详解机器学习中的梯度消失、爆炸原因及其解决方法

前言:   本文主要深入介绍深度学习中的梯度消失和梯度爆炸的问题以及解决方案。本文分为三部分,第一部分主要直观的介绍深度学习中为什么使用梯度更新,第二部分主要介绍深度学习中梯度消失...

机器学习算法全栈工程师
02/04
0
0
详解机器学习中的梯度消失、爆炸原因及其解决方法

前言 本文主要深入介绍深度学习中的梯度消失和梯度爆炸的问题以及解决方案。本文分为三部分,第一部分主要直观的介绍深度学习中为什么使用梯度更新,第二部分主要介绍深度学习中梯度消失及爆...

机器学习算法工程师
07/01
0
0
梯度消失、梯度爆炸及其解决方法

前言 本文主要深入介绍深度学习中的梯度消失和梯度爆炸的问题以及解决方案。本文分为三部分,第一部分主要直观的介绍深度学习中为什么使用梯度更新,第二部分主要介绍深度学习中梯度消失及爆...

u011734144
05/02
0
0
TensorFlow从1到2 - 2 - 消失的梯度

TensorFlow从0到N专题入口 上一篇1 深度神经网络我们知道,通过追加隐藏层来构建更加“智能”的深度神经网络,并不奏效。 真正的问题不在“深度”本身,而是由梯度下降算法所指导的训练过程,...

黑猿大叔
2017/10/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

给女朋友讲解什么是Optional【JDK 8特性】

前言 只有光头才能变强 前两天带女朋友去图书馆了,随手就给她来了一本《与孩子一起学编程》的书,于是今天就给女朋友讲解一下什么是Optional类。 至于她能不能看懂,那肯定是看不懂的。(学到...

Java3y
10分钟前
0
0
2019年六大新兴信息安全方向

导读 黑客攻击和网络犯罪的威胁正在不断升级,相应的技术“军备竞赛”正愈演愈烈,对于信息安全从业人员来说,掌握最新的信息安全工具,是在信息安全战争中生存下来的关键所在。 从特朗普的手...

问题终结者
17分钟前
0
0
redis扩展-自定义PropertyPlaceholderConfigurer,在spring属性注入之前,手动将properteis合并到spring容器中

背景:spring容器启动过程中,通过PropertyPlaceholderConfigurer读取properties配置文件,并将properties配置文件中的值注入spring bean的属性中, PropertyPlaceholderConfigurer使用方式多...

燃犀
19分钟前
0
0
PostgreSQL SPI 中的错误处理

PostgreSQL SPI 用于在 C 或是其他编程语言编写的扩展函数(存储过程)中调用数据库本身的解析器、规划器和执行器的功能,以及对 SQL 语句进行执行。 在最重要的一个函数 SPI_execute 的文档...

helloclia
20分钟前
0
0
深入理解Java内存模型

1 内存模型产生背景 在介绍Java内存模型之前,我们先了解一下物理计算机中的并发问题,理解这些问题可以搞清楚内存模型产生的背景。物理机遇到的并发问题与虚拟机中的情况有不少相似之处,物...

小刀爱编程
34分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部