Tensorflow 什么是;“截断梯度”;在LSTM中是什么意思?

Tensorflow 什么是;“截断梯度”;在LSTM中是什么意思?,tensorflow,recurrent-neural-network,lstm,Tensorflow,Recurrent Neural Network,Lstm,我正在学习有关LSTM的tensorflow教程: 这一节说代码使用了“截断反向传播”,那么这到底意味着什么呢?在神经网络设置中,通常(大多数情况下)在训练期间执行两个步骤: 前传 向网络显示一些输入,并检查输出 计算输出的损失(相对于标签,或者相对于您想要的某些行为) 向后传球 根据计算出的损失和网络的状态,您可以计算梯度,以应用于网络的权重,从而使其能够学习 这些渐变是从输出层向后应用的 在向后传球中,由于某种原因,您可能只想训练最顶层或仅训练网络的某些特定部分。在这种情况下,您可能

我正在学习有关LSTM的tensorflow教程:


这一节说代码使用了“截断反向传播”,那么这到底意味着什么呢?

在神经网络设置中,通常(大多数情况下)在训练期间执行两个步骤:

前传

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

  • 根据计算出的损失和网络的状态,您可以计算梯度,以应用于网络的权重,从而使其能够学习
  • 这些渐变是从输出层向后应用的

在向后传球中,由于某种原因,您可能只想训练最顶层或仅训练网络的某些特定部分。在这种情况下,您可能希望在该点停止渐变的向后传递。这就是截断反向传播所做的(通常通过。

截断反向传播旨在通过计算“短”序列而不是完整序列的近似梯度来加速学习序列(例如,使用LSTM)。我猜这就是文档通过使“学习过程易于处理”所指的

这种方法似乎起源于Mikolov关于“基于神经网络的统计语言模型”(他的论文)的工作。正如Alex Graves在a(第9页)中所解释的:

在RNN语言建模之前,已经考虑过这种形式的截断反向传播[23],并且发现它可以加快训练(通过减少序列长度,从而增加随机权重更新的频率),而不会影响网络学习长期依赖性的能力

[23]是米科洛夫的论文



简言之,截断反向传播是一种“技巧”,可以在不丢失(太多)重要信息的情况下加速序列学习。请注意,截断太多会导致回溯(即丢失重要信息).

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

对于其他在这篇文章中遇到障碍的人,“截断梯度”也可以指在线版本的套索类型正则化。例如,请参阅。

这是否与设置某些层不可训练(冻结权重和偏差)具有相同的效果?是的,在某种意义上。你可以使层不可训练,但如果之前(较低)的话层仍然是可训练的,梯度将在冻结层中流动(无需修改权重)训练那些低层。停止一个梯度真的会让他们停下来。低层可能仍然可以通过其他路线的梯度进行训练。一个是特定于梯度的,另一个是特定于层的。但是的,他们做的事情非常相似。我想LSTM不会遇到消失/爆炸梯度问题,所以不需要无状态反向传播?我遗漏了什么?