这是张量流优化器的link。在那里,您可以看到RMSprop将动量作为参数,而Adam没有这样做。所以我被迷惑了。亚当优化伪装成具有动量的RMSprop优化,如下所示:
亚当= RMSprop +动量
但是为什么RMSprop具有动量参数而Adam没有?
答案 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。
所以,不要从字面上看,也不要因为它而睡懒觉。