【发布时间】:2016-08-01 01:27:58
【问题描述】:
我正在学习一个关于 LSTM 的 tensorflow 教程:Truncated Backpropagation。
这部分说代码使用“截断反向传播”,那么这到底是什么意思?
【问题讨论】:
标签: tensorflow recurrent-neural-network lstm
我正在学习一个关于 LSTM 的 tensorflow 教程:Truncated Backpropagation。
这部分说代码使用“截断反向传播”,那么这到底是什么意思?
【问题讨论】:
标签: tensorflow recurrent-neural-network lstm
在一般的神经网络设置中(嗯,大部分时间),您在训练期间执行两个步骤:
向前传球
向后传球
在后向传递中,出于某种原因,您可能只想训练顶层或网络的某些特定部分。在这种情况下,您会希望在该点停止渐变的向后传递。这就是截断反向传播的作用(通常通过 https://www.tensorflow.org/versions/r0.9/api_docs/python/train.html#stop_gradient) 完成。
【讨论】:
除了@friesel 的回答,我想说截断的反向传播不仅用于加速梯度计算的过程,还可以缓解递归神经网络中的一些潜在问题(例如梯度消失和梯度爆炸) )。
【讨论】:
截断反向传播旨在通过计算“短”序列而不是完整序列的近似梯度来加速学习序列(例如使用 LSTM)。我想这就是文档通过使“学习过程易于处理”的意思。
这种方法似乎起源于 Mikolov 关于“基于神经网络的统计语言模型”(他的论文)的工作。正如 Alex Graves 在well-cited paper(第 9 页)中所解释的那样:
这种形式的截断反向传播之前已被考虑用于 RNN 语言建模 [23],并发现可以加快训练速度(通过减少序列长度并因此增加随机权重更新的频率)而不影响网络的学习能力长期依赖关系。
[23] 是 Mikolov 的论文。
简而言之,截断反向传播是一种“技巧”,可以加快对序列的学习,而不会丢失(太多)重要信息。请注意,截断过多可能会倒退(即丢失重要信息)。
【讨论】:
对于其他偶然发现这篇文章的人,“截断梯度”也可以指 LASSO 类型正则化的在线版本。参见例如Stochastic Gradient Descent Training forL1-regularized Log-linear Models with Cumulative Penalty (2009)。
【讨论】: