神经网络训练中的梯度消失与梯度爆炸
2018-04-01 13:55
375 查看
层数比较多的神经网络模型在训练时也是会出现一些问题的,其中就包括梯度消失问题(gradient vanishing problem)和梯度爆炸问题(gradient exploding problem)。梯度消失问题和梯度爆炸问题一般随着网络层数的增加会变得越来越明显。例如,对于下图所示的含有3个隐藏层的神经网络,梯度消失问题发生时,接近于输出层的hidden layer 3等的权值更新相对正常,但前面的hidden layer 1的权值更新会变得很慢,导致前面的层权值几乎不变,仍接近于初始化的权值,这就导致hidden layer 1相当于只是一个映射层,对所有的输入做了一个同一映射,这是此深层网络的学习就等价于只有后几层的浅层网络的学习了。
而这种问题为何会产生呢?以下图的反向传播为例(假设每一层只有一个神经元且对于每一层
,其中
为sigmoid函数)
可以推导出
而sigmoid的导数
如下图
可见,
的最大值为
,而我们初始化的网络权值
通常都小于1,因此
,因此对于上
4000
面的链式求导,层数越多,求导结果
越小,因而导致梯度消失的情况出现。
这样,梯度爆炸问题的出现原因就显而易见了,即
1” eeimg=”1”>,也就是
比较大的情况。但对于使用sigmoid激活函数来说,这种情况比较少。因为
的大小也与
有关(
),除非该层的输入值
在一直一个比较小的范围内。
其实梯度爆炸和梯度消失问题都是因为网络太深,网络权值更新不稳定造成的,本质上是因为梯度反向传播中的连乘效应。对于更普遍的梯度消失问题,可以考虑用ReLU激活函数取代sigmoid激活函数。另外,LSTM的结构设计也可以改善RNN中的梯度消失问题。
转载自https://zhuanlan.zhihu.com/p/25631496
而这种问题为何会产生呢?以下图的反向传播为例(假设每一层只有一个神经元且对于每一层
,其中
为sigmoid函数)
可以推导出
而sigmoid的导数
如下图
可见,
的最大值为
,而我们初始化的网络权值
通常都小于1,因此
,因此对于上
4000
面的链式求导,层数越多,求导结果
越小,因而导致梯度消失的情况出现。
这样,梯度爆炸问题的出现原因就显而易见了,即
1” eeimg=”1”>,也就是
比较大的情况。但对于使用sigmoid激活函数来说,这种情况比较少。因为
的大小也与
有关(
),除非该层的输入值
在一直一个比较小的范围内。
其实梯度爆炸和梯度消失问题都是因为网络太深,网络权值更新不稳定造成的,本质上是因为梯度反向传播中的连乘效应。对于更普遍的梯度消失问题,可以考虑用ReLU激活函数取代sigmoid激活函数。另外,LSTM的结构设计也可以改善RNN中的梯度消失问题。
转载自https://zhuanlan.zhihu.com/p/25631496
相关文章推荐
- 机器学习 —— 基础整理(八)循环神经网络的BPTT算法步骤整理;梯度消失与梯度爆炸
- 训练深度神经网络失败的罪魁祸首不是梯度消失,而是退化
- CS231n 卷积神经网络与计算机视觉 7 神经网络训练技巧汇总 梯度检验 参数更新 超参数优化 模型融合 等
- 神经网络与深度学习(5):梯度消失问题
- [DeeplearningAI笔记]改善深层神经网络_深度学习的实用层面1.10_1.12/梯度消失/梯度爆炸/权重初始化
- 循环神经网络教程3-BP算法和梯度消失问题, Part 3 – Backpropagation Through Time and Vanishing Gradients
- 神经网络梯度消失的解释
- 神经网络梯度消失的解释
- 深度神经网络之梯度消失探讨
- 十三、神经网络梯度不稳定问题(即梯度消失 & 梯度爆炸问题)
- 改进神经网络的方法(学习缓慢,过拟合,梯度消失)
- 神经网络中梯度消失的原因
- 从梯度下降到拟牛顿法:详解训练神经网络的五大学习算法
- 神经网络梯度消失的解释 发表于2016/10/6 11:08:30 10609人阅读 分类: 深度学习 转载自哈工大SCIR(公众号) 为了弄清楚为何会出现消失的梯度,来看看一个极简单的深度
- 神经网络的梯度消失问题
- 深度学习入门系列博客(严重推荐)--如何训练 梯度消失 梯度爆炸等解释的明确
- 深度学习源码剖析:使用双线性插值方式初始化神经网络的可训练参数
- MATLAB 神经网络训练参数解释
- 循环神经网络的训练(1)
- 论文学习:二值神经网络BNN-用+1或-1限制的权值和激活函数来训练神经网络