当计算图变得极深时,神经网络优化算法会面临的另外一个难题就是长期依赖问题——由于变深的结构使模型丧失了学习到先前信息的能力,让优化变得极其困难。 深层的计算图不仅存在于前馈网络,还存在于之后介绍的循环网络中(在\chap?中描述)。 因为循环网络要在很长时间序列的各个时刻重复应用相同操作来构建非常深的计算图,并且模型参数共享,这使问题更加凸显。

例如,假设某个计算图中包含一条反复与矩阵WW相乘的路径。 那么tt步后,相当于乘以WtW^t。 假设WW特征值分解W=Vdiag(λ)V1W = V \text{diag}(\lambda) V^{-1}。 在这种简单的情况下,很容易看出
Wt=(Vdiag(λ)V1)t=Vdiag(λ)tV1. \begin{aligned} W^t = (V \text{diag}(\lambda) V^{-1})^t = V\text{diag}(\lambda)^t V^{-1}. \end{aligned}

当特征值λi\lambda_i的绝对值不在11附近时,若绝对值大于11则会爆炸;若小于11时则会消失。 梯度消失与爆炸问题是指该计算图上的梯度也会因为diag(λ)t\text{diag}(\lambda)^t大幅度变化。 梯度消失使得我们难以知道参数朝哪个方向移动能够改进代价函数,而梯度爆炸会使得学习不稳定。 之前描述的促使我们使用梯度截断的悬崖结构便是梯度爆炸现象的一个例子。

此处描述的在各时间步重复与WW相乘非常类似于寻求矩阵WW的最大特征值及对应特征向量的幂方法。 从这个观点来看,xWtx^\top W^t最终会丢弃xx中所有与WW的主特征向量正交的成分。

循环网络在各时间步上使用相同的矩阵WW,而前馈网络并没有。 所以即使使用非常深层的前馈网络,也能很大程度上有效地避免梯度消失与爆炸问题{cite?}。

在更详细地描述循环网络之后,我们将会在第10.7进一步讨论循环网络训练中的挑战。

results matching ""

    No results matching ""