随机优化算法入门

随机优化是指在目标函数或优化算法中使用随机性。

诸如高维非线性目标问题之类的挑战性优化算法可能包含多个局部最优解,确定性优化算法可能会陷入其中。

随机优化算法提供了一种替代方法,它允许在搜索过程中做出不太最优的局部决策,这可能会增加找到目标函数全局最优解的几率。

在本教程中,您将了解随机优化的入门指南。

完成本教程后,您将了解:

  • 随机优化算法在搜索过程中使用随机性。
  • 随机优化算法的示例,如模拟退火和遗传算法。
  • 使用随机优化算法的实际注意事项,例如重复评估。

开始您的项目,阅读我的新书《机器学习优化》,其中包含分步教程和所有示例的Python源代码文件。

让我们开始吧。

A Gentle Introduction to Stochastic Optimization Algorithms

随机优化算法入门
照片由 John 拍摄,保留部分权利。

教程概述

本教程分为三个部分;它们是:

  1. 什么是随机优化?
  2. 随机优化算法
  3. 随机优化的实际注意事项

什么是随机优化?

优化是指那些寻求使目标函数达到最小值或最大值的输入的优化算法。

随机优化或随机搜索是指涉及某种方式的随机性的优化任务,例如来自目标函数或优化算法。

随机搜索和优化涉及那些测量结果中存在随机噪声,并且/或者算法本身注入(蒙特卡洛)随机性的问题。

— 第xiii页,《随机搜索与优化导论》,2003年。

目标函数中的随机性意味着候选解的评估涉及一些不确定性或噪声,并且必须选择能够在此噪声存在下进行搜索的算法。

算法中的随机性用作一种策略,例如随机或概率性决策。它被用作确定性决策的替代方法,以期提高找到全局最优解或更好的局部最优解的可能性。

标准的随机优化方法是脆弱的,对步长选择和其他算法参数敏感,并且它们在行为良好的目标族之外表现出不稳定性。

《随机优化中更好模型的重要性》,2019年。

在讨论随机优化时,提及使用随机性的算法比包含带有噪声评估的目标函数更为常见。这是因为目标函数中的随机性可以通过在优化算法中使用随机性来解决。因此,随机优化可能被称为“鲁棒优化”。

确定性算法可能会被带有噪声的候选解评估或带有噪声的函数梯度所误导(例如,“欺骗”或“混淆”),导致算法来回摆动或陷入困境(例如,无法收敛)。

随机优化方法提供了一种应对固有系统噪声以及应对高度非线性、高维度或不适合经典确定性优化方法的模型或系统的方法。

《随机优化》,2011年。

在优化算法中使用随机性可以使搜索过程在可能具有非线性响应曲面的挑战性优化问题上表现良好。这是通过算法在搜索空间中采取局部非最优步骤或移动来实现的,这使得它能够逃脱局部最优解。

随机性有助于逃脱局部最优解,并增加找到全局最优解的机会。

— 第8页,《优化算法》,2019年。

随机优化算法中使用的随机性不必是真正的随机性;相反,伪随机就足够了。在随机优化中,几乎普遍使用伪随机数生成器

在随机优化算法中使用随机性并不意味着该算法是随机的。相反,它意味着搜索过程中做出的一些决策涉及一定程度的随机性。例如,我们可以将其概念化为算法从当前点到下一个搜索空间点的移动可能是根据相对于最优移动的概率分布来完成的。

现在我们对随机优化有了概念,让我们来看看一些随机优化算法的例子。

想要开始学习优化算法吗?

立即参加我为期7天的免费电子邮件速成课程(附示例代码)。

点击注册,同时获得该课程的免费PDF电子书版本。

随机优化算法

算法中随机性的使用通常意味着这些技术被称为“启发式搜索”,因为它们使用可能有效也可能无效的粗略经验法则来查找最优解,而不是精确的过程。

许多随机算法受到生物或自然过程的启发,可能被称为“元启发式”,作为提供目标函数特定搜索条件的更高阶过程。它们也被称为“黑盒”优化算法。

元启发式是一个相当不幸的术语,通常用于描述随机优化的一个主要子领域,实际上是主要子领域。

— 第7页,《元启发式要点》,2011年。

存在许多随机优化算法。

