根据 Adam 优化更新规则:
从方程中,很明显是基于指数衰减函数的每个正在做类似的事情(种类),但具有梯度的大小。然后,当我们更新参数时,我们将累积梯度除以累积幅度的平方根,以仅更新那些大部分没有更新太多的参数,反之亦然。
在梯度裁剪中,我们通过相对于阈值缩放梯度向量来做类似的事情。我的问题是,当我们可以使用 Adam 优化器对空间进行受控搜索以找到最小值时,为什么我们需要梯度裁剪来解决梯度爆炸问题。
根据 Adam 优化更新规则:
从方程中,很明显是基于指数衰减函数的每个正在做类似的事情(种类),但具有梯度的大小。然后,当我们更新参数时,我们将累积梯度除以累积幅度的平方根,以仅更新那些大部分没有更新太多的参数,反之亦然。
在梯度裁剪中,我们通过相对于阈值缩放梯度向量来做类似的事情。我的问题是,当我们可以使用 Adam 优化器对空间进行受控搜索以找到最小值时,为什么我们需要梯度裁剪来解决梯度爆炸问题。
两者都有不同的作用和方法。所以,我会说两者没有可比性。
Gradient Clipping有一个简单的任务,就是将 Gradient 裁剪到某个阈值。一旦达到这一点,它的工作就完成了,即梯度被带到一个合适的水平以避免爆炸。
它没有责任查看学习是否会收敛到损失的最佳可能最小值。
另一方面,Adam是一个优化器。它是对 RMSprop 的改进。改进是同时具有两者的优点,即 Momentum 和 RMSProp(阅读此答案)
Adam 有望通过管理 Momentum 和 Coordinate 特定梯度来帮助学习在进入 Valley 或 Plateau 时收敛到最小损失函数。
回到你的问题
当我们可以使用 Adam 优化器对空间进行受控搜索以找到最小值时,为什么我们需要梯度裁剪来解决梯度爆炸问题。
比方说,在第一次迭代中,模型由于其深度而累积了非常大的 Gradient。 )时会发生相当大的跳跃,并且可以降落到损失函数空间中的任何随机坐标。
Adam 绝对可以为 Gradient 提供制动,但它几乎没有挑战-
另外,请记住,爆炸梯度具有双向因果关系,即爆炸导致更多的梯度,然后这个显着的梯度增加了更多的爆炸。因此,学习很快达到了 NaN 状态。
正如您所建议的,Adam 的更新规则仅基于符号,而不是梯度的大小。在使用 Adam 进行优化时,不应该需要梯度裁剪来防止梯度爆炸(尽管它可能仍然有用,具体取决于具体情况)。