《Coevolutionary computation and its application》协同演化及其应用中文对照·第一章
【协同演化及其应用中文对照:作者-姚新】Coevolutionary computation and its application
- 观前提示
- 第1章 演化计算:概述
- 1.1 演化计算:一种现代搜索启发式方法
原文链接:https://link.springer.com/book/10.1007/978-981-96-2841-4
【免费】资源下载:https://download.csdn.net/download/m0_54713489/90954283?spm=1001.2014.3001.5503
观前提示
本文在忠实原文的基础上,对翻译内容做了适当的删改,然而翻译终究无法体现原著语言之精妙,用词之准确,如读者有能力,建议阅读原文!!!
第1章 演化计算:概述
1.1 演化计算:一种现代搜索启发式方法
作为人工智能方法的一个现代分支,演化计算(Evolutionary Computation)包含了受自然进化过程启发的计算系统和程序。它们被用于解决复杂的现实世界问题,并在合理的时间内提供足够优质的解决方案。演化计算被广泛应用于从物理、生命科学到社会科学等各类领域,既适用于优化(Optimization)与学习(Learning)相关的问题,也适用于涉及建模(Modelling)和仿真(Simulations)的问题。在这些情形下,那些经典精确方法无法在规定时间内保证获得最优解、需要针对特定问题结构做大量扩展或对支撑其大量形式化构造的强假设进行放宽的问题,演化计算为其提供了可行的替代方案。
尽管演化计算所采用的方法与经典方法(笔者注:单纯形法,牛顿法,梯度下降等)在原理上存在根本性的不同,但两者之间同样存在共通点。实际上,通过搜索进行问题求解的思想具有普遍性,涵盖了众多方法家族 [1]。进化算法(Evolutionary Algorithms,EAs)是在一种构建在“生成-测试”框架下的算法,其核心是可以在计算机上实现的迭代过程 [2]。因此,问题求解实际上是对解空间进行迭代搜索。在每一步中,都会生成新的候选解,并依据一组测试准则对其进行检验,以判断搜索目标是否已经达成,从而决定是否终止搜索。
较为直接的方法是利用问题定义来制定测试准则,随后,人们可以采用不同的、系统的方法来生成后续候选解。然而,这种无信息(uninformed)搜索方式存在潜在的局限性。通过一个简单的例子说明:假如你解决的是一个离散结构的问题,比如“给定 n n n 个点的图有多少种不同的着色方式”,并且你能用一组参数(比如一个长度为n的颜色数组)唯一地表示每一个解,那么所有满足条件的解都可以列成一个唯一的、没有重复的列表,每个解都能找到且只出现一次。假如我们暂且不考虑提前停止,而是让搜索顺序由某种生成方式决定(比如从头到尾依次枚举),无信息搜索的过程就像是在一个具体顺序排列的解列表里,从左到右逐个检验每个候选解。在最坏的情况下,最优解会被排在最后一个位置,也就是说你要把所有解都试一遍,最后一个才是你要的。
同样的观点也适用于在生成后继解的策略固定而问题发生变化的情形。关键在于,如果希望通过牺牲部分最优性来避免最坏情况,从而在更短时间内获得可接受质量的次优解,那么还需要对问题本质具有额外的知识。在实践中,这体现在使用某种启发式函数,该函数能够指示当前候选解距离最优解的远近,以引导后继候选解的选择。此外,人们还可以将后继候选解的生成限定在由变换算子定义的较小邻域内。现代启发式方法结合了上述两种方法论特征,进而产生了实际将搜索限制在解空间的子集上的迭代搜索算法。
当然,现代启发式搜索方法采用了复杂的过程,即使用其理论模型来解决现实问题的抽象时,也需要高度发展的数学工具辅以分析。事实上,进化算法(EAs)就是这样一种现代启发式搜索方法。一个例子是,当使用进化算法作为处理离散优化问题的随机算法时,对其的分析往往使用的高等的概率论方法 [3]。分析中所遇到的挑战来自于进化算法的搜索行为特性。理论分析需要:(i)在每一个时间步(迭代代数),描述整个候选解群体的状态;(ii)追踪这些状态随种群进化的变化。而且,进化算法操作的“状态空间”是种群的集合,比普通搜索空间(单个解的集合)复杂很多,因此分析起来更难。
笔者注:举个简单例子,
普通搜索:一个解就是一个状态,比如“当前解x=5”。
进化搜索:一个“状态”是一组候选解的集合,比如“当前候选解是{x1, x2, x3, x4, x5}”,每一步都要追踪一组解的整体变化。
尽管这些数学分析工具的发展推动了对进化算法的严格分析,也为设计和构建更高效的进化算法提供了新的见解,但演化计算领域的部分根基依然是实验性的。对自然进化过程的观察为五六十年代这些新兴方法背后的部分基本原理提供了动力来源[4, 5, 6, 7, 8, 9]。感兴趣的读者会注意到,这些早期研究并不仅限于探讨将进化方法应用于某些抽象优化与决策问题。例如,文献 [6] 提出了一种进化算法类似的过程,将其应用于当时算力有限机器的工业制造运筹学背景中。还有研究致力于在有限计算机上实现进化过程,从而探究其与复杂自适应系统(Complex Adaptive Systems)和人工生命(Artificial Life)类似的涌现特性 [10, 11, 12]。随后,其他的独立研究相继开展,形成了若干前驱分支。这些分支后来在九十年代,随着该领域的确立与统一,被统称为演化计算的三大独立分支[13, 14],即遗传算法(Genetic Algorithm, GA)、进化编程(Evolutionary Programming, EP)以及进化策略(Evolution Strategies, ES)。随后还引入了一些新方法,这些方法起初与前三大分支类似,但经过后续的发展,最终形成了自身独立的类别。部分新类别采用了诸如粒子群优化(Particle Swarm Optimization, PSO)[15, 16, 17]和分布估计算法(Estimation of Distribution Algorithm, EDA)[18, 19, 20]等术语。
现代的遗传算法(GA),是一种进化式方法,它通常用二进制编码来表示解,并结合“遗传操作算子”(比如交叉、变异等)。举个简单例子,假设问题的解没有层次结构(即解是“扁平”的,比如一组参数)。每个候选解是基本集合(比如实数集 R \R R)的笛卡尔积中的一个点( R × R \R\times\R R×R)。这些集合可以是离散的(比如整数)或连续的(比如浮点数)。为了支持GA操作,这些值都可以用指定长度的二进制串编码,这样每种可能的取值都有唯一的二进制表示。这种“坐标式编码”保证了编码是可逆的:每个二进制串都能唯一映射回一个解。对用户来说,每个解就变成了一长串连续的二进制码,类似生物染色体。此时可以定义遗传操作符,比如交叉(crossover),即从一对候选解的二进制字符串的随机选定位置之间交换相邻的等长区块,形成新的一对候选解。然而,Holland最初提出的GA理论,强调的是通过遗传适应实现计算的一种理论框架。现代GA的用法只是这个理论的一个实际应用(主要用于函数/参数优化)。实际上,GA理论可以用得更广泛,不仅仅用于“函数优化器”或“参数优化器”,也可以用来进化更复杂的解、程序等。
现代进化编程(EP)的成功其实表明它被当作一种参数优化方法来用(就像很多进化算法现在常用于参数优化问题)。以此类观点如何产生为例,文献 [21] 中有一个AI智能体,没有预设棋艺知识,但经过训练后能在两人零和棋类游戏中达到接近人类专家水平。对实际应用而言,最重要的是如何设计训练智能体的系统。在这种情况下,解的“参数化表示”是一个大型前馈神经网络,它用来评估棋盘局面(作为浅层minimax算法的评估器)。训练的成功似乎依赖于:EP是否能有效地用“微小变异”操作来优化神经网络的连接权重。但是,Fogel等人最初提出EP,其实目的是更广泛的AI发展,而不是只做参数优化。早期的EP实验,大多用有限状态机(FSM)来表示解(比如下棋策略也用FSM表示)。这些实验的两个主要目的:
(i) 研究智能(尤其是“行为智能”)是否可以通过进化方式产生,比如让智能体学会符号预测。
(ii) 展示智能行为是可适应的,即进化变化能直接作用于“个体”层面,让个体的行为自适应进化。
在这三种方法中,进化策略(ES)的诞生更加注重实际问题的解决,即以工程或现实世界的应用为主要目标。ES早期的研究不仅关注算法的迭代过程(怎么一步步调整解),还包括对这些过程的理论分析。最初ES被用于实验参数优化:每个候选解(设计参数)都会被实际物理调节,然后通过真实测量来评估效果。这些随机启发式方法旨在对设计参数做“小幅、可变的随机调整”,然后对其性能进行评估,同时可能受到噪声的干扰。调整参数的幅度是从某些概率分布中随机取值,所以算法本质上是随机的,在具有多峰性且明显噪声存在的实际物理工程优化情境中,其性能超过了基于梯度的数值优化方法。随着高性能计算机变得更普及,ES的发展速度随之加快。通过对参数优化问题的抽象化(用参数向量和适应度函数来表示解和目标),进化过程(原来在物理实验中进行的)可以迁移到计算机仿真中进行,大大加快了算法研究和应用的速度。
尽管进化计算在现实中取得了成功,这也使一些人倾向于将进化算法(EA)视为一组针对具有特定结构的难题而设计的具体解决方案,即:每种问题就用相应的EA来解决。但我们的动机和更早一些研究者一样,是希望强调该领域在问题求解的其他方面能为实践者带来的价值,而不仅仅是作为一种直接应用于具体问题的搜索方法。本书的一个核心观点是:通过多个“交互体”(智能体、个体等)之间的协同适应(coadaptation),来指导搜索过程。协同演化计算(Coevolutionary Computation)的这一核心思想并不新颖,但过去二十年的发展带来了更深入的理解,并为新应用领域开辟了道路。第一类(former):协同进化推动决策型智能体的学习(比如博弈、对抗式任务等),书中将展示新理论观点和分析工具,帮助大家理解:协同进化搜索何时会遇到“病态”问题(比如陷入循环、不收敛等)以及如何解决这些问题。第二类(latter):把协同适应原理当作更高层次问题求解的通用框架。也就是说,不只是优化参数,而是用协同适应思想来设计、组合、调整各种方法和解题策略。
对实际应用者来说,这里说的不是把某种元启发式方法(metaheuristic)简单“套壳”到某类EA(进化算法)上,而是把人类专家在调优和设计算法时用到的更高层次的流程,系统化并用协同演化的方式表达出来。首先,通过合适的参数化,把“解空间”变成一个可以度量距离的结构,也就是说,把各种“原始解法/算法”用参数表示,可以比较它们之间的相似性/差异性。同时要设计“变换算子”,即能对这些原始解法进行修改的操作。这样协同进化(coevolution)就可以在这个更高层次的搜索空间上运作,不是直接进化解,而是进化“解法/算法”。通过类似的思路对问题测试用例空间进行构建,也能够应对如何制定恰当适应度评价机制的挑战。这样就形成了两个种群的协同进化:一个是进化算法(EA)的种群,一个是测试用例的种群。这种设置有助于解决算法组合(Portfolio Optimization)泛化能力的问题:即算法是否能在各种不同的问题上都表现良好,而不是只针对某一类问题“过拟合”。
在接下来的章节中,我们将更详尽地介绍进化算法的具体细节。第1.2节将重点介绍构成通用进化算法设计基础的关键要素:种群的使用、解的表示方法,以及进化中的变异与选择算子。还将对进化计算中常用的重要术语进行描述和强调。我们会举出进化算法的若干实例,特别是与后续章节中介绍的协同进化算法(CEAs)特征相似的一些实例。紧接着,第1.3节将介绍进化算法参数控制(parameter control)的概念,并介绍一些先进方法,这些方法能够优化与进化算法运算相关的参数,以提升算法性能。
[1] Russell, S., Norvig, P.: Artificial Intelligence: A Modern Approach, 4th edn. Pearson, New
Jersey (2021)
[2] Yao, X.: Evolutionary Computation: Theory and Applications. World Scientific Publication,
Singapore (1999)
[3] Doerr, B., Neumann, F. (eds.): Theory of Evolutionary Computation: Recent Developments
in Discrete Optimization. Springer, Switzerland (2020)
[4] Barricelli, N.A.: Numerical testing of evolution theories: part I: theoretical introduction and
basic tests. Acta Biotheor. 16(1–2), 69–98 (1962)
[5] Barricelli, N.A.: Numerical testing of evolution theories: part II: preliminary tests of
performance, symbiogenesis and terrestrial life. Acta Biotheor. 16(3–4), 99–126 (1963)
[6] Box, G.E.P.: Evolutionary operation: a method for increasing industrial productivity. J. R.
Stat. Soc. Ser. C (Appl. Stat.) 6(2), 81–101 (1957)
[7] Bremermann, H.J.: Optimization through evolution and recombination. In: Yovits, M.C.,
Jacobi, G.T., Goldstein, G.D. (eds.) Self-Organizing Systems. Spartan Books, Washington,
DC (1962)
[8] Friedberg, R.M.: A learning machine: part I. IBM J. Res. Dev. 2(1), 2–13 (1958)
[9] Friedberg, R.M., Dunham, B., North, J.H.: A learning machine: part II. IBM J. Res. Dev. 3(3),
282–287 (1959)
[10] Barricelli, N.A.: Esempi numerici di processi di evoluzione. In: Methodos, pp. 45–68 (1954)
[11] Barricelli, N.A.: Symbiogenetic evolution processes realized by artificial method. Methodos
9(35–36), 145–182 (1957)
[12] Fogel, D.B.: Nils Barricelli–artificial life, coevolution, self-adaptation. IEEE Comput. Intell.
Mag. 1(1), 41–45 (2006)
[13] Bäck, T., Hammel, U., Schwefel, H.-P.: Evolutionary computation: comments on the history
and current state. IEEE Trans. Evol. Comput. 1(1), 3–17 (1997)
[14] Fogel, D.B.: Evolutionary Computation: Toward a New Philosophy of Machine Intelligence.
IEEE Press, Piscataway (1995)
[15] Bonyadi, M.R.: A theoretical guideline for designing an effective adaptive particle swarm.
IEEE Trans. Evol. Comput. 24(1), 57–68 (2020)
[16] Clerc, M., Kennedy, J.: The particle swarm–explosion, stability, and convergence in a
multidimensional complex space. IEEE Trans. Evol. Comput. 6(1), 58–73 (2002)
[17] Kennedy, J., Eberhart, R.: Particle swarm optimization. In: Proceedings of ICNN’95 –
International Conference on Neural Networks, Perth, pp. 1942–1948 (1995)
[18] Hauschild, M., Pelikan, M.: An introduction and survey of estimation of distribution
algorithms. Swarm Evol. Comput. 1, 111–128 (2020)
[19] Larrañaga, P., Lozano, J.L. (eds.): Estimation of Distribution Algorithms: A New Tool for
Evolutionary Computation. Springer, New York (2002)
[20] Mühlenbein, H., Paa β, G.: From recombination of genes to the estimation of distributions
I. Binary parameters. In: Parallel Problem Solving from Nature PPSN IV. Lecture Notes in
Computer Science, vol. 1141, pp. 178–187. Springer, Berlin (1996)
[21] Fogel, D.B.: Blondie24: Playing at the Edge of AI. Morgan Kaufmann, San Francisco (2002)