Adam优化器真的是RMSprop加动量吗?如果是,为什么它没有动量参数?

时间:2020-04-23 07:30:58

标签: tensorflow optimization keras adam

这是张量流优化器的link。在那里,您可以看到RMSprop将动量作为参数,而Adam没有这样做。所以我被迷惑了。亚当优化伪装成具有动量的RMSprop优化,如下所示:

亚当= RMSprop +动量

但是为什么RMSprop具有动量参数而Adam没有?

1 个答案:

答案 0 :(得分:2)

尽管实际上确实广泛使用了“亚当是具有动量的RMSProp ”,但这只是一个非常粗略的速记描述,不应以表面价值为准。最初的Adam paper中已经有此内容,并且已明确阐明(第6页):

带动量的RMSProp和亚当之间有一些重要的区别:带动量的RMSProp使用重新缩放的梯度上的动量生成其参数更新,而使用梯度的第一和第二矩的运行平均值直接估算亚当更新。

有时候,作者明确指出主题表达只是一个宽松的描述,例如(强烈推荐)Overview of gradient descent optimization algorithms中(强调):

亚当也保持过去梯度mt的指数衰减平均值,与动量相似

或在Stanford CS231n: CNNs for Visual Recognition中(再次强调):

亚当(Adam)是最近提出的更新,看上去有点,就像具有动力的RMSProp。

也就是说,确实有一些其他框架实际上包括Adam的momentum参数,但这实际上是beta1参数;这是CNTK

动量(浮动,列表,momentum_schedule()的输出)–动量进度表。请注意,这是Adam论文中的beta1参数。有关更多信息,请参阅this CNTK Wiki article

所以,不要从字面上看,也不要因为它而睡懒觉。