优化是指找到目标函数的输入集合,这些输入可以使目标函数产生最大或最小的输出。
通常用局部与全局优化来描述优化问题。
同样,也常用局部与全局搜索来描述优化算法或搜索算法。
在本教程中,您将了解局部优化和全局优化之间的实际区别。
完成本教程后,您将了解:
- 局部优化涉及在搜索空间的特定区域寻找最优解,或者对于没有局部最优解的问题寻找全局最优解。
- 全局优化涉及在包含局部最优解的问题中寻找全局最优解。
- 如何以及何时使用局部和全局搜索算法,以及如何结合使用这两种方法。
开始您的项目,请阅读我的新书《机器学习优化》,其中包含分步教程和所有示例的Python源代码文件。
让我们开始吧。
局部优化与全局优化
照片由 Marco Verch 拍摄,保留部分权利。
教程概述
本教程分为三个部分;它们是:
- 局部优化
- 全局优化
- 局部与全局优化
局部优化
局部最优是指目标函数在给定输入空间区域内的极值(最小值或最大值),例如最小化问题中的一个盆地。
……我们寻求一个仅局部最优的点,这意味着它在附近的可用点中最小化了目标函数……
— 第9页,《凸优化》,2004年。
一个目标函数可能有许多局部最优解,也可能只有一个局部最优解,在这种情况下,局部最优解也是全局最优解。
- 局部优化:从一个被认为包含最优解的起始点(例如,一个盆地)来定位目标函数的优化解。
局部优化或局部搜索是指搜索局部最优解。
局部优化算法,也称为局部搜索算法,是一种旨在定位局部最优解的算法。它适用于遍历搜索空间的给定区域,并接近(或精确找到)该区域函数的最优值。
……局部优化方法广泛应用于那些能找到一个好点(即使不是最好的点)就很有价值的应用中。
— 第9页,《凸优化》,2004年。
局部搜索算法通常在一个候选解上操作,并涉及迭代地对候选解进行微小更改,并评估更改是否带来了改进,然后将其作为新的候选解。
局部优化算法将定位全局最优解
- 如果局部最优解就是全局最优解,或者
- 如果正在搜索的区域包含全局最优解。
这些定义了使用局部搜索算法的理想用例。
关于什么是局部搜索算法的确切定义可能存在争议;然而,根据我们的定义,以下是三个局部搜索算法的例子:
- Nelder-Mead 算法
- BFGS 算法
- 爬山算法
现在我们熟悉了局部优化,让我们来看看全局优化。
想要开始学习优化算法吗?
立即参加我为期7天的免费电子邮件速成课程(附示例代码)。
点击注册,同时获得该课程的免费PDF电子书版本。
全局优化
全局最优是指目标函数在整个输入搜索空间中的极值(最小值或最大值)。
全局优化,其中算法通过采用机制来搜索搜索空间的更大部分,以搜索全局最优解。
— 第37页,《计算智能导论》,2007年。
一个目标函数可以有一个或多个全局最优解,如果有多个,则称为多模态优化问题,每个最优解都将具有不同的输入和相同的目标函数评估值。
- 全局优化:定位可能包含局部最优解的目标函数的优化解。
目标函数总是有一个全局最优解(否则我们就不会对其进行优化),尽管它也可能包含局部最优解,而这些局部最优解的目标函数评估值不如全局最优解。
全局最优解可能与局部最优解相同,在这种情况下,称优化问题为局部优化而不是全局优化会更合适。
局部最优解的存在是定义全局优化问题难度的主要组成部分,因为找到局部最优解可能相对容易,而找到全局最优解可能相对困难。
全局优化或全局搜索是指搜索全局最优解。
全局优化算法,也称为全局搜索算法,旨在定位全局最优解。它适用于遍历整个输入搜索空间,并接近(或精确找到)函数的最优值。
全局优化用于变量数量少、计算时间不关键且找到真实全局解的价值非常高的问题。
— 第9页,《凸优化》,2004年。
全局搜索算法可能涉及管理一个或一组候选解,从中迭代地生成新的候选解并进行评估,以确定它们是否带来了改进,并将其作为新的工作状态。
关于什么是全局搜索算法的确切定义可能存在争议;然而,根据我们的定义,以下是三个全局搜索算法的例子:
- 遗传算法
- 模拟退火
- 粒子群优化
现在我们熟悉了全局和局部优化,让我们来比较和对比一下。
局部与全局优化
局部和全局搜索优化算法解决不同的问题或回答不同的问题。
当您知道自己处于全局最优解的区域,或者您的目标函数包含单个最优解(例如,单峰函数)时,应使用局部优化算法。
当您对目标函数响应的结构了解很少,或者知道函数包含局部最优解时,应使用全局优化算法。
局部优化,其中算法可能会陷入局部最优而找不到全局最优。
— 第37页,《计算智能导论》,2007年。
将局部搜索算法应用于需要全局搜索算法的问题将导致结果不佳,因为局部搜索会被局部最优解困住(欺骗)。
- 局部搜索:当您处于全局最优解的区域时。
- 全局搜索:当您知道存在局部最优解时。
局部搜索算法通常会提供与定位全局最优解相关的计算复杂度保证,前提是算法所做的假设成立。
全局搜索算法通常很少或根本不提供关于定位全局最优解的保证。因此,全局搜索通常用于足够困难的问题,这些问题可以接受“好”或“足够好”的解而不是没有解。这可能意味着相对较好的局部最优解,而不是真正的全局最优解,如果定位全局最优解是棘手的。
通常可以多次重新运行或重新启动算法,并记录每次运行找到的最优解,以确保找到了相对较好的解。
- 局部搜索:适用于需要全局解决方案的狭窄问题。
- 全局搜索:适用于全局最优解可能难以处理的广泛问题。
我们通常对目标函数的响应曲面了解很少,例如,局部或全局搜索算法哪个更合适。因此,最好通过局部搜索算法建立一个性能基线,然后探索全局搜索算法,看看它是否能做得更好。如果不能,这可能表明该问题确实是单峰的或适合局部搜索算法。
- 最佳实践:在对目标函数了解甚少的情况下,先用局部搜索建立基线,然后探索全局搜索。
局部优化比全局优化是一个更简单的问题。因此,绝大多数数学优化研究都集中在局部搜索技术上。
关于一般非线性规划的大部分研究都集中在局部优化方法上,因此这些方法非常成熟。
— 第9页,《凸优化》,2004年。
全局搜索算法在搜索空间的导航方面通常比较粗糙。
许多群体方法在全局搜索中表现良好,能够避免局部最小值并找到设计空间的最佳区域。不幸的是,与下降方法相比,这些方法在局部搜索中的表现不如它们。
— 第162页,《优化算法》,2019年。
因此,它们可能会定位一个好的局部最优解的盆地或全局最优解,但可能无法在盆地内找到最佳解。
局部和全局优化技术可以组合起来形成混合训练算法。
— 第37页,《计算智能导论》,2007年。
因此,将局部搜索应用于全局搜索算法找到的最优解候选集是一个好习惯。
- 最佳实践:将局部搜索应用于全局搜索找到的解。
进一步阅读
如果您想深入了解,本节提供了更多关于该主题的资源。
书籍
文章
总结
在本教程中,您了解了局部优化和全局优化之间的实际区别。
具体来说,你学到了:
- 局部优化涉及在搜索空间的特定区域寻找最优解,或者对于没有局部最优解的问题寻找全局最优解。
- 全局优化涉及在包含局部最优解的问题中寻找全局最优解。
- 如何以及何时使用局部和全局搜索算法,以及如何结合使用这两种方法。
你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。
Brownlee 博士,下午好。
我想看看一个关于如何将 PSO 或其他全局优化算法应用于训练的实际示例。我在某些情况下看到它会比基于 GD 的算法带来更好的结果。您是否有关于如何使用此类系统构建神经网络的参考?感谢您的时间,我非常欣赏您出色的工作。
感谢您的建议。
您可以改编此示例来使用 PSO
https://machinelearning.org.cn/manually-optimize-neural-networks/
感谢这篇文章。将进化算法或群体算法称为全局搜索算法是有争议的,因为它们无法提供关于以一定概率/置信度找到全局最优解的精确概率陈述。我喜欢称它们为局部随机搜索,与局部确定性搜索算法相比,它们更不容易陷入局部最优(这要归功于探索性特征,如突变)。
感谢分享。
假设您已将优化方法应用于某个问题,但陷入了局部最小值?您需要达到全局最优点。需要采取哪些步骤才能获得最佳的优化解决方案?
如果有谁能回答,请告知。
每个项目都有一个具体的目标,也许您需要最好的优化解,也许您需要一个足够好的优化解,考虑到您拥有的时间。
通常我们无法在给定的时间/资源内找到最佳优化解。这太具挑战性了。
哪些机器学习模型可以找到参数,从而找到目标函数的全局最优解?
请帮助我回答这个问题。
嗨 Patrick…以下资源可能对您有帮助。
https://machinelearning.org.cn/optimization-for-machine-learning-crash-course/