有哪些从理论上分析智能优化算法(演化计算、进化计算)的论文?
2024-05-26
[摘要] 越来越多的群体智能算法(蛙跳算法、猫群算法、蟑螂算法等等)有存在的必要吗?-知乎越来越多的群体智能算法(蛙跳算法、猫群算法、蟑螂算法等等)有存在的必要吗?在这一问题下面,很多人对演化计算持批评看法,那学界有哪些论文从理论上(不是跑几个benchmark)来分析这些算法呢?真正批判的不是演化计算,而是对演化计算已有思想、算法

越来越多的群体智能算法(蛙跳算法、猫群算法、蟑螂算法等等)有存在的必要吗? - 知乎

越来越多的群体智能算法(蛙跳算法、猫群算法、蟑螂算法等等)有存在的必要吗?

在这一问题下面,很多人对演化计算持批评看法,那学界有哪些论文从理论上(不是跑几个benchmark)来分析这些算法呢?

真正批判的不是演化计算,而是对演化计算已有思想、算法、模型的拙劣模仿!创新的算法,被模仿的次数多了(特别是那些只模仿而不创新却声称创新的),也会发生所谓的“劣币驱逐良币”的现象!关于演化计算,比较好的综述论文至少有(这里的“好”完全是个人主观判断,欢迎补充):

  • Miikkulainen, R. and Forrest, S., 2021. A biological perspective on evolutionary computation. Nature Machine Intelligence, 3(1), pp.9-15.
  • Eiben, A.E. and Smith, J., 2015. From evolutionary computation to the evolution of things. Nature, 521(7553), pp.476-482.
  • Forrest, S., 1993. Genetic algorithms: Principles of natural selection applied to computation. Science, 261(5123), pp.872-878.
  • 注:这三篇综述都没有引用任意一篇所谓的“动物园”算法(所选取的引用文献应该是经过精心挑选的);在一定程度上反映了领域内学者对“动物园”算法的不认可态度!

一直有一(小)群人长期致力于演化计算的理论分析,还成立了一个专门的演化计算会议FOGA(1990开始举办,最近一次在2021年)。虽然该会议一般每两年才召开一次,但是这群人的努力值得关注与尊敬。此外,每个主流的演化计算期刊会议都会接受理论论文(人工智能顶刊AIJ与JMLR也会接受演化计算论文),理论论文对一个领域的发展也非常重要。做理论需要一定的数学基础与恒心,门槛较高(有时完全看懂都难),这也是事实(所以对于能够在这一方向长期坚持的研究者,个人更多的是赞赏)!有时花费了两个星期到一个月,也未能完全看懂一篇理论论文(但是很欣赏作者的学术研究审美与问题分析角度)!

用于数值黑箱优化的ES领域:Ollivier, Y., Arnold, L., Auger, A. and Hansen, N., 2017. Information-geometric optimization algorithms: A unifying picture via invariance principles. Journal of Machine Learning Research, 18(18), pp.1-65. 作者Hansen从1996年提出强大的CMA-ES算法,到给出该算法的理论分析,整整花费了20年!从最初的一篇CEC论文到2001年的ECJ论文到最后的JMLR论文,也可以看到作者不间断的学术追求。无论是实践效果还是理论深度,这都是令人兴奋的演化算法之一(2015年发表在《Nature》上的EC综述论文将其称之为SOTA)!

JMLR上有三篇个人很喜欢的理论分析论文:有两篇(其中一篇来自深度学习先驱之一people.idsia.ch/~juerge,其网站也有介绍他在演化领域的研究工作)分析了演化策略的理论属性,特别是从信息几何(自然梯度)的角度;这也部分解释了为什么演化策略ES近一些年在顶刊顶会上可以受到广泛认可(2021年ICML最佳论文奖颁给了相关ES研究,来自Google Brain ;2017年一篇《Science》论文使用CMA-ES进行机器人参数优化)。另一篇是使用演化博弈论分析合作型协同演化算法的收敛属性(其中一位作者现在在DeepMind)。