随机优化算法的一些示例包括:

  • 迭代局部搜索
  • 随机爬山法
  • 随机梯度下降
  • 禁忌搜索
  • 贪婪随机自适应搜索程序

受生物或物理过程启发的随机优化算法的一些示例包括:

  • 模拟退火
  • 进化策略
  • 遗传算法
  • 差分进化
  • 粒子群优化

现在我们对一些随机优化算法的例子比较熟悉了,让我们来看看在使用它们时的一些实际注意事项。

随机优化的实际注意事项

使用随机优化算法时有一些重要的注意事项。

该过程的随机性质意味着算法的任何单次运行都会有所不同,因为算法使用了不同的随机源,进而产生了不同的搜索起点和搜索过程中的决策。

用作随机源的伪随机数生成器可以通过种子来确保每次算法运行时都提供相同的随机数序列。这对于小型演示和教程很有用,尽管它很脆弱,因为它与算法的固有随机性相悖。

相反,可以通过多次运行算法来控制该过程的随机性。

这种多次运行算法的想法可以在两种关键情况下使用:

  • 比较算法
  • 评估最终结果

算法的比较可以基于找到结果的相对质量、执行的函数评估次数,或这些考虑因素的某种组合或派生。任何一次运行的结果将取决于算法使用的随机性,仅凭一次运行无法有意义地代表算法的能力。相反,应使用重复评估策略。

任何随机优化算法之间的比较都需要对每种算法进行重复评估,并使用不同的随机源,并对找到的最佳结果的概率分布进行汇总,例如目标值的均值和标准差。然后可以比较每种算法的平均结果。

在可能存在多个局部最小值的情况下,在达到终止条件后,可以通过从随机选择的初始点重新启动局部下降方法来合并随机重启,这可能会有所帮助。

— 第66页,《优化算法》,2019年。

类似地,任何选定的优化算法的单次运行本身并不能有意义地代表目标函数的全局最优解。相反,应使用重复评估策略来开发最优解的分布。

可以取分布的最大值或最小值作为最终解,而分布本身将提供一个参考点和信心,表明找到的解是“相对较好”的,或者“足够好”,考虑到所消耗的资源。

  • 多重重启:一种通过对优化问题重复应用随机优化算法来提高找到全局最优解几率的方法。

随机优化算法在目标函数上的重复应用有时被称为多重重启策略,它可以内置于优化算法本身,也可以更普遍地作为选定的随机优化算法周围的程序来规定。

每次进行随机重启时,爬山算法都会进入某个(可能新的)局部最优解。

— 第26页,《元启发式要点》,2011年。

进一步阅读

如果您想深入了解,本节提供了更多关于该主题的资源。

相关教程

论文

书籍

文章

总结

在本教程中,您了解了随机优化的入门知识。

具体来说,你学到了:

  • 随机优化算法在搜索过程中使用随机性。
  • 随机优化算法的示例,如模拟退火和遗传算法。
  • 使用随机优化算法的实际注意事项,例如重复评估。

你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。

掌握现代优化算法!

Optimization for Maching Learning

加深您对优化的理解

...只需几行python代码

在我的新电子书中探索如何实现
机器学习优化

它提供**自学教程**,并附有关于以下内容的**完整工作代码**:
梯度下降遗传算法爬山法曲线拟合RMSPropAdam,以及更多...

将现代优化算法应用于
您的机器学习项目


查看内容

对《随机优化算法入门指南》的 6 条回复

  1. Tom 2021年2月15日 上午9:09 #

    你现在有书了吗?如果有,请让mlm.com帮助我更容易地找到它。

    谢谢,

  2. AC 2021年4月6日 上午5:52 #

    你好,感谢你的介绍,非常有趣的主题!您是否有现实生活中的随机优化应用示例?(除了在机器学习算法中的使用)什么(问题)将受益于将随机性集成到目标函数中?

    • Jason Brownlee 2021年4月7日 上午5:04 #

      不客气。

      任何可能具有噪声目标函数或不可微目标函数的优化问题。

  3. Ana 2021年7月1日 上午1:02 #

    嗨,Jason,

    我不太能跟上这个具体内容。我需要学习什么样的数学背景才能跟上?谢谢!

留下回复

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。