什么"截断的渐变"在LSTM意味着什么?

时间:2016-08-01 01:27:58

标签: tensorflow recurrent-neural-network lstm

我正在学习关于LSTM的张量流教程:Truncated Backpropagation

本节说代码使用"截断反向传播",那究竟是什么意思?

4 个答案:

答案 0 :(得分:1)

在神经网络设置中(通常,大部分时间),您在训练期间执行两个步骤:

FORWARD PASS

  • 向网络显示一些输入,并检查输出
  • 计算输出损失(与标签相比,或与您想要的某些行为相比)

后退通行证

  • 根据计算出的损失和网络状态,计算要应用于网络权重的渐变,以便学习。
  • 这些渐变从输出图层向后应用。

在向后传递中,由于某种原因,您可能只想训练顶层或仅训练网络的某些特定部分。在这种情况下,您可能希望在此时停止向后传递渐变。这就是截断反向传播的方式(通常通过https://www.tensorflow.org/versions/r0.9/api_docs/python/train.html#stop_gradient)完成。

答案 1 :(得分:1)

除了@ friesel的答案之外,我还说截断的反向传播不仅适用于加速梯度计算的过程,还可以缓解递归神经网络中的一些潜在问题(例如消失梯度和梯度爆炸。)

答案 2 :(得分:0)

截断反向传播旨在通过计算"短"上的近似梯度来加速学习序列(例如,使用LSTM)。序列,而不是完整的序列。我想这就是文档通过使学习过程易于处理而意味着什么。

这种方法似乎起源于Mikolov对基于神经网络的统计语言模型的工作" (他的论文)。正如Alex Graves在well-cited paper(第9页)中所解释的那样:

  

之前已经考虑过这种形式的截断反向传播用于RNN语言建模[23],并且发现加速训练(通过减少序列长度并因此增加随机权重更新的频率)而不影响网络的学习能力远程依赖。

[23]是Mikolov的论文。

简而言之,截断的反向传播是一个"技巧"加快对序列的学习,而不会丢失(过多)重要信息。请注意,截断太多可能会后退(即丢失重要信息)。

答案 3 :(得分:0)

对于其他在这篇文章上绊脚石的人,“截断梯度”也可以指LASSO型正则化的在线版本。例如参见Stochastic Gradient Descent Training forL1-regularized Log-linear Models with Cumulative Penalty (2009)