如何摆脱随机梯度下降的局部最小值?

数据挖掘 机器学习 神经网络 梯度下降
2021-10-14 04:56:26

我不是在对神经网络进行编程,而是从非实践的理论角度来看待它,我目前想知道如何逃避局部最小值以及如何达到全局最小值。

如果你从一个点开始,例如:(红色) 在此处输入图像描述

当您计算误差函数的梯度并朝着最大下降的方向迈进时,您最终会进入该直接局部最小值。AFAIK,你会被困在那里。神经网络训练师是如何做到这一点的?他们是从每批新的随机权重配置开始,看看成本是否更小,还是有什么方法可以立即达到全局最小值?

我听说过一种将学习率重置为“弹出”局部最小值的方法,但我不确定当梯度为 0 时它是如何工作的。我还听说随机梯度下降比梯度下降更可靠找到全局最小值,但我不知道如何批量使用训练数据而不是一次全部使用它可以在示例中绕过局部最小值,这显然比它后面的全局最小值路径更陡峭。

2个回答

随机梯度下降损失格局与梯度下降损失格局

我不知道如何分批使用训练数据而不是一次性使用训练数据,使其能够在示例中绕过局部最小值,这显然比其后面的全局最小值路径更陡峭。

因此,随机梯度下降更能避免局部最小值,因为批量损失函数的景观不同于整个数据集的损失函数(计算所有数据的损失然后更新参数的情况)。这意味着整个数据集上的梯度在某个点上可能为 0,但在同一点上,批次的梯度可能不同(因此我们希望朝着局部最小值以外的其他方向前进)。

神经网络架构和损失情况

为了逃避局部最小值,您的神经架构也可以提供帮助。例如,请参阅这项工作:Visualizing the Loss Landscape of Neural Nets它表明跳过连接可以平滑您的损失情况,因此可以帮助优化器更轻松地找到全局最小值。

局部最小值与全局最优

最后,有一些工作表明局部最小值具有与全局最优值几乎相同的函数值。请参阅此问题和答案。

普通的普通梯度下降 (GD) 是一种数值近似方法,本质上不是随机的。随机过程本质上具有一些“随机性”,而像 GD 这样的数值方法则没有(除非您想争论数据集本身是随机的,而 GD 从数据中获得它的随机属性)。

对于像 GD 这样的数值方法来说,陷入局部最小值/最大值是相当普遍的。我有一些关于优化方法的讲座,这里是关于模拟退火的。模拟退火等方法比确定性数值方法具有优势,因为它们允许在全局最优搜索中涉及一些随机性。而确定性方法通常会被最陡峭的方向或最近的最优值所欺骗。

GD,无论是批量还是单个样本,都经常陷入局部最小值,尤其是在更深的网络中,因为成本函数变得越来越复杂。

总的来说,GD 本身并不是真正找到全局最优值的好方法。正如Robert & Casella所讨论的,更好的方法是在权重更新步骤中包含一些随机扰动他们的方法实际上与模拟退火非常相似。

其他方法包括类似的蒙特卡罗方法,用于在神经网络学习的 GD 步骤中添加随机属性。

伯克利人工智能研究 (BAIR) 实验室有一篇很好的博文 Minibatch Metropolis-Hastings ,将 GD 方法与 Metropolis-Hastings 步骤相结合。这会有点超出您的兴趣领域,但它是一个很好的例子,说明如何修改 GD 以更好地工作。