抛砖引玉,欢迎更多的分享!

打个广告

之前我写过一些关于智能优化算法(也被称为进化算法)的内容,包括对智能优化算法这个领域的反思和与数学优化领域之间的对比引起了很多同学的讨论,我发现做这方面研究的同学还是很多的,详情见如下链接:

现在模拟退火算法、粒子群优化算法、遗传算法和蚁群优化算法现在用的还多吗?越来越多的群体智能算法(蛙跳算法、猫群算法、蟑螂算法等等)有存在的必要吗?

那么我这边就分享一下我曾经读过的觉得非常欣赏的带有一点点理论分析的智能优化算法论文。主要目的也是让大家欣赏一下好的智能优化算法论文是什么样的,以及怎么样做一点点小的理论分析。当然需要说明的是本文分享的方法是非常toy的方法,但希望借助这个toy的方法能够起到抛砖引玉的作用让大家进一步关注和思考智能优化算法的本质是什么?同时也是希望这个研究领域能朝着健康的方向发展。

以下内容出自论文【1】Cheng R, Jin Y. A social learning particle swarm optimization algorithm for scalable optimization[J]. Information Sciences, 2015, 291: 43-60.

首先让我们回顾一下基本的PSO(粒子群算法)迭代公式为:

V_i\\left( t+1 \\right)=\\omega V_i\\left( t \\right) +c_1r_1\\left( t \\right) \\left( pbest_i\\left( t \\right) -X_i\\left( t \\right) \\right) +c_2r_2\\left( t \\right) \\left( gbest\\left( t \\right) -X_i\\left( t \\right) \\right)

X_i\\left( t+1 \\right)=X_i\\left( t \\right) +V_i\\left( t+1 \\right)

其中 X_i(t)V_i(t) 分别表示在粒子 i 在迭代次数 t 的位置和速度, r_1(t),r_2(t) 为0-1之间的均匀分布的随机数, w 为惯性系数, c_1,c_2 是参数, pbest_i(t) 表示粒子 i 的最优的位置, gbest(t) 表示整个种群最优的位置。

熟悉智能优化算法的同学相信对以上基本的PSO算法并不陌生,在论文【1】中所作的工作就是对上述PSO算法做了一个改进,改进后的算法叫做 social learning particle swarm optimization(SL-PSO),那么这个改进说起来也不难,新的SL-PSO算法的迭代公式如下所示:

X_{i,j}\\left( t+1 \\right)=X_{i,j}\\left( t \\right) +\\Delta{X}_{i,j}\\left( t+1 \\right)  \\quad (1.1)

\\Delta X_{i,j}\\left( t+1 \\right)=r_1\\left( t \\right) \\Delta X_{i,j}\\left( t \\right) +r_2\\left( t \\right) \\left( X_{k,j}\\left( t \\right) -X_{i,j}\\left( t \\right) \\right) +r_3\\left( t \\right) \\left( \\bar{X}_{i,j}\\left( t \\right) -X_{i,j}\\left( t \\right) \\right) \\quad (1.2)

其中 X_{ij}(t)\\Delta X_{ij}(t) 表示粒子 ij 维度在迭代次数 t 的位置和位置变化量,r_1(t),r_2(t),r_3(t) 为0-1之间的均匀分布的随机数, k 为比粒子 i 目标函数要好的索引, \\bar{X}_{j} 表示所有种群粒子在维度 j 位置的平均值。

SL-PSO算法的改进思路用一句话来概括就是:基本的PSO算法是向种群中最好的粒子 gbest 去学习,而SL-PSO是向种群中比自己好的某一个粒子 k 去学习。

接下来我们就要开始做理论分析了,在理论分析之前我们需要把式(1.2)中的随机变量 r_1(t),r_2(t),r_3(t) 替换为期望值,得到新的表达式:

