首先看下述函数:
最小值为x=0,y=0处
先了解下它的梯度特征。了理解其梯度特征,我们需要计算其梯度向量。
梯度向量 ∇f 是函数 f 在每个变量方向上的偏导数组成的向量。具体来说:
∇f=(∂f/∂x,∂f∂/y)
首先,我们计算 f 对 x 的偏导数:
∂f/∂x=10/x
接着,我们计算 ff对 yy的偏导数:
∂f/∂y=2y
因此,梯度向量 ∇f为:
∇f=(x/10,2y)
从梯度向量的表达式可以看出:
在 x轴方向上,梯度分量是 x/10,这意味着梯度在 x轴方向上的变化相对较小,因为 x的系数是 1/10,这是一个较小的数。
在 y 轴方向上,梯度分量是 2y,这意味着梯度在 y轴方向上的变化相对较大,因为 y的系数是 2,这是一个较大的数。
因此,这个函数的梯度特征是:在 y轴方向上变化较大,而在 x轴方向上变化较小。换句话说,函数 f在 y轴方向上的变化比在 x轴方向上的变化更为显著。
梯度图如下图所示:
我们应用随机梯度下降(SGD)方法,从初始点 (x,y)=(−7.0,2.0)开始搜索,SGD会呈“之”字形移动,是一个相当低效的路径,如下图所示:
是由于以下几个原因:
1.梯度方向的变化:
在给定的函数 f=120(x2)+y2f=201(x2)+y2 中,梯度向量 ∇f=(x/10,2y)) 在不同点的方向是不同的。
初始点 (−7.0,2.0)处的梯度向量为 (−7.0/10,2⋅2.0)=(−0.7,4.0)
这意味着在初始点,梯度在 y轴方向上的分量(4.0)远大于在 x 轴方向上的分量(-0.7)。
2. 学习率的影响:
学习率(步长)的选择会影响搜索路径。如果学习率过大,可能会导致在 yy 轴方向上过度移动,而在 xx 轴方向上移动不足,从而形成之字形路径。
如果学习率过小,虽然可以避免之字形路径,但收敛速度会变慢。
3.局部最小值和鞍点:
在某些情况下,函数可能存在局部最小值或鞍点,这些点可能会导致SGD在搜索过程中来回摆动,形成之字形路径。
4. 随机性:
SGD方法中包含了随机性,每次迭代时只使用部分数据(或单个数据点)来计算梯度,这可能导致梯度估计的不稳定性,从而形成之字形路径。
为了更具体地理解为什么会出现之字形移动,我们可以考虑以下步骤:
初始点 (−7.0,2.0)
梯度向量 (−0.7,4.0)
如果学习率 ηη 较大,更新后的点可能为 (−7.0−η⋅(−0.7),2.0−η⋅4.0),即 (−7.0+0.7η,2.0−4η)
更新后的点:
如果 η 较大,y轴方向上的移动会显著大于x 轴方向上的移动,导致点在 y轴方向上大幅移动,而在 x 轴方向上移动较小。
这种不平衡的移动可能导致点在 y 轴方向上来回摆动,形成之字形路径。
综上所述,SGD方法在从 (−7.0,2.0)处开始搜索时,由于梯度方向的变化、学习率的影响以及随机性等因素,可能会呈现出之字形移动。
因此,SGD的缺点是,如果函数的形状非均向,比如呈延伸状,搜索的路径就会非常低效。因此,我们需要比单纯朝梯度方向前进的SGD更聪明的方法。SGD低效的根本原因是,梯度的方向并没有指向最小值的方向(在复杂的非凸优化问题中,函数可能存在多个局部最小值和鞍点。SGD可能会陷入这些不良点,导致优化过程停滞不前)。
改进SGD的方法
为了克服SGD的低效性,研究者们提出了许多改进方法,包括:
动量(Momentum):通过引入动量项,减少梯度噪声的影响,加速收敛。
自适应学习率方法:如AdaGrad、RMSprop、Adam等,根据参数的历史梯度自动调整学习率。
二阶优化方法:如牛顿法、拟牛顿法等,利用二阶导数信息加速收敛。
正则化技术:如L1、L2正则化,防止过拟合,提高模型的泛化能力。
批量归一化(Batch Normalization):通过归一化输入数据,加速训练过程。
动量(Momentum):在此例中应用Momentum方法,虽然x轴方向上受到的力非常小,但是一直在同一方向上受力,所以朝同一个方向会有一定的加速。反过来,虽然y轴方向上受到的力很大,但是因为交互地受到正方向和反方向的力,它们会互相抵消,所以y轴方向上的速度不稳定。因此,和SGD时的情形相比,可以更快地朝x轴方向靠近,减弱“之”字形的变动程度。如下图所示:
AdaGrad:AdaGrad会为参数的每个元素适当地调整学习率。参数的元素中变动较大(被大幅更新)的元素的学习率将变小。也就是说,可以按参数的元素进行学习率衰减,使变动大的参数的学习率逐渐减小。如下图所示:
函数的取值高效地向着最小值移动。由于y轴方向上的梯度较大,因此刚开始变动较大,但是后面会根据这个较大的变动按比例进行调整,减小更新的步伐。因此,y轴方向上的更新程度被减弱,“之”字形的变动程度有所衰减。
**Adam:**融合了Momentum和AdaGrad的方法。通过组合前面两个方法的优点,有望实现参数空间的高效搜索。此外,进行超参数的“偏置校正”也是Adam的特征。如下图所示: