【问题标题】:Neural Network optimization神经网络优化
【发布时间】:2018-02-21 17:25:24
【问题描述】:

我正在尝试了解 keras 中 ReduceLROnPlateau() 函数的用途。

我了解到,当验证损失没有改善时,此功能有助于降低学习率。但这不会使网络无法摆脱局部最小值吗?如果网络在大约 5 个 epoch 内保持局部最小值,并且这个函数进一步降低了学习率,而提高学习率实际上会帮助网络摆脱这样的局部最小值怎么办?

换句话说,它如何理解它是否达到了局部最小值或平稳状态?

【问题讨论】:

    标签: optimization machine-learning neural-network deep-learning keras


    【解决方案1】:

    首先,CS231n class 很好地解释了为什么学习率衰减是合理的一般

    在训练深度网络时,退火通常是有帮助的 学习率随时间变化。要记住的良好直觉是 学习率高,系统包含过多的动能和 参数向量乱跳乱跳,无法安定下来 进入损失函数更深但更窄的部分。知道什么时候 衰减学习率可能很棘手:慢慢衰减它,你会 浪费计算几乎没有混乱地弹跳 长期改善。但是过于激进地衰减它并且 系统冷却过快,无法达到最佳位置 可以。

    关于你的问题,很遗憾,你不知道。如果优化器遇到了一个深谷并且无法摆脱它,它只是希望这个谷是好的并且值得以较小的学习率进行探索。目前,没有技术可以判断是否有更好的山谷,即它是局部最小值还是全局最小值。所以优化器会下注去探索当前的,而不是跳得很远重新开始。实践证明,没有哪一个局部最小值比其他最小值差很多,这就是这种策略经常奏效的原因。

    另请注意,对于某些学习率,损失表面可能看起来像一个平台,但对于小 10 倍的学习率则不会。所以“逃离高原”和“逃离局部最小值”是不同的挑战,ReduceLROnPlateau 的目标是第一个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-24
      • 1970-01-01
      • 2012-12-29
      • 2019-07-13
      • 1970-01-01
      • 1970-01-01
      • 2010-10-24
      • 2018-11-18
      相关资源
      最近更新 更多