\\Delta X_{i,j}\\left( t+1 \\right)=\\frac{1}{2}\\Delta X_{i,j}\\left( t \\right) + \\frac{1}{2}\\left( X_{k,j}\\left( t \\right) -X_{i,j}\\left( t \\right) \\right) +\\frac{1}{2}\\left(\\bar{X}_{i,j}\\left( t \\right) -X_{i,j}\\left( t \\right) \\right) \\quad (1.3)

我们观察可以看出式(1.1)和(1.3)的迭代公式实际上构成的是一个线性系统,我们令

 y\\left( t \\right)=\\left[ \\begin{array}{c}	\\varDelta X_{i,j}\\left( t \\right)\\\\ 	X_{i,j}\\left( t \\right)\\\\ \\end{array}\\right],\\,\\,A=\\left[ \\begin{matrix}	\\frac{1}{2}&		-\	heta\\\\ 	\\frac{1}{2}&		1-\	heta\\\\ \\end{matrix}\\right],\\,\\,B=\\left[ \\begin{array}{c}	\	heta\\\\ 	\	heta\\\\ \\end{array}\\right],\\   \\\\ \	heta=\\frac{1+\\epsilon}{2},\\ p=\\frac{1}{1+\\epsilon}X_{k,j}\\left( t \\right) +\\frac{\\epsilon}{1+\\epsilon}\\bar{X}_{ij}\\left( t \\right)

式(1.1)和(1.3)可以改写为如下表达式:

y\\left( t+1 \\right)=Ay\\left( t \\right) +Bp \\quad (1.4)

看到式(1.4)之后对于熟悉控制理论的同学就非常happy了,这就是一个状态方程,而且还是一个线性的。不熟悉控制理论的同学也无所谓,观察式(1.4)我们不难发现 y(t+1)y(t) 之前就是一个线性映射的关系,可以说式(1.4)一下子就把PSO算法迭代的本质反应了出来,那么我们要想要研究PSO算法的性质本质上就是研究这个线性映射 A 的性质。

至此我想研究一下SL-PSO算法的收敛性,根据式(1.4)我们知道对于一个线性系统而言其收敛的充分条件是矩阵 A 的所有的特征值模均小于1,矩阵 A 是一个2*2的矩阵容易得到其特征值的方程为

\\lambda ^2-\\left( \\frac{3}{2}-\	heta \\right) \\lambda +\\frac{1}{2}=0

由二次方程求根公式不难得到其两个特征值分别为:

\\lambda _1=\\frac{3}{4}-\\frac{\	heta}{2}+\\frac{\\sqrt{\\left( \\frac{3}{2}-\	heta \\right) ^2-2}}{2}

\\lambda _2=\\frac{3}{4}-\\frac{\	heta}{2}-\\frac{\\sqrt{\\left( \\frac{3}{2}-\	heta \\right) ^2-2}}{2}

\\left| \\lambda_1 \\right| < 1 , \\left| \\lambda_2 \\right| < 1 可以得到 \	heta >0, \\epsilon>0

至此通过上述一顿推导我们得到一个结论就是只要我SL-PSO算法的参数选择满足 \	heta >0, \\epsilon>0 那么这个SL-PSO算法一定就是收敛的。

看到这里还是能感觉一点点cool的,虽然其用到的数学方法不过就是一点点线性代数,加一点点动力学最最简单的内容而已,但多多少少给我们留下了一点回味就是我们竟然还是能分析PSO算法的收敛性的。甚至可以再进一步说,我们可以通过理论推导给与我们一个如何选择PSO算法参数的范围的指导。

有的时候你看到PSO的迭代公式以为就是这么一个公式了,其实有可能你还没有看到本质,通过理论分析让你看到这个本质。所有的PSO的改进无非就是在折腾不同的线性映射 A 罢了,而真正影响最终稳态性能的就是 A 的特征值。至此我想大家对于这篇论文已经有了一个初步的了解,细节内容可以去读原文。

需要注意的是这里的理论分析其实是做过了大量简化的一个结果,其简化的内容主要有:

