什么是梯度消失与梯度爆炸
- 层数比较多的神经网络模型在使用梯度下降法对误差进行反向传播时会出现梯度消失和梯度爆炸问题。梯度消失问题和梯度爆炸问题一般会随着网络层数的增加变得越来越明显。
例如,对于图所示的含有3个隐藏层的神经网络,梯度消失问题发生时,靠近输出层的hidden layer 3的权值更新相对正常,但是靠近输入层的hidden layer1的权值更新会变得很慢,导致靠近输入层的隐藏层权值几乎不变,扔接近于初始化的权值。这就导致hidden layer 1 相当于只是一个映射层,对所有的输入做了一个函数映射,这时此深度神经网络的学习就等价于只有后几层的隐藏层网络在学习。梯度爆炸的情况是:当初始的权值过大,靠近输入层的hidden layer 1的权值变化比靠近输出层的hidden layer 3的权值变化更快,就会引起梯度爆炸的问题。 - 利用数学公式推导梯度消失与梯度爆炸的原因
下面以一个简单的含有三个隐藏层的单神经元神经网络为例,激活函数使用sigmoid
所以,当求得的导数数值较小的情况下,会出现梯度消失的情况,尤其是选用sigmoid函数的时候。因为其函数导数的最大值为0.25.
解决方案
梯度裁剪
循环神经网络中较容易出现梯度衰减或梯度爆炸,这会导致网络几乎无法训练。裁剪梯度(clip gradient)是一种应对梯度爆炸的方法。假设我们把所有模型参数的梯度拼接成一个向量 g,并设裁剪的阈值是θ。裁剪后的梯度为:
模型优化
-
GRU
其网状结构如下:
重置⻔有助于捕捉时间序列⾥短期的依赖关系;更新⻔有助于捕捉时间序列⾥⻓期的依赖关系。 -
LSTM
遗忘门:控制上一时间步的记忆细胞 输入门:控制当前时间步的输入
输出门:控制从记忆细胞到隐藏状态
记忆细胞:⼀种特殊的隐藏状态的信息的流动
- 深度循环网络
- 双向循环神经网络