1700538750
1700538751
1991年,深度学习的发展达到了一个冰点。在这一年,反向传播算法被指出存在梯度消失(Gradient Vanishing)问题,即在梯度的反向传播过程中,后层的梯度以连乘方式叠加到前层。由于当时神经网络中的激活函数一般都使用Sigmoid函数,而它具有饱和特性,在输入达到一定值的情况下,输出就不会发生明显变化了。而后层梯度本来就比较小,误差梯度反传到前层时几乎会衰减为0,因此无法对前层的参数进行有效的学习,这个问题使得本就不景气的深度学习领域雪上加霜。在循环神经网络中,是否同样存在梯度消失的问题呢?
1700538752
1700538753
知识点
1700538754
1700538755
梯度消失,梯度爆炸(Gradient Explosion)
1700538756
1700538757
问题 循环神经网络为什么会出现梯度消失或梯度爆炸?有哪些改进方案?
1700538758
1700538759
难度:★★☆☆☆
1700538760
1700538761
分析与解答
1700538762
1700538763
循环神经网络模型的求解可以采用BPTT(Back Propagation Through Time,基于时间的反向传播)算法实现,BPTT实际上是反向传播算法的简单变种。如果将循环神经网络按时间展开成T层的前馈神经网络来理解,就和普通的反向传播算法没有什么区别了。循环神经网络的设计初衷之一就是能够捕获长距离输入之间的依赖。从结构上来看,循环神经网络也理应能够做到这一点。然而实践发现,使用BPTT算法学习的循环神经网络并不能成功捕捉到长距离的依赖关系,这一现象主要源于深度神经网络中的梯度消失。传统的循环神经网络梯度可以表示成连乘的形式
1700538764
1700538765
1700538766
,
1700538767
1700538768
(10.4)
1700538769
1700538770
其中
1700538771
1700538772
nett=Uxt+Wht−1,
1700538773
1700538774
(10.5)
1700538775
1700538776
ht=f(nett) ,
1700538777
1700538778
(10.6)
1700538779
1700538780
y=g(Vht) ,
1700538781
1700538782
(10.7)
1700538783
1700538784
1700538785
1700538786
1700538787
1700538788
,
1700538789
1700538790
(10.8)
1700538791
1700538792
1700538793
其中n为隐含层ht−1的维度(即隐含单元的个数),对应的n×n维矩阵,又被称为雅可比矩阵。
1700538794
1700538795
由于预测的误差是沿着神经网络的每一层反向传播的,因此当雅克比矩阵的最大特征值大于1时,随着离输出越来越远,每层的梯度大小会呈指数增长,导致梯度爆炸;反之,若雅克比矩阵的最大特征值小于1,梯度的大小会呈指数缩小,产生梯度消失。对于普通的前馈网络来说,梯度消失意味着无法通过加深网络层次来改善神经网络的预测效果,因为无论如何加深网络,只有靠近输出的若干层才真正起到学习的作用。这使得循环神经网络模型很难学习到输入序列中的长距离依赖关系。
1700538796
1700538797
梯度爆炸的问题可以通过梯度裁剪来缓解,即当梯度的范式大于某个给定值时,对梯度进行等比收缩。而梯度消失问题相对比较棘手,需要对模型本身进行改进。深度残差网络是对前馈神经网络的改进,通过残差学习的方式缓解了梯度消失的现象,从而使得我们能够学习到更深层的网络表示;而对于循环神经网络来说,长短时记忆模型[23]及其变种门控循环单元(Gated recurrent unit,GRU)[24]等模型通过加入门控机制,很大程度上弥补了梯度消失所带来的损失。
1700538798
1700538799
[
上一页 ]
[ :1.70053875e+09 ]
[
下一页 ]