1.2 现状
演化计算领域的研究大体可分为互相关联的三个方面,即模型与算法、应用场景和计算平台(硬件)。
1. 模型与算法
在模型与算法方面,演化计算领域已经形成一套成熟的方法论。具体地说,演化算法(Evolutionary Algorithms)一般遵循一个共同的抽象框架,即同时维护多个演化对象(个体),根据预定义的演化算子,迭代式地对个体进行改动(调整),令其不断适应外部环境(选择)。在每一轮的调整和选择过程中,尤其强调引入一定的随机性和并发性。过去50年内许多最广为人知的演化算法,如遗传算法[4]、演化策略[5]、演化规划[6]、遗传编程[7]、粒子群优化[8]、蚁群优化[9]、协同演化[10]和免疫算法[11]等,都可视为从不同演化现象中抽象出不同的算子,是对演化算法共同框架的具体实现。可以说,时至今日,演化算法已不再指代某一个具体的算法,而是一个内涵极为丰富的算法类的统称。
从上述框架可以看出,演化算法本质上是一种并发的随机算法。更进一步说,由于采用了迭代计算的模式,其与马尔可夫链蒙特卡罗(Markov Chain Monte Carlo, MCMC)方法有很大相似之处。不同之处在于MCMC会显式地根据一个概率分布来生成(采样)新个体,而演化算法则根据算子(数学映射)生成新个体。由于许多复杂问题往往难以用概率分布进行建模3,而演化算法可以视为由算子定义了一个无需显式写出其数学形式的概率分布,因此相比MCMC具有更大的灵活性,也更易于引入关于问题的先验知识。实际上,从问题求解的角度来看,演化算法的算子并非必须来源于现实世界中的演化过程,而可以是任何形式的数学映射4。但另一方面,如果过于随意地设计算子,不仅会加大理解算法本质特性的难度,也未必能在实践中取得更好的效果。因此,脱离对自然演化现象的简单模仿,强化其与一些经典数学模型的结合,近十年来获得了极大的关注,例如分布估计算法[12]就采用了显式的概率模型,是演化算法与经典概率算法相结合的一个典型例子。
2. 应用场景
作为一种比较宽泛的思维框架,演化计算有着广泛的适用场景,其效果已经在优化、设计、学习和博弈等多个领域的案例上得到了证明。总体来说,演化计算的主要优势在于其能有效地解决一些难以被精确建模,或是性质不清楚的复杂问题。
以优化问题为例,经典的数学优化方法往往要求用户能显式地给出优化问题的目标函数和约束条件,其中一些代表性方法还假设目标函数可导(如梯度下降),或是凸函数(如二次规划)。而演化算法由于对问题特性的依赖相对较少,更适合于解决难以精确建模或者目标函数具有多极值、不可导、多目标等性质的优化问题。例如,在设计鸟巢体育场的桁架结构时,在保持不规则的视觉效果前提下,需要优化桁架结构的稳定性,难以显式给出目标函数和约束的数学形式,因此只能采用演化算法进行结构设计[13]。即使目标函数的数学形式已知,若其包含多个极值点,则经典的数学优化方法(如梯度下降)容易陷入局部最优,而演化算法由于采用了种群的概念,以及一些全局搜索算子,陷入局部最优的风险相对较低。实际上,在一些代表性非凸问题上的最新理论研究表明,演化算法求得最优解或近似最优解所需的时间复杂度比经典算法低一个量级[14-15]。此外,在多目标优化领域,演化计算也已体现出极强的优势,近年来正逐渐成为解决多目标优化问题的主流手段[16]。
需要说明的是,对于上述这些优化问题,我们仍可通过对目标函数进行简化、(二次)建模等方式将其变为经典数学优化方法可解的问题。这一思路的隐含假设是新的数学模型与原始问题高度近似,形象地说,是求“近似问题的精确解”。相应地,演化计算直接求解原始问题,但往往只能获得近似最优解,可以认为是求“精确问题的近似解”。这两种问题求解的思路分别要求在问题(或模型)空间和解空间中控制某种形式的“近似度”,很难说有绝对的好坏之分,而只能具体情况具体分析。因此,演化计算与经典数学优化方法并无对立,而是互为补充。实际上,在解决实际问题时,两者也常常可以结合使用,例如使用信赖域法(trust-region method)作为演化算法的局部搜索算子[17]。
演化计算在设计、学习、博弈等领域的典型应用场景,与其在优化领域的大体类似。在许多产品的设计(如珠宝、服装)中,用户体验是必须关注但又难以建模的。因此采用交互式演化算法,直接将人引入交互式设计的回路中,是获得更好设计方案的有效方式[18]。由于演化与学习是有密切关联的两个概念,利用演化计算的手段实现对模型的训练或选择是一个很自然的想法,学习分类器系统(Learning Classifier System)[19]、演化人工神经网络(Neural Networks)是这方面的代表性工作[20]。近日,谷歌大脑(Google Brain)和OpenAI的研究团队分别在深度神经网络基础上重新实现了演化神经网络技术,在图像识别[21]和游戏问题[22]上体现出了不错的性能。演化博弈则为研究群体行为提供了一种有效的模拟演算工具,其基本原理是将博弈中的每个选手表示为一个个体,个体在演化过程中独自进行决策,通过观察和分析整个群体在若干代的演化中的行为规律,以揭示一些重要群体行为的关键形成机理(例如个体间的合作是如何产生的[23])。
3. 计算平台(硬件)
在计算平台方面,演化算法由于采用了种群,具有隐并行性,因此从上世纪80年代开始,就出现了关于并行、分布式演化算法的研究,主要目的是利用并行计算的手段加速演化算法。同时,也有一些研究考虑了其他类型的计算平台,如演化硬件[24]的研究尝试将可重构硬件(如FPGA)作为被演化对象,DNA计算[25]、膜计算[26]等则尝试直接使用有机载体作为计算平台。这些研究虽然出现得相对较晚,但近年来随着硬件、生物技术的不断进步,发展也比较迅速。由于演化计算是基于种群的迭代计算过程,计算量往往比较大,这曾在一定程度上限制了演化计算的应用。但高性能计算、云计算技术的高速发展,使得演化计算无论是时间,还是经济成本都比以前大幅降低,进而为其被更广泛应用于实际提供了新的想象力。