梯度下降的替代方法是什么?


45

梯度下降存在陷入局部极小值的问题。我们需要运行梯度下降指数时间才能找到全局最小值。

谁能告诉我关于在神经网络学习中应用的梯度下降的任何替代方案,以及它们的优缺点。

Answers:


37

与使用的方法相比,将函数最小化要解决的问题更多。如果找到真正的全局最小值很重要,则应使用诸如模拟退火的方法。这样就可以找到全局最小值,但是可能要花很长时间。

在神经网络的情况下,局部极小值不一定是一个大问题。某些局部最小值是由于您可以通过置换隐藏层单位或取消网络的输入和输出权重等来获得功能相同的模型。此外,如果局部最小值仅略微不是最优的,则性能上的差异将很小,因此并不重要。最后,这是很重要的一点,拟合神经网络的关键问题是过度拟合,因此,积极地寻找成本函数的全局最小值可能会导致过度拟合,并且模型效果不佳。

添加正则化项(例如权重衰减)可以帮助平滑成本函数,从而可以稍微减少局部极小值的问题,无论如何,我还是建议您将其作为避免过度拟合的一种方法。

但是,在神经网络中避免局部最小值的最佳方法是使用高斯过程模型(或径向基函数神经网络),该模型对局部最小值的问题较少。


8
非常真实 找不到全局最小值的问题被高估了。
2014年

2
当你在一个模型(典型NN用例)使用许多参数,它发生过拟,至少不是明显的方式-与局部极小。即使使用较小的NN(即,很少的可用参数),您也可能陷入不良的局部最小值。
carlosayam

1
@DikranMarsupial,即使使用单个模型参数,也可以具有许多局部最小值。这取决于损失函数的形状。人为但简单的示例:,其中是最近邻居和第二近邻居。很容易看出,每两个连续点之间存在局部最小值,即,数据越多,局部最小值就越大!全局是在数据集中最接近的点之间获得的。我知道这是极端的,但是我已经看到类似的行为可以解决变更点问题。X 1 X 2 ωL(ω)=(x(1)ω)2+(x(2)ω)2x(1),x(2)ω
carlosayam

1
@DikranMarsupial-我没有足够的字符来完成我的句子:)我已经看到了类似的行为,使用神经网络来解决变更点问题。在这种问题中,局部最小值通常是不好的。所以我不同意这个问题被高估了。
carlosayam

1
@DikranMarsupial,是的。旁注:正如您在此处看到的那样梯度下降用于可视化卷积神经网络中的隐藏层,这是一种流行的方法。我认为“喜p”只是许多本地极小值中的一种-但作者并不这样看,我相信没有人会这样。我认为是个大错误。
carlosayam

24

梯度下降是一种优化算法

有许多优化算法可以对固定数量的相关进行运算(不可分离)。我们可以将它们大致分为两类:基于梯度的优化器和无导数优化器。通常,您要使用梯度在有监督的设置中优化神经网络,因为它比无导数优化快得多。有许多基于梯度的优化算法已用于优化神经网络:

  • 随机梯度下降(SGD),小批量SGD,...:您不必评估整个训练集的梯度,而只需评估一个样品或一小批样品,通常比批梯度下降快得多。迷你批处理已用于平滑梯度并使前后传播平行化。与许多其他算法相比,优点是每次迭代都在O(n)中(n是您的NN中的权重数)。SGD通常是随机的,因此不会陷入局部最小值(!)。
  • 非线性共轭梯度:似乎在回归中非常成功,O(n)需要批梯度(因此,对于大型数据集而言可能不是最佳选择)
  • L-BFGS:分类似乎很成功,使用Hessian近似,需要批梯度
  • Levenberg-Marquardt算法(LMA):实际上,这是我所知道的最佳优化算法。它的缺点是其复杂度大约为O(n ^ 3)。不要将其用于大型网络!

提出了许多其他用于神经网络优化的算法,您可以使用Google进行免费的Hessian优化或v-SGD(有许多类型的SGD具有自适应学习率,请参见此处)。

NN的优化不是解决的问题!以我的经验,最大的挑战不是找到一个好的本地最小值。但是,面临的挑战是摆脱非常平坦的区域,处理不良条件的误差函数等。这就是为什么LMA和其他使用Hessian近似值的算法在实践中通常能很好地工作并且人们尝试开发随机版本的原因使用低复杂度的二阶信息。但是,微批处理SGD经常需要对参数集进行很好的调整,比任何复杂的优化算法都要好。

通常,您不想找到全局最优值。因为这通常需要过度拟合训练数据。


15

梯度下降的一个有趣的替代方法是基于种群的训练算法,例如进化算法(EA)和粒子群优化(PSO)。基于总体的方法背后的基本思想是创建总体的候选解决方案(NN权向量),并且候选解决方案迭代地探索搜索空间,交换信息并最终收敛于最小值。因为使用了许多起点(候选解决方案),所以收敛于全局最小值的机会大大增加了。在复杂的NN训练问题上,PSO和EA表现出极强的竞争力,通常(尽管不总是)胜过梯度下降。


+1值得牢记,尽管积极地优化培训标准可能会导致过度拟合,除非采取措施防止过度拟合,所以除非培训标准包括某种形式的正则化或其他基于复杂度的方法,否则我将避免使用PSO和EA罚款。
迪克兰有袋博物馆,2014年

5
@ anna-earwen,能否请您提供一些参考资料,说明PSO与SGD相比具有竞争优势?
emrea

8

我知道这个线程已经很老了,其他人在解释局部极小值,过拟合等概念方面做得很出色。但是,由于OP正在寻找一种替代解决方案,因此我将尽自己的一份力量,并希望它能激发出更多有趣的想法。

想法是将每个权重w替换为w + t,其中t是遵循高斯分布的随机数。然后,网络的最终输出是所有t值上的平均输出。这可以通过分析来完成。然后,您可以使用梯度下降或LMA或其他优化方法来优化问题。优化完成后,您将有两个选择。一种选择是减少高斯分布中的sigma并一次又一次地进行优化,直到sigma达到0,然后您将获得更好的局部最小值(但可能会导致过度拟合)。另一个选择是继续使用权重为随机数的那个,它通常具有更好的泛化属性。

第一种方法是优化技巧(我称其为卷积隧道,因为它使用对参数的卷积来更改目标函数),它使成本函数格局的表面变得平滑并摆脱了一些局部最小值,因此使查找全局最小值(或更好的局部最小值)更加容易。

第二种方法与噪声注入(权重)有关。注意,这是通过分析完成的,这意味着最终结果是一个单一的网络,而不是多个网络。

以下是两螺旋问题的示例输出。这三个网络的网络架构都是相同的:只有一个隐藏层,包含30个节点,输出层是线性的。使用的优化算法是LMA。左图为香草设置。中间是使用第一种方法(即反复将sigma减小为0);第三是使用sigma = 2。

三种方法的两螺旋问题的结果

您会看到,最原始的解决方案是最差的,卷积隧穿效果更好,而噪声注入(使用卷积隧穿)则是最好的(就泛化属性而言)。

卷积隧穿和噪声注入的解析方式都是我的初衷。也许他们是其他人可能感兴趣的选择。有关详细信息,请参见我的论文《将无穷多个神经网络合并为一个》。警告:我不是专业的学术作家,论文未经同行评审。如果您对我提到的方法有疑问,请发表评论。


1

极限学习机本质上来说,它们是一个神经网络,其中将输入连接到隐藏节点的权重是随机分配的,并且永远不会更新。隐藏的节点和输出之间的权重通过求解线性方程式(矩阵逆)在单个步骤中学习。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.