使用 Adam 时是否需要调整步长?

数据挖掘 神经网络 优化 超参数调整 学习率
2022-02-26 05:09:04

Adam 优化器有四个主要的超参数例如,查看 Keras 界面,我们有:

keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=None, decay=0.0, amsgrad=False)

第一个超参数称为步长或学习率。理论上,自适应优化方法应该在优化过程中自动修改学习率。因此,我希望lr它是一个影响不大的超参数,我可以从我必须在验证集上调整的超参数列表中删除它,从而节省一些时间。

这在实践中是否成立?即,至少对于一类问题(例如图像识别)lr不会对优化产生太大影响,因此我们可以将其保留为默认值 0.001,这是真的吗?还是它仍然像对具有动力的 SGD 一样具有极大的影响力?

编辑:为了消除答案中产生的误解,学习率步长是同义词。请参阅Adam 论文中的算法定义α,其默认值为 0.001,明确命名为步长。我认为这可能不是一个好名字(参数空间中步长的实际大小取决于累积的一阶和二阶动量,当然还有梯度),但不幸的是,这种误导性术语是优化的规范(至少在深度学习论文中)。

在此处输入图像描述

1个回答

lr(学习率)参数是 Adam(或任何其他优化算法)的最具影响力的参数。我这并不意味着步长......因为这不是由亚当控制的,而是由神经网络以及你如何将批次输入其中。

所以是的,lr 非常非常重要,它是学习率,而不是步长。

更新

实际上正如 OP 所提到的,学习率和步长是一回事(我的错,我把它与批量大小混淆了)。

一般来说,我的建议是尝试使用 0.0001、0.001、0.01 和 0.1 的学习率。

经验法则是,较小的学习率提供了一个非常稳定的学习曲线……但是一个更慢的学习率,而更大的学习率会更快地收敛……但它会变得不稳定。所以你将不得不做一些探索。我通常使用 0.001 和 0.0001 但这在很大程度上取决于您正在处理的问题。

此外,与 SGD 相比,Adam 包括动量,主要考虑了由 beta 参数控制的过去行为(这种行为在过去越远,相关性越低),但我不建议修改它们,通常不需要。因此,尽管 Adam 是一种比 SGD 更稳定的学习方法(通常更快),但它的学习率仍然是最基本的参数。