是否有一个理想的学习率范围,几乎在所有问题中都能给出好的结果?

人工智能 神经网络 深度学习 参考请求 梯度下降 学习率
2021-11-11 00:07:11

我曾经在某处读到,几乎所有情况下都有一个学习率范围,在该范围内学习是最佳的,但我找不到任何关于它的文献。我所能得到的只是论文中的下图:对大问题的小学习率的需求

在此处输入图像描述

在使用梯度下降训练的神经网络的情况下,是否有一个学习率范围,应该用于减少训练时间并在几乎所有问题中获得良好的性能?

2个回答

Leslie N. Smith的 2015 年文章Cyclical Learning Rates for Training Neural Networks为找到理想的学习率范围提供了一些很好的建议。

本文的主要重点是使用学习率计划的好处,该计划在一些下限和上限之间循环改变学习率,而不是尝试选择单个固定的学习率值。为此,您仍然需要选择好的下限和上限,Smith 建议对模型进行几个 epoch 的训练,同时提高大范围值之间的学习率。起初,学习率太小,根本无法取得任何进展。随着学习率的增加,最终损失会开始减少,但在某些时候,学习率会变得太大,损失会停止减少甚至开始增加。您的理想范围包括损失急剧下降的学习率值。找到你的范围后,

这是我的一个实验中的一个具体示例:

学习率查找器损失图

在这种情况下,我从 1e-09 开始我的学习率搜索,并计划以 0.99 的学习率结束(尽管我实际上能够比这更早停止)。您的实验可能需要不同的搜索范围,但您始终可以从该范围开始并根据需要进行调整。起初,损失图是平坦的,然后开始下降,但太平缓了。在第一条红线处,损失开始急剧下降,一旦到达第二条红线,情节已经开始趋于平稳,所以我可以结束我的搜索。对于这个特定的实验,我理想的学习率范围最小为 4.01e-4,最大为 2.58e-2。

有关更多信息,我建议阅读这篇Keras Learning Rate Finder帖子,其中包含有关该过程如何工作的更多信息以及如何使用 Keras 和 Tensorflow 对其进行编程的教程。

可视化可以在The need for small learning rate on large questions中找到。D. Randall Wilson 和 Tony R. Martinez 于 2001 年撰写的这篇论文研究了学习率在梯度下降算法中的作用。

一般来说,不同的算法为同一个词“学习率”赋予不同的含义。例如,梯度下降算法中的学习率无法与 Q-learning 等表格强化学习算法中的学习率相提并论。这意味着考虑到在不同算法中用术语“学习率”表示的不同概念,不存在特定的“最佳”。

此外,学习率通常被认为是学习算法的一部分。机器学习没有免费的午餐定理告诉我们,没有特定的学习算法在任务中表现最好。因为学习率是解决方案的一部分,所以也没有特定的学习率是跨任务的“最佳”。

在实践中,您应该将学习率设置得足够低,以免“过冲”最优解,这将通过误差的振荡(没有收敛)来证明。但是你也应该把它设置得足够高,以便在可用的训练时间的情况下获得合理的性能。

什么样的学习率能给你带来正确的权衡,通常需要结合领域知识和训练集的实验。