人工智能-循环神经网络通过时间反向传播

到目前为止,我们已经反复提到像梯度爆炸梯度消失 , 以及需要对循环神经网络分离梯度 。 例如,我们在序列上调用了detach函数。 为了能够快速构建模型并了解其工作原理, 上面所说的这些概念都没有得到充分的解释。 本节将更深入地探讨序列模型反向传播的细节, 以及相关的数学原理。

当我们首次实现循环神经网络时, 遇到了梯度爆炸的问题。 如果做了练习题,就会发现梯度截断对于确保模型收敛至关重要。 为了更好地理解此问题,本节将回顾序列模型梯度的计算方式, 它的工作原理没有什么新概念,毕竟我们使用的仍然是链式法则来计算梯度。

循环神经网络中的前向传播相对简单。 通过时间反向传播(backpropagation through time,BPTT)(Werbos, 1990)实际上是循环神经网络中反向传播技术的一个特定应用。 它要求我们将循环神经网络的计算图一次展开一个时间步, 以获得模型变量和参数之间的依赖关系。 然后,基于链式法则,应用反向传播来计算和存储梯度。 由于序列可能相当长,因此依赖关系也可能相当长。 例如,某个1000个字符的序列, 其第一个词元可能会对最后位置的词元产生重大影响。 这在计算上是不可行的(它需要的时间和内存都太多了), 并且还需要超过1000个矩阵的乘积才能得到非常难以捉摸的梯度。 这个过程充满了计算与统计的不确定性。 在下文中,我们将阐明会发生什么以及如何在实践中解决它们。

完全计算

计算全部总和, 然而,这样的计算非常缓慢,并且可能会发生梯度爆炸, 因为初始条件的微小变化就可能会对结果产生巨大的影响。 也就是说,我们可以观察到类似于蝴蝶效应的现象, 即初始条件的很小变化就会导致结果发生不成比例的变化。 这对于我们想要估计的模型而言是非常不可取的。 毕竟,我们正在寻找的是能够很好地泛化高稳定性模型的估计器。 因此,在实践中,这种方法几乎从未使用过。

截断时间步

在实践中,这种方式工作得很好。 它通常被称为截断的通过时间反向传播 (Jaeger, 2002)。 这样做导致该模型主要侧重于短期影响,而不是长期影响。 这在现实中是可取的,因为它会将估计值偏向更简单和更稳定的模型。

比较策略

****比较RNN中计算梯度的策略,3行自上而下分别为:随机截断、常规截断、完整计算

当基于循环神经网络使用通过时间反向传播 分析《时间机器》书中前几个字符的三种策略:

  • 第一行采用随机截断,方法是将文本划分为不同长度的片断;

  • 第二行采用常规截断,方法是将文本分解为相同长度的子序列。 这也是我们在循环神经网络实验中一直在做的;

  • 第三行采用通过时间的完全反向传播,结果是产生了在计算上不可行的表达式。

遗憾的是,虽然随机截断在理论上具有吸引力, 但很可能是由于多种因素在实践中并不比常规截断更好。 首先,在对过去若干个时间步经过反向传播后, 观测结果足以捕获实际的依赖关系。 其次,增加的方差抵消了时间步数越多梯度越精确的事实。 第三,我们真正想要的是只有短范围交互的模型。 因此,模型需要的正是截断的通过时间反向传播方法所具备的轻度正则化效果。

相关推荐
江畔柳前堤5 小时前
CV01_相机成像原理与坐标系之间的转换
人工智能·深度学习·数码相机·机器学习·计算机视觉·lstm
码上飞扬5 小时前
深度解析:机器学习与深度学习的关系与区别
人工智能·深度学习·机器学习
逆境清醒6 小时前
开源数据科学平台Anaconda简介
人工智能·python·深度学习·机器学习·anaconda
mm_exploration7 小时前
torch常用函数
pytorch·python·深度学习
剑圣土豆7 小时前
大模型LLM面试常见算法题-包括Attention和Transformer常见面试题
人工智能·深度学习·算法·自然语言处理·面试·nlp·transformer
AndrewPerfect9 小时前
深度学习之交叉验证
人工智能·深度学习·机器学习
正在走向自律9 小时前
AI是在帮助开发者还是取代他们?
人工智能·深度学习·机器学习
SEU-WYL10 小时前
基于深度学习的夜间图像修复
人工智能·深度学习·dnn
zhangbin_23711 小时前
【Python机器学习】处理文本数据——用tf-idf缩放数据
人工智能·python·深度学习·算法·机器学习·tf-idf
M.lee—CN11 小时前
深度学习基础以及vgg16讲解
人工智能·深度学习