我们应该为adam优化器学习衰减吗?

men*_*lin 52 neural-network tensorflow

我正在使用Adam优化器训练网络进行图像本地化,有人建议我使用指数衰减.我不想尝试,因为Adam优化器本身会降低学习速度.但那家伙坚持认为他说他之前就这么做过.我应该这样做,你的建议背后有什么理论吗?

nes*_*uno 65

这取决于.ADAM使用个人学习速率更新任何参数.这意味着网络中的每个参数都具有相关的特定学习速率.

但是参数的单个学习率是使用lambda(初始学习率)作为上限来计算的.这意味着每个学习速率可以从0(无更新)到lambda(最大更新)变化.

学习速度在训练阶段适应自己,这是真的,但如果你想确保每个更新步骤都不超过lambda,你可以使用指数衰减或其他任何方式降低lambda.当先前关联的lambda参数的计算损失已经停止减少时,它可以帮助减少最新训练步骤期间的损失.


j31*_*rre 31

根据我的经验,使用Adam优化器进行学习率衰减是没有意义的(并且效果不好).

理论是亚当已经处理学习率优化(检查参考):

"我们提出了Adam,一种有效随机优化的方法,只需要一阶梯度且内存需求很少.该方法根据梯度的第一和第二矩的估计计算不同参数的个体自适应学习率 ; Adam的名称来源于自适应矩估计."

与任何深度学习问题YMMV一样,一种尺寸并不适合所有人,你应该尝试不同的方法,看看哪些适合你,等等.


Aus*_*tin 13

Adam 有一个单一的学习率,但它是一个自适应的最大学习率,所以我认为没有多少人使用学习率调度。

由于自适应特性,默认率相当稳健,但有时您可能想要对其进行优化。你可以做的是事先找到一个最佳的违约率,从一个非常小的比率开始,增加它直到损失停止减少,然后查看损失曲线的斜率并选择与损失减少最快的学习率(不是损失实际上最低的点)。Jeremy Howard 在 fast.ai 深度学习课程及其循环学习率论文中提到了这一点。

编辑:人们最近开始与 Adam 一起使用单周期学习率策略,并取得了很好的效果。

  • 论文:https://arxiv.org/abs/1803.09820,社区参考:https://twitter.com/jeremyphoward/status/981928159879749632?lang=en (4认同)

Wen*_* Wu 8

是的,一点没错。根据我自己的经验,这对亚当的学习率下降非常有用。如果没有衰减,则必须将学习速率设置得很小,这样损失减少到一定程度后才不会开始分散。在这里,我发布代码以使用Adam使用TensorFlow降低学习率。希望它对某人有帮助。

decayed_lr = tf.train.exponential_decay(learning_rate,
                                        global_step, 10000,
                                        0.95, staircase=True)
opt = tf.train.AdamOptimizer(decayed_lr, epsilon=adam_epsilon)
Run Code Online (Sandbox Code Playgroud)