Adam 优化和梯度裁剪有多相似?

数据挖掘 lstm rnn 训练 优化 梯度下降
2022-03-02 15:46:41

根据 Adam 优化更新规则:

mβ1m+(1β1)J(θ)
vβ2v+(1β2)(J(θ)J(θ))
θθαmv

从方程中,很明显是基于指数衰减函数的每个正在做类似的事情(种类),但具有梯度的大小。然后,当我们更新参数时,我们将累积梯度除以累积幅度的平方根,以仅更新那些大部分没有更新太多的参数,反之亦然。mθvθ

梯度裁剪中,我们通过相对于阈值缩放梯度向量来做类似的事情。我的问题是,当我们可以使用 Adam 优化器对空间进行受控搜索以找到最小值时,为什么我们需要梯度裁剪来解决梯度爆炸问题。

2个回答

两者都有不同的作用和方法。所以,我会说两者没有可比性。

Gradient Clipping有一个简单的任务,就是将 Gradient 裁剪到某个阈值。一旦达到这一点,它的工作就完成了,即梯度被带到一个合适的水平以避免爆炸。
它没有责任查看学习是否会收敛到损失的最佳可能最小值。

另一方面,Adam是一个优化器。它是对 RMSprop 的改进。改进是同时具有两者的优点,即 Momentum 和 RMSProp(阅读此答案
Adam 有望通过管理 Momentum 和 Coordinate 特定梯度来帮助学习在进入 Valley 或 Plateau 时收敛到最小损失函数


回到你的问题

当我们可以使用 Adam 优化器对空间进行受控搜索以找到最小值时,为什么我们需要梯度裁剪来解决梯度爆炸问题。

比方说,在第一次迭代中,模型由于其深度而累积了非常大的 Gradient。 )时会发生相当大的跳跃,并且可以降落到损失函数空间中的任何随机坐标。 Adam 绝对可以为 Gradient 提供制动,但它几乎没有挑战-θ

  • 它需要几次迭代来累积以应用制动。v
  • 但很有可能在这些迭代期间,该点将采用空间中的任何随机坐标。这种随机性也将导致所有坐标具有随机梯度,即与最后一个梯度无关
    这不会让亚当做任何积累,也不会有任何线索以纠正的方式行事。一切都会偶然发生。


另外,请记住,爆炸梯度具有双向因果关系,即爆炸导致更多的梯度,然后这个显着的梯度增加了更多的爆炸。因此,学习很快达到了 NaN 状态。

正如您所建议的,Adam 的更新规则仅基于符号,而不是梯度的大小。在使用 Adam 进行优化时,不应该需要梯度裁剪来防止梯度爆炸(尽管它可能仍然有用,具体取决于具体情况)。