为什么动量因子必须在 0-1 范围内?

人工智能 神经网络 梯度下降 超参数 多层感知器 势头
2021-10-28 20:57:57

为什么动量因子大于 1 是个坏主意?数学动机/原因是什么?

3个回答

如果梯度下降就像走下斜坡,那么动量就是智能体穿过超平面的实际动量。

在那个类比下,动量因子将类似于摩擦系数,1 表示最大摩擦,0 表示没有摩擦。

您应该能够看到为什么摩擦力不能超出该范围:如果摩擦力 = 1,则与没有摩擦力相同;如果摩擦 <= 0,则通过能量守恒梯度下降将找不到局部最小值如果摩擦力 > 1,那么梯度下降将向后移动。

如果您只想要特定问题的答案,您可以跳到答案的最后一部分。要详细回答动量是一个技术上不正确的术语,我宁愿称之为惯性学习。

惯性 -惯性是任何物理对象对其位置和运动状态发生任何变化的阻力。

首先,动量学习方法在特定迭代中的权重变化方程由下式给出: 在此处输入图像描述

beta动量项在哪里。如果我们扩展表达式,我们会得到如下内容:

在此处输入图像描述

Courtsey:具有动量的随机梯度下降

S_t是梯度或dels特定训练示例。显然,这是针对 3 个示例训练集的。

现在我们为什么要使用动量?正如@Andreas Storvik Strauman 提供的链接一样,您可以轻松地深入研究数学的用法。但是为了更直观的感觉这里有几点需要注意:

  • 指数加权的术语可以被认为是你所学内容的过去记忆。你不想完全忘记它,所以你不断地修改它,修改它的权重随着时间的推移而减少。已经迭代的训练示例的向量更新越来越小,而在正常梯度下降中它完全不存在。
  • 动量项可以被认为起到阻尼作用,它不允许新的训练样本完全发挥作用。您可以通过取 2 个点和一条直线来可视化这一点,更新方案与线和点之间的距离成正比,然后检查法线和动量梯度下降方法。因此,具有动量的梯度下降是一种阻尼振荡,因此总是有更高的收敛机会。
  • 当您到达损失曲线中斜率为 0 的点时,惯性学习也会有所帮助。正常学习会导致该位置的权重更新非常小,但通过惯性学习,该位置将很容易越过。

至于您最初关于为什么动量项 <1 的问题,以下是大多数答案都遗漏的几点:

  • 首先,如果beta > 1,先前训练示例的权重将成倍增加。(就像1.01^1000 = 20959在 1000 次迭代之后)。这可以通过相应地增加来处理learning rate,但不仅需要大量额外的计算,而且在数学上几乎是不可能的。
  • 其次,具有r >= 1共同比率的指数级数永远不会收敛。它继续变得越来越大。另外,如果你可以用连续函数画平行线,这就是我们所说的函数,它不是绝对可积函数
  • 同样根据我们之前的直觉,为什么要对您之前学过的东西给予高权重。如果您遵循在线学习方法,这可能甚至不重要(由于训练示例数量众多,您只查看每个训练示例一次)。

所有这些都导致一个单一的结论,如果beta >= 1,将会有大量的振荡并且误差将继续呈指数增长(可能可以通过严格的数学分析来证明)。虽然它可能适用于beta = 1(由于感知器收敛定理

让我们谈谈梯度体面!

比喻:

所以你站在山边,你想到达这座山的最低处。你有一个记事本。

虽然实际的物理动量在这里是一个很好的类比,但我不会使用它。

你在这个山边的某个地方,你知道哪条路是向下的*,然后你朝那个方向跳了几米。一次跳跃的幅度取决于山坡的陡峭程度(坡度的长度),以及你用脚推动的额外量。你第一次决定不要用脚推那么多。新元动能,来了;你在记事本上写下你去的方向,走多远(例如向南,4 米)。

注意:这里的物理动量代表梯度的长度。

你重复这个一段时间,你来到一个只有向上的地方。

这是否意味着你触底了?不必要; 您可能被困在山谷或“局部最小值”中。你真的很想走出这个山谷,但是四面八方都是向上的,那么你应该往哪个方向跳呢?

你现在拿出你的笔记本,注意到你已经在东南方向跳了最后 40 步,而且很远。然后你推断你很可能想去东南部。所以你用脚向东南跳跃:这是对动量作用的直觉;

如果你有一个明确的“模式”表明哪条路是下来的,那么这也应该算数!

注意:动量只取决于上一步,但上一步取决于之前的步骤,依此类推。这只是一个类比。

数学:

对于数学,您只需添加一个作为最后一个梯度的术语,乘以某个常数。

Heading(t)=γ Heading(t-1)+η Gradient(t)

其中γ是动量因子,η是学习率。

Sebsastian Ruders 关于梯度下降的博客非常棒,可以了解更多关于它的数学细节。

γ ≷ 1

对于数学结论:

Heading(t)=γ Heading(t-1)+η Gradient(t)

γ > 1:从“表达式”可以推断出这种情况会产生回声。上一步的梯度将比实际梯度贡献更多。对于即将到来的步骤,这种效果会得到增强,并且沿着这条路走 10 步,你就会被困在一个方向上。

如果您愿意,γ < 1 使其“收敛”到“终端速度”。它将越来越少地依赖于前面的步骤,而不是越来越多。

这些效果在您在Ruders 博客上找到的方程式中非常清楚

如果您的动量项大于 1,则笔记本将克服实际梯度。走了几步,连小山都看不到了;你会说“我到目前为止只向东去了,所以我会继续向东”,你的跳跃越来越长。情况不妙。

综上所述

高动量项会导致您走向错误的方向(炸毁并始终朝同一个方向前进),和/或围绕全局最小值振荡(使您跳得太远)。

希望能帮助到你 :)

*:严格来说,我们正在寻找“向上”的方向并走相反的方向。“向上”方向是梯度。