循环神经网络中梯度爆炸的原因
对于循环神经网络,要在很长时间序列的各个时刻重复应用相同的操作来构建非常深的计算图,并且模型的参数是共享的,所以使得梯度爆炸或者梯度消失的问题更加明显。
假设某个计算图中间包含一条反复与矩阵
W
W
W相乘的路径,那么
t
t
t步之后,相当于乘以
W
t
W^t
Wt。假设
W
W
W有特征值分解
W
=
V
d
i
a
g
(
λ
)
V
−
1
W=Vdiag(\lambda)V^{-1}
W=Vdiag(λ)V−1。在这种简单的情况下,可以得出:
W
t
=
(
V
d
i
a
g
(
λ
)
V
−
1
)
t
=
V
d
i
a
g
(
λ
)
t
V
−
1
W^t=(Vdiag(\lambda)V^{-1})^t=Vdiag(\lambda)^tV^{-1}
Wt=(Vdiag(λ)V−1)t=Vdiag(λ)tV−1
当特征值
λ
\lambda
λ的值不在1附近的时候,如果在量级上大于1则会爆炸;如果在量级上小于1会消失。梯度爆炸会让学习不稳定,梯度消失会让参数不知道朝什么方向移动。