Adam 优化器真的是 RMSprop 加动量吗?如果是,为啥它没有动量参数?
Posted
技术标签:
【中文标题】Adam 优化器真的是 RMSprop 加动量吗?如果是,为啥它没有动量参数?【英文标题】:Is Adam optimizer really RMSprop plus momentum? If yes, why it doesn't have a momentum parameter?Adam 优化器真的是 RMSprop 加动量吗?如果是,为什么它没有动量参数? 【发布时间】:2020-04-23 07:30:58 【问题描述】:这是张量流优化器的link。你可以看到,RMSprop 将动量作为参数,而 Adam 没有这样做。所以我很困惑。 Adam 优化伪装成具有动量的 RMSprop 优化,如下所示:
亚当 = RMSprop + 动量
但是为什么 RMSprop 确实有动量参数而 Adam 没有呢?
【问题讨论】:
【参考方案1】:虽然“Adam 是带动量的 RMSProp”这句话确实被广泛使用,但这只是一个非常粗略的简写描述,不应该从表面上理解;已经在原始 Adam paper 中,已明确澄清(第 6 页):
带有动量的 RMSProp 和 Adam 之间有一些重要区别:带有动量的 RMSProp 使用重新缩放梯度上的动量来生成其参数更新,而 Adam 更新是使用梯度的第一和第二矩的运行平均值直接估计的。
有时,作者会明确表示主题表达只是一个松散的描述,例如在(强烈推荐)Overview of gradient descent optimization algorithms(强调添加):
Adam 还保持过去梯度 mt 的指数衰减平均值,类似于与动量。
或Stanford CS231n: CNNs for Visual Recognition(再次强调):
Adam 是最近提出的更新,看起来有点类似于 RMSProp 的动量。
也就是说,其他一些框架确实为 Adam 包含了一个momentum
参数,但这实际上是beta1
参数;这里是CNTK:
动量(浮动、列表、
momentum_schedule()
的输出)- 动量时间表。请注意,这是 Adam 论文中的 beta1 参数。如需更多信息,请参阅this CNTK Wiki article。
所以,不要太从字面上理解这一点,也不要因此而失眠。
【讨论】:
以上是关于Adam 优化器真的是 RMSprop 加动量吗?如果是,为啥它没有动量参数?的主要内容,如果未能解决你的问题,请参考以下文章