怎么会被困在鞍点?

机器算法验证 梯度下降 随机梯度下降
2022-01-28 21:24:13

我目前对小批量梯度下降如何被困在鞍点感到有些困惑。

解决方案可能太琐碎了,我不明白。

每个时期你都会得到一个新样本,它会根据新批次计算一个新误差,因此每个批次的成本函数只是静态的,这意味着每个小批次的梯度也应该改变..但根据这个应该香草实现有鞍点问题?

最小化神经网络常见的高度非凸误差函数的另一个关键挑战是避免陷入其众多次优局部最小值中。多芬等人。[19] 认为,困难实际上不是来自局部最小值,而是来自鞍点,即一个维度向上倾斜而另一个维度向下倾斜的点。这些鞍点通常被具有相同误差的平台包围,这使得 SGD 难以逃脱,因为梯度在所有维度上都接近于零。

我的意思是,特别是 SGD 对鞍点有明显的优势,因为它会朝着收敛的方向波动……波动和随机抽样,以及每个时期不同的成本函数应该是不陷入困境的充分理由。

对于全批梯度体面,它可以被困在鞍点中是否有意义,因为误差函数是恒定的。

我对其他两个部分有点困惑。

4个回答

从Off Convex看下图在凸函数(最左边的图像)中,只有一个局部最小值,这也是全局最小值。但是在非凸函数(最右边的图像)中,可能有多个局部最小值,并且通常连接两个局部最小值是一个鞍点。如果您从较高的点接近,则坡度相对较平,并且您可能会被卡在那里,特别是如果您只向一个方向移动。

鞍点的图解表示

现在的问题是,您是否正在使用小批量进行优化或随机梯度下降,底层的非凸函数是相同的,梯度是 this 函数的一个属性。在进行小批量时,您一次考虑许多样本,并对所有样本进行平均梯度步骤。这减少了方差。但是如果平均梯度方向仍然指向与鞍点相同的方向,那么你仍然有被卡在那里的风险。类比是,如果您向前迈出 2 步和后退 1 步,对这些进行平均,您最终最终会向前迈出 1 步。如果你改为执行SGD,你会一个接一个地走所有的步骤,但如果你仍然在一个方向上移动,你可以到达鞍点,发现四边的梯度相当平坦,步长为太小了,不能越过这个平坦的部分。这不

看看这里的可视化。即使使用 SGD,如果波动只发生在一维上,随着步长越来越小,它也会在鞍点处收敛。在这种情况下,小批量方法只会减少波动量,但无法改变梯度的方向。

SGD有时可以突破简单的鞍点,如果波动是沿着其他方向的,并且如果步长足够大,可以超过平坦度。但有时鞍区可能相当复杂,如下图所示。

复杂的鞍区

动量、ADAGRAD、Adam 等方法能够摆脱这种情况的方式是考虑过去的梯度。考虑动量,

vt=γvt1+ηthetaJ(θ)

它添加了最后一个梯度的一部分。如果你只是在一个方向上来回走动,本质上是在改变星座,它最终会阻碍你的进步。虽然如果在一个方向上一直取得积极进展,它最终会以这种方式建立和下降。vt1

它不应该。

[ 1 ] 表明,具有随机初始化适当的恒定步长的梯度下降不会收敛到鞍点。这是一个漫长的讨论,但为了让您了解为什么请参阅以下示例:

f(x,y)=12x2+14y412y2

在此处输入图像描述

关键点是

z1=[00],z2=[01],z3=[01]

是孤立的局部最小值,是鞍点。z2z3z1

形式的任何点初始化的梯度下降收敛到鞍点任何其他初始点要么发散要么收敛到局部最小值,因此的稳定集是轴,它是中的零测度集。通过计算 Hessian, z0=[x0]z1z1xR2

2f(x,y)=[1003y21]

我们发现有一个正特征值,其特征向量跨越轴,因此与我们上面对稳定集的表征一致。如果初始点是随机选择的,则在轴上初始化的概率为零,因此收敛到鞍点的概率为零。2f(z1)xxz1

如果您查看参考论文(他们还经验性地展示了他们的无鞍方法确实如何改进了小批量 SGD),他们指出:

梯度下降法的一个步骤总是指向靠近鞍点的正确方向......因此在与小绝对值特征值相对应的方向上采取小步骤。

他们还注意到鞍点附近存在“高原”(换句话说,鞍点并不陡峭)——在这些情况下,采取太小的步幅确实会导致在离开鞍点区域之前过早收敛。由于这是一个非凸优化,学习率的收敛会使情况变得更糟。

似乎可以尝试一种迭代方法,其中一旦完成小批量 SGD(即重置学习率)就重新启动它,以查看是否可以逃离有问题的区域。

我认为问题在于,在接近鞍点时,您会进入高原,即梯度较低(绝对值)的区域。尤其是当你从山脊接近时。所以你的算法减小了步长。随着步长的减小,现在所有梯度(在所有方向上)的绝对值都很小。所以算法停止了,认为它是最小值。

如果您不减少步骤,那么您将跳过最小值,并且会错过很多。您必须以某种方式减小步长。