1 只分析了单一粒子的迭代轨迹,而没有以种群的视角来分析这个轨迹。也可以认为我们只是分析了某一个粒子的迭代过程而把其它粒子的迭代过程视为常数。

2 只是从期望角度来做分析,而没有从概率分布的角度入手。在式(1.4)中的状态变量值本质上都应该加上期望的符号。

如果不做上述简化其实就很难得到这么简明的理论分析结果了,我们也可以看到上述两个简化实际上还是非常强的一个条件。所以目前来说对于智能优化算法的理论分析还是很困难的事情。

以下是一些从理论上分析智能优化算法的论文,其中包括演化计算和进化计算相关的研究:

  1. "Theoretical Foundations of Evolutionary Computing" by Xin Yao and Marco Tomassini
  2. "Theoretical Analysis of Evolutionary Algorithms" by Ingo Wegener
  3. "Theoretical Foundations of Genetic Algorithms and Artificial Life" by Melanie Mitchell
  4. "Theoretical Foundations of Evolutionary Multiobjective Optimization" by Carlos A. Coello Coello and Gary B. Lamont
  5. "Theoretical Foundations of Particle Swarm Optimization" by Maurice Clerc
  6. "Theoretical Foundations of Ant Colony Optimization" by Marco Dorigo and Christian Blum
  7. "Theoretical Foundations of Differential Evolution" by Kenneth Price and Rainer Storn
  8. "Theoretical Foundations of Artificial Bee Colony Algorithm" by Dervis Karaboga and Bahriye Basturk
  9. "Theoretical Foundations of Harmony Search Algorithm" by Zong Woo Geem and Joong Hoon Kim
  10. "Theoretical Foundations of Firefly Algorithm" by Xin-She Yang and Suash Deb

这些论文提供了关于演化计算和进化计算等智能优化算法的理论背景和分析,可以帮助研究人员深入了解这些算法的性能和效果,并为进一步的研究和应用提供指导。

智能优化算法的表现受多种因素影响,如问题类型、算法参数设置和实验设计等。因此,没有一个算法在所有情况下都表现最好。不过,以下是一些目前在实际应用中表现较好的智能优化算法:

  1. 遗传算法(Genetic Algorithm,GA):GA是一种经典的演化计算算法,已在许多实际问题中得到应用,如机器学习、优化、控制等领域。
  2. 粒子群优化算法(Particle Swarm Optimization,PSO):PSO是一种基于群体智能的优化算法,已广泛应用于机器学习、优化、控制等领域。
  3. 蚁群算法(Ant Colony Optimization,ACO):ACO是一种基于蚂蚁行为的优化算法,在路径规划、调度、机器学习等领域有广泛的应用。
  4. 差分进化算法(Differential Evolution,DE):DE是一种高效的优化算法,已被广泛应用于机器学习、信号处理、控制等领域。
  5. 人工免疫算法(Artificial Immune Algorithm,AIA):AIA是一种基于免疫系统的优化算法,已被应用于图像处理、分类、信号处理等领域。

需要注意的是,选择合适的算法应该基于具体问题的特点和要求,以及算法的优劣势等因素进行综合考虑。同时,算法的优化效果也与算法参数设置和实验设计等因素密切相关。

智能优化算法的计算复杂度因算法类型和问题规模等因素而异。一般来说,演化计算和进化计算算法的计算复杂度比较高,而群体智能算法的计算复杂度相对较低。具体来说,以下是一些智能优化算法的计算复杂度和适用范围:

  1. 遗传算法(Genetic Algorithm,GA):GA具有较高的计算复杂度,适用于中等规模的问题,如非线性规划、组合优化等。
  2. 粒子群优化算法(Particle Swarm Optimization,PSO):PSO具有较低的计算复杂度,适用于中等规模的问题,如多目标优化、函数优化等。
  3. 蚁群算法(Ant Colony Optimization,ACO):ACO具有较高的计算复杂度,适用于中等规模的问题,如路径规划、调度等。
  4. 差分进化算法(Differential Evolution,DE):DE具有较高的计算复杂度,适用于中等规模的问题,如函数优化、非线性规划等。
  5. 人工免疫算法(Artificial Immune Algorithm,AIA):AIA具有较低的计算复杂度,适用于中等规模的问题,如图像分类、信号处理等。

