【问题标题】:optimise Tensorflow learning rate优化 TensorFlow 学习率
【发布时间】:2017-05-08 15:12:35
【问题描述】:

如何动态找到最佳学习率和衰减率?

tf.train.exponential_decay等函数不能根据不同情况动态改变,因为起始速率和衰减速率是预先定义好的。

【问题讨论】:

  • 你能在每个 epoch 暂停训练并改变学习率吗?
  • 是的,我可以。但关键是我如何才能确定这个比率在某个时候是最佳值。
  • @YingchaoXiong 这是人工智能研究中一个未解决的问题
  • ... ... 很高兴知道。谢谢!
  • 这很棘手。一般来说,你想随着时间的推移降低学习率,但就像@YaroslavBulatov 说的那样,这是未知的。

标签: python tensorflow rate


【解决方案1】:

这是一个开放的研究问题,但对于大批量回溯线搜索可能很有用。

请注意,对于足够小的邻域,您的损失函数近似线性,因此如果您采取足够小的步骤,您可以预测损失减少的幅度。

因此,我们的想法是查看预测的损失减少与实际减少的对比。如果它太接近,你太保守了,你增加了你的步长。如果太远,则相反。

TensorFlow 中没有内置原语来执行此操作,但您可以使用较低级别的操作来实现它。这是一个关于 MNIST 自动编码器的端到端示例:https://github.com/yaroslavvb/stuff/tree/master/line_search_example

学习率很快就上升到了0.05,然后你收敛了就没法进步了,所以就降到了零。

【讨论】: