我熟悉梯度下降算法,该算法可以找到给定函数的局部最小值(最大值)。
在函数具有多个局部极值的情况下,是否可以对梯度下降进行任何修改以找到绝对最小值(最大值)?
是否有通用的技术,如何增强可以找到局部极值的算法来找到绝对极值?
我熟悉梯度下降算法,该算法可以找到给定函数的局部最小值(最大值)。
在函数具有多个局部极值的情况下,是否可以对梯度下降进行任何修改以找到绝对最小值(最大值)?
是否有通用的技术,如何增强可以找到局部极值的算法来找到绝对极值?
Answers:
我想您正在谈论无约束的最小化。您的问题应指定您是否正在考虑特定的问题结构。否则,答案是否定的。
首先,我应该消除一个神话。甚至不能保证经典的梯度下降法(也称为最速下降法)会找到局部极小值。当找到一阶临界点(即梯度消失的那个临界点)时,它停止。取决于要最小化的特定功能和起点,您很可能最终会到达鞍点甚至全局最大化器!
考虑例如和初始点。最陡的下降方向是。使用精确线搜索的方法的第一步使您位于梯度消失的。las,这是一个鞍点。您将通过检查二阶最优条件来实现。但是现在假设函数为。在这里,仍然是一个鞍点,但是从数值上讲,二阶条件可能无法告诉您。通常,假设您确定Hessian的特征值等于(X 0,ÿ 0):= (1 ,0 )- ∇ ˚F (1 ,0 )= (- 2 ,0 )(0 ,0 )˚F (X ,y )= x 2 − 10 − 16 y 2∇ 2 ˚F (X *,ÿ。您如何阅读?是负曲率还是数值误差?如何?
现在考虑一个函数,例如
该函数非常平滑,但是如果您的初始点是,则算法将在全局最大化器处停止。通过检查二阶最优条件,您将不会知道!这里的问题是某些局部最小化器是全局最大化器!
现在,实际上所有基于梯度的优化方法都受到设计的困扰。您的问题实际上是关于全局优化的问题。同样,答案是否定的,没有通用的方法可以修改方法,以确保识别出全局最小化器。只是问问自己:如果算法返回一个值并说它是一个全局最小化器,您将如何检查它是否正确?
全局优化中有几种方法。一些引入随机化。有些使用多启动策略。有些利用了问题的结构,但是这些是针对特殊情况的。找一本有关全局优化的书。您会喜欢的。
关于“神经网络的全局优化”有很多参考。该技术类似于模拟退火[请参见其他答案]。基本思想是从许多不同的权重起点(随机或系统地采样)重新开始网络梯度下降。梯度下降的每个结果都像一个“样本”。抽取的样本越多,样本之一是全局最优的可能性就越高,尤其是如果目标函数在连续,微分等意义上“表现良好”。
在线裁判
[2] 一种用于神经网络训练的全局优化方法 Voglis / Lagaris
[4] 使用确定性混合方法 Beliakov 进行神经网络的全局优化
[5] 神经网络训练的全局优化 Shang / Wah
通常,很难在计算上优化多元非凸函数。硬度有不同的风味(加密,NP硬度)。看到这种情况的一种方式是,很难学习混合模型(例如,高斯或HMM的混合模型),但是,如果有可能有效地最大化可能性,则将很容易*。有关学习HMM硬度的结果,请参见 http://alex.smola.org/journalclub/AbeWar92.pdf http://link.springer.com/chapter/10.1007%2F3-540-45678-3_36 http:// www.math.ru.nl/~terwijn/publications/icgiFinal.pdf
(*)以非简并性和可识别性的通常条件为模
我必须不同意多米尼克。哈耶克(Hajek)在1980年代中期的研究表明,在一定严格条件下对非凸问题进行退火可以保证达到全局最小值:http : //dx.doi.org/10.1287/moor.13.2.311