需要注意的是,随着计算机硬件性能的不断提高和算法的不断优化,智能优化算法在一定程度上可以应用于大规模问题的优化。同时,对于大规模问题,还需要采用一些优化策略,如分布式计算、并行计算等,以提高算法的效率和可扩展性。

并行计算是一种同时执行多个计算任务的计算模式,它可以将大规模计算任务分解成若干个较小的子任务,并通过多个处理器同时执行子任务,从而提高计算的速度和效率。智能优化算法通常需要处理大规模的数据集,并通过迭代优化过程逐步逼近最优解,因此并行计算可以显著提高这些算法的求解速度和效率。

具体来说,对于智能优化算法,通过并行计算可以实现以下优化:

  1. 分布式计算:将大规模计算任务分发到多个处理器或计算节点上,以减少计算时间和内存开销,提高计算效率。
  2. 并行搜索:将搜索空间分割成若干个子空间,并通过多个处理器同时搜索子空间,从而提高搜索效率和收敛速度。
  3. 并行评估:将多个解同时评估,从而提高算法的求解速度和效率。
  4. 多目标并行优化:同时优化多个目标函数,并通过多个处理器同时搜索多个目标函数的解集,从而提高求解效率和多样性。

需要注意的是,为了实现并行计算,需要采用一些并行算法和数据结构,如并行遗传算法、并行粒子群优化算法等,并针对具体问题进行优化设计。同时,还需要合理分配计算资源,如处理器数量、内存容量等,以充分利用并行计算的优势。

前言:其实演化计算理论分析,尤其是全局收敛性是容易证明的。下面展示我举一个在遗传编程自动发现"北极狐优化算法"上证明全局收敛性的例子。

在下面文章中:

HZ-VUW:【科研神器】基于遗传编程自动设计优化算法(自动设计北极狐优化算法)

我们利用遗传编程算法在五分钟内发现了一个新的优化算法,X_{\	ext{new}}=X + (F \\cdot X - F), 命名为北极狐算法。 众所周知,在设计算法的时候,我们不仅仅希望取得良好的实验效果,还希望设计出的算法有理论保证。那么,我们是否可以证明北极狐算法一定收敛到全局最优呢?

假设:

  •  \\mathcal{S}\\subset \\mathbb{R}^n 是一个有界搜索空间,其中包含全局最优解  X^*
  •  F 是从某个分布中抽取的随机扰动向量, F 的取值范围是整个搜索空间 \\mathcal{S}

证明: 定义  A_\\epsilon  X^* \\epsilon-邻域,即  A_\\epsilon={ X \\in \\mathcal{S}: |X - X^*| < \\epsilon }。设  P_\\epsilon 为一次操作中 X_{\	ext{new}}=X + (F \\cdot X - F) 落入  A_\\epsilon 的概率。因为  F 能覆盖整个搜索空间,所以即便对于足够小的  \\epsilon ,依然可以得到 P_\\epsilon > 0

 N 次迭代中,X_{\	ext{new}} 至少一次落入  A_\\epsilon 的概率是  1 - (1 - P_\\epsilon)^N 。使用极限,我们可以表示这个概率在  N 趋向无穷大时的行为:

\\lim_{N \	o \\infty}\\left[ 1 - (1 - P_\\epsilon)^N \\right]=1  \\\\

这个极限表达了随着迭代次数  N 的增加,X_{\	ext{new}} 至少一次落入  X^* \\epsilon-邻域的概率趋近于 1。

现在,我们证明了北极狐算法 X_{\	ext{new}}=X + (F \\cdot X - F) 在无限次迭代的情况下,能够以概率 1 接近全局最优解 X^*


平台注册入口