我想了解keras中 ReduceLROnPlateau()
功能的目的。
据我所知,当验证损失没有改善时,此功能有助于降低学习率。但这不会使网络不能摆脱当地的最低限度吗?如果网络在大约5个时期保持在局部最小值并且此功能进一步降低了学习速率,同时提高学习速率实际上有助于网络摆脱这样的局部最小值,该怎么办?
换句话说,如果它已经达到局部最小值或高原,它将如何理解?
答案 0 :(得分:4)
首先,这里有一个很好的解释CS231n class为什么学习率衰减是合理的一般:
在训练深度网络时,退火通常很有帮助 学习率随着时间的推移要记住的好直觉就是用 高学习率,系统包含太多的动能和 参数向量在混乱中反弹,无法稳定下来 进入更深,但更窄的损失部分。知道什么时候 腐烂的学习速度可能很棘手:缓慢腐烂,你会成功 浪费计算与小混乱混乱 改善很久了。但是它过于腐朽地腐烂了 系统会冷却太快,无法达到最佳位置 可以。
关于你的问题,不幸的是,你无法知道。如果优化器遇到一个深谷并且无法摆脱它,它只是希望这个山谷是好的,值得以较小的学习率探索。目前,没有技术可以判断是否有更好的山谷,即它是地方还是全球最小值。所以优化器下注探索当前的一个,而不是跳得很远并重新开始。事实证明,实际上没有局部最小值比其他最小值更差,这就是为什么这种策略经常起作用的原因。
另请注意,对于某些学习率,损失表面可能看起来像一个平台,但不是小于学习率的10倍。因此,“逃离高原”和“逃避当地最低限度”是不同的挑战,ReduceLROnPlateau
的目标是第一个。