08.7. 通过时间反向传播

文章目录

    • 8.7. 通过时间反向传播
      • 8.7.1. 循环神经网络的梯度分析
      • 8.7.2. 通过时间反向传播的细节
      • 8.7.3. 小结

8.7. 通过时间反向传播

通过时间反向传播(backpropagation through time,BPTT) [Werbos, 1990]实际上是循环神经网络中反向传播技术的一个特定应用。

  • 它要求我们将循环神经网络的计算图一次展开一个时间步, 以获得模型变量和参数之间的依赖关系。
  • 然后,基于链式法则,应用反向传播来计算和存储梯度。 由于序列可能相当长,因此依赖关系也可能相当长。

8.7.1. 循环神经网络的梯度分析

  • 完全计算:
    这样的计算非常缓慢,并且可能会发生梯度爆炸, 因为初始条件的微小变化就可能会对结果产生巨大的影响。

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

  • 随机截断
    导致了不同长度序列的加权和,其中长序列出现的很少, 所以将适当地加大权重

  • 比较策略
    08.7. 通过时间反向传播_第1张图片

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

8.7.2. 通过时间反向传播的细节

为了在循环神经网络的计算过程中可视化模型变量和参数之间的依赖关系, 我们可以为模型绘制一个计算图,
08.7. 通过时间反向传播_第2张图片

上图表示具有三个时间步的循环神经网络模型依赖关系的计算图。未着色的方框表示变量,着色的方框表示参数,圆表示运算符

8.7.3. 小结

  • “通过时间反向传播”仅仅适用于反向传播在具有隐状态的序列模型。

  • 截断是计算方便性和数值稳定性的需要。截断包括:规则截断和随机截断。

  • 矩阵的高次幂可能导致神经网络特征值的发散或消失,将以梯度爆炸或梯度消失的形式表现。

  • 为了计算的效率,“通过时间反向传播”在计算期间会缓存中间值。

你可能感兴趣的:(#,python书籍笔记,Python基础学习,深度学习,python,机器学习)