咨询热线
0898-08980898传真:0000-0000-000
为什么优化算法中的Momentum会真的有效?
在优化算法中,动量(momentum)经常被用在梯度下降优化算法中,并被描述成以下一个形象的故事:梯度下降可以被理解为一个人沿着最陡的山坡走到最低谷处,该过程会比较慢,但是非常稳定。动量可以被视为从同一座山上滚下的重球,该重球的增加具有一定的惯性,既起到了平滑器(smoother)的作用,又起到了加速器(accelerator)的作用,抑制了下山过程中产生的震荡,并使得快速穿过狭窄的山谷(valley)、山峰(humps)、以及局部极小值(local minima)。这个描述比较形象,也没有原则性的错误,但是并不能够准确深刻地解释或说明为什么动量(momentum)会有效。实际上,动量可以被理解为另外一种较为形象而易理解的模型。其中较为经典的模型是凸二次(convex quadratic)优化模型,能够充分地重现动量的局部动力学行为,也足够简单并且具有封闭形式(closed loop)的理解方式。
梯度下降算法有很多优点,易理解且有效,但是下降速度却是其较为明显的一个弊端。例如,在做优化一个足够平滑的目标函数 过程中(为方便理解,这里暂时假设只有一个参数,即 是一维的。在多维情况下,以下公式表达同样适用),我们会采取将模型参数 按照一定的方向移动一小步,即
对于一个足够小的步长,梯度下降算法能够保证在每一步迭代的单调递增,并且能够最终收敛(局部最小)。在一些弱曲率条(weak curvature)件下,甚至可以以指数速率到达该局部最优处。虽然有时候能够以指数速度下降(在理论上),但是该下降速度在实际应用中仍会感觉太慢了,特别是随着训练或迭代次数增加,下降速度会变得超级慢。
可能导致该问题的关键之一是病态曲率(pathological curvature)。病态曲率是指目标函数 的某个部分或区间并不能被正确的缩放(scaled),导致整个迭代过程要么在valley之间跳跃、要么以非常小的步长逐渐接近最优状态,并到达一个平衡点。但是在某些不太友好的区域,经常会导致梯度下降失败。
引入动量可以在一定程度上克服梯度下降的缺点,比如最经典的操作就是使得梯度下降的迭代具有一定的记忆功能,即
可以看出,当 时,该操作等同于经典的梯度下降算法;当 接近于 时(比如 ),在某些情况下,迭代重新记忆了上一迭代步的速度,以使得新的目标函数能加速达到最优状态。
为了方便理解梯度下降算法,首先我们一起用数学的角度看梯度下降算法(以凸二次优化目标函数)。
给定一个凸二次优化目标函数,假设有 个参数 需要优化
且矩阵 是对称且可逆的,我们可以得出最优解为
让我们从另外一个角度探讨一下为什么会有这样的一个解。
首先,我们可以对目标函数进行求解梯度,得到 ,带入经典梯度下降公式(1)中,有
这里值得注意的是:所有维度的参数下降之间都是相互独立的,也就是矩阵 的特征向量。具体而言,矩阵 是对称矩阵,因此可以将其分解成以下
这里的 是经过按照由大到小排列过的矩阵 的特征值,即 , 为对应的特征向量, 为对角矩阵。
若我们将公式(5)两边均减去最优解 ,并将 带入公式(5)中,得到
其中, 与 具有相同的维度,即 。这里注意到,公式(7)是得到的在 参数空间下的表达,给出了参数从迭代步 到 的过程。由于 是对角矩阵,且对角各个元素相互独立,因此可以独立的计算 参数 中任意元素如下
其中, 为参数的初始化状态。因此,以下公式 成立。将在 空间下转换回到原始的 空间下,我们可以得到
这里我们注意到,公式(10)是一个梯度下降算法的闭环形式表达。换而言之,通过给定初始值 并计算凸二次优化目标函数中矩阵 的特征值与特征向量,可以利用迭代方法优化参数,逐渐逼近最优值。
针对于公式(10)而言,可以有一个比较简单的解释或理解:参数初始状态的每一个元素 可以被看作是基于 基的一个初始猜测误差,该误差表示猜测结果到最优参数值的距离大小,共有 个这样的误差,且每一个误差之间都是相互独立的,并且以 复合率程指数下降,其中, 越接近 ,下降越快;反之,越接近 ,下降越慢。
通过分析公式(10),得知:对大部分步长 而言,较大特征值对应的特征向量收敛的会快一些。这会在最初的几次迭代中出现爆炸式下降,然后随着较小的特征向量出现,迭代收敛速度会变慢。
回顾一下优化目标函数(3),我们可以将损失函数误差记为
以上分析给出了一个很直接的结论用于如何选择步长大小 。为了能够保证收敛,每个 的绝对值必须得严格小于 。若保证所有步长均可正常工作并收敛,需要使得步长大小满足以下条件:
因此,整体收敛的速率是由最慢的误差部分来决定的,即或者是 ,或者是 ,即收敛速率 为
另外,当 时,整体的收敛速率 达到最小。通过最小化公式(13),得到最优解
将最优解(14)代入收敛速率,可以得到最优收敛速率为
值得指出的是,特征值 之间的比值 决定了整个优化问题的收敛速率,该比值也叫做条件值(condition number)记为 。该处特征值的比值 不仅可以用来衡量梯度下降收敛速度的快慢或好坏(比如当 时,可以实现1步迭代即可收敛),还有很多其他含义和解释:
(i)可以解释一个给定矩阵 的奇异性
(ii)可以度量 相对于 的鲁棒性
参考资料:
https://distill.pub/2017/momentum/