循环神经网络:从梯度消失挑战到情感分析实践
1. 梯度消失挑战
在处理输入序列的长期依赖关系时,具有状态的网络模型成为了我们的选择。理论上,拥有大内存库(即显著规模的循环层)的循环神经网络(RNN)能够总结这些依赖关系。1996 年的研究表明,RNN 是一种通用的函数表示,也就是说,只要有足够的神经元和合适的参数设置,RNN 可以表示输入和输出序列之间的任何函数映射。
然而,理论与实践存在差距。我们更关心的是,能否通过梯度下降算法从零开始教会 RNN 一个现实的函数映射。为了探究这个问题,我们从最简单的 RNN 开始分析,它包含一个输入神经元、一个输出神经元和一个全连接的单神经元循环层。
给定非线性函数 $f$,循环层隐藏神经元在时间步 $t$ 的激活值 $h_t$ 可以表示为:
$h_t = f(w_{in}^t i_t + w_{rec}^{t - 1} h_{t - 1})$
我们尝试计算隐藏神经元的激活值如何响应 $k$ 个时间步之前输入 logit 的变化。通过求偏导数并应用链式法则,经过一系列推导,我们得到最终不等式:
$\left|\frac{\partial h_t}{\partial i_{t - k}}\right| \leq |w_{rec}|^k \cdot |w_{in}|$
由于模型的权重在训练开始时被初始化为较小的值,随着 $k$ 的增加,这个导数的值趋近于零。这意味着,当计算相对于几个时间步之前的输入的梯度时,梯度会迅速减小,严重限制了模型学习长期依赖关系的能力,这就是所谓的梯度消失问题,它极大地影响了普通 RNN 的学习能力。
超级会员免费看
订阅专栏 解锁全文
2372

被折叠的 条评论
为什么被折叠?



