🐠动量法
2021-11-5
| 2023-8-6
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
Property

基础

泄漏平均值

小批量随机梯度下降作为加速计算的手段,它也有很好的副作用,即平均梯度减小了方差。 小批量随机梯度下降可以通过以下方式计算:
为了保持记法简单,在这里使用 作为样本的随机梯度下降,使用时间时更新的权重 。 如果我们能够从方差减少的影响中受益,甚至超过小批量上的梯度平均值,那很不错。 完成这项任务的一种选择是用泄漏平均值(leaky average)取代梯度计算:
其中。 这有效地将瞬时梯度替换为多个“过去”梯度的平均值。被称为动量(momentum), 它累加了过去的梯度。 为了更详细地解释,让我们递归地将扩展到
其中,较大的 相当于长期平均值,而较小的 相对于梯度法只是略有修正。 新的梯度替换不再指向特定实例下降最陡的方向,而是指向过去梯度的加权平均值的方向。 这使我们能够实现对单批量计算平均值的大部分好处,而不产生实际计算其梯度的代价。
上述推理构成了"加速"梯度方法的基础,例如具有动量的梯度。 在优化问题条件不佳的情况下(例如,有些方向的进展比其他方向慢得多,类似狭窄的峡谷),"加速"梯度还额外享受更有效的好处。 此外,它们允许我们对随后的梯度计算平均值,以获得更稳定的下降方向。 诚然,即使是对于无噪声凸问题,加速度这方面也是动量如此起效的关键原因之一。
正如人们所期望的,由于其功效,动量是深度学习及其后优化中一个深入研究的主题。
 

条件不佳的问题

回想在gd中使用了 ,即中度扭曲的椭球目标。 通过向方向伸展它来进一步扭曲这个函数
与之前一样, 有最小值, 该函数在 的方向上非常平坦。 看看在这个新函数上执行梯度下降时会发生什么:
notion image
从构造来看, 方向的梯度比水平 方向的梯度大得多,变化也快得多。 因此,我们陷入两难:如果选择较小的学习率,我们会确保解不会在 方向发散,但要承受在 方向的缓慢收敛。相反,如果学习率较高,我们在 方向上进展很快,但在 方向将会发散。 下面的例子说明了即使学习率从 略微提高到 ,也会发生变化。 方向上的收敛有所改善,但整体来看解的质量更差了。
notion image
 
 

动量法

动量法能够解决上面描述的梯度下降问题。 观察上面的优化轨迹,我们可能会直觉到计算过去的平均梯度效果会很好。 毕竟,在 方向上,这将聚合非常对齐的梯度,从而增加我们在每一步中覆盖的距离。 相反,在梯度振荡的 方向,由于相互抵消了对方的振荡,聚合梯度将减小步长大小。 使用而不是梯度可以生成以下更新等式:
对于 ,恢复常规的梯度下降。
notion image
正如所见,尽管学习率与以前使用的相同,动量法仍然很好地收敛了。 让我们看看当降低动量参数时会发生什么。 将其减半至 会导致一条几乎没有收敛的轨迹。 尽管如此,它比没有动量时解将会发散要好得多。
notion image
我们可以将动量法与随机梯度下降,特别是小批量随机梯度下降结合起来。 唯一的变化是,在这种情况下,将梯度 替换为。 为了方便起见,在时间初始化
 
 

有效样本权重

回想一下极限条件下, 。 换句话说,不同于在梯度下降或者随机梯度下降中取步长 ,我们选取步长 ,同时处理潜在表现可能会更好的下降方向。 这是集两种好处于一身的做法。 为了说明 的不同选择的权重效果如何,请参考下面的图表。
notion image
 

实际实验

从零开始实现

相比于小批量随机梯度下降,动量方法需要维护一组辅助变量,即速度。 它与梯度以及优化问题的变量具有相同的形状。 在下面的实现中,我们称这些变量为states
notion image
当我们将动量超参数momentum增加到0.9时,它相当于有效样本数量增加到 。 将学习率略微降至,以确保可控。
notion image
 
降低学习率进一步解决了任何非平滑优化问题的困难,将其设置为 会产生良好的收敛性能。
notion image

简洁实现

 
 

理论分析

的2D示例似乎相当牵强。 下面我们将看到,它在实际生活中非常具有代表性,至少最小化凸二次目标函数的情况下是如此。

二次凸函数

考虑这个函数
这是一个普通的二次函数。 对于正定矩阵 ,即对于具有正特征值的矩阵,有最小化器为,最小值为 。 因此可以将 重写为
梯度由 给出。 也就是说,它是由 和最小化器之间的距离乘以 所得出的。 因此,动量法还是 的线性组合。
由于是正定的,因此可以通过分解为正交(旋转)矩阵和正特征值的对角矩阵。 这使我们能够将变量从 更改为 ,以获得一个非常简化的表达式:
这里 。 由于 只是一个正交矩阵,因此不会真正意义上扰动梯度。 以 表示的梯度下降变成
这个表达式中的重要事实是梯度下降在不同的特征空间之间不会混合。 也就是说,如果用 的特征系统来表示,优化问题是以逐坐标顺序的方式进行的。 这在动量法中也适用。
在这样做的过程中,我们只是证明了以下定理:带有和带有不凸二次函数动量的梯度下降,可以分解为朝二次矩阵特征向量方向坐标顺序的优化。
 

标量函数

鉴于上述结果,让我们看看当我们最小化函数 时会发生什么。 对于梯度下降有
时,这种优化以指数速度收敛,因为在 步之后我们可以得到 。 这显示了在我们将学习率 提高到 之前,收敛率最初是如何提高的。 超过该数值之后,梯度开始发散,对于 而言,优化问题将会发散。
notion image
为了分析动量的收敛情况,首先用两个标量重写更新方程:一个用于 ,另一个用于动量 。这产生了:
来表示 管理的收敛表现。 在 步之后,最初的值 变为。 因此,收敛速度是由 的特征值决定的。 简而言之,当 时动量收敛。 与梯度下降的 相比,这是更大范围的可行参数。 另外,一般而言较大值的 是可取的。
 

小结

  • 动量法用过去梯度的平均值来替换梯度,这大大加快了收敛速度
  • 对于无噪声梯度下降和嘈杂随机梯度下降,动量法都是可取的
  • 动量法可以防止在随机梯度下降的优化过程停滞的问题
  • 由于对过去的数据进行了指数降权,有效梯度数为
  • 在凸二次问题中,可以对动量法进行明确而详细的分析
  • 动量法的实现非常简单,但它需要我们存储额外的状态向量(动量
  • PyTorch
  • 小批量随机梯度下降AdaGrad算法
    目录