A biological perspective on evolutionary computation
“生物学视角下的进化计算”,总结了进化算法——通过对比模拟和真实的进化,指出当前进化算法与生物进化存在的六点差异,并指出了对应的改进方案。
何为进化算法?
将任意问题的解法看成一串if-else语句,可以将其解法编码为类似DNA的序列,之后通过模拟物竞天择的实验方案,再加上“解法编码”的变异和重组,就构成了进化算法的基础。进化算法不仅仅应用于解决诸如旅行商这样的最优化问题,还被广泛应用于机器人控制、机械设计等领域中。甚至可以利用进化算法来修复程序中的bug。
图1A:进化算法中的编码示意、突变和重组;图1B:进化算法如何与环境互动;图1C:进化算法随时间迭代的演变
随着数据规模的增加与复杂性的提升,研究人员需要在工程乃至未知的领域中考虑所有合理的可能性。2018年诺贝尔化学奖得主 Frances Arnold 使用定向进化来设计酶,使之改进并产生新的功能。定向进化创造变异,以随机突变为蓝本,变异根据一个特定的设计目标(如催化效率)被选择和放大。
人类专家定义问题,自动化工具进化执行搜索——通常工具找到的解决方案,比人类专家设计的效果要好。Arnold 指出,如今需要借助自动化方法来增强人类设计和创造力的这个难题,进化算法使之解决成为可能。目前进化算法已包含如蚁群算法、免疫算法等诸多变种。本文中,所有这些算法将被统称为进化计算。尽管进化计算已能在高度复杂的系统中提出解决方案,但在稳健性、通用性和可靠性等评估指标与自然界的进化过程相比,仍相形见绌。如何进一步提升进化算法,需要考虑算法中的进化和真实进化有何不同,从而进行针对性的改进。
比较进化计算与生物进化
1、进化是一个无限游戏
随着时间的推移,进化产生的生物体往往越来越复杂,这体现了进化过程的开放性。进化引发的新功能,将会成为未来进化的重要基石;长久来看,进化将导致不稳定的对环境的适应及无限扩展的发展空间,而非快速的收敛。生物体可以构建生态位,通过改变环境而非自身,以一种影响自然选择的方式来获得生存优势,在进化过程中加入反馈机制。
图2:CoDeepNEAT框架图,通过进化算法,设计并搭建评估神经网络适应度的模块,通过不断改变评估函数,该方法可以使神经网络产生重复的深度结构,而进化的过程是开放的,没有预设,参考Evolving Deep Neural Networks(https://arxiv.org/pdf/1703.00548/)
实际应用中,增加程序的复杂性并不总是必须的,然而开放式的进化可以带来意想不到的、有用的解决方案。如果引入进化思想,只是解决了工业系统中的一个微小缺点——这样的解决方案在工程上并没有什么用处。由于工程上的目标是解决特定的问题,因此开放式方法在目前并不常见。随着进化计算规模越来越大,我们完全有理由引入开放性,以产生具有更多创造性与更高复杂性的设计。
2、重大转变-进化中常见的跃迁
《生命进化的跃升》这本书讲述了40亿年进化史中,诸如多细胞生物、性以及大脑等的出现——所有这些变化中,个体单位形成群体,分化成不同的合作角色,失去了独立复制的能力。此类现象被称为 major transition,是生物体复杂性的主要来源。
在进化算法中,这样的突然改变并不存在。突变发生前后,编码和行为的对应方式会发生彻底的改变。但通过模拟生物学机制,可以在进化计算中加入更高的组织层级,例如控制虚拟生物的神经网络,可以将转向、奔跑、击打等动作作为模块封装起来,再据此之上,进化出战斗、逃跑等策略。然而上述过程中,抽象层级的增加来自人为介入,而非进化自发产生。未来的进化算法,需要应对这一挑战提出解决方案。
图4:智能机器人及对其行为的封装,从而使系统能够在更高抽象的层次使用进化算法寻找控制策略,来自Increasing Behavioral Complexity for Evolved Virtual Creatures with the ESP Method
3、中性进化:并不是所有的突变都有意义
中性进化意指那些对生物体适应性无影响的遗传突变。基因库中保留的突变位点大多是由于随机而非选择压力导致而改变,此种现象被称为遗传漂变。在生物进化中,对于新功能的产生,中性进化与遗传漂变都是必不可少的机制。
在进化计算中,可以模仿自然进化——例如好奇心机制可以将优化的目标,由具体的问题,改为探索未知搜索空间的部分,再判断新找到的解决方案是否比之前的解法更好,从而实现进化。这一过程,就体现了中性进化思维。在针对旅行商问题的混合遗传算法中,传统方法没有引入选择函数,不会去掉迭代过程中产生的任何一种参数;而通过引入中性进化,可避免模型过早地收敛于局部最优解,参考:The massively parallel mixing genetic algorithm for the traveling salesman problem。
在自动化程序编码中,30%-40%的情况下,代码改变都未影响功能。引入进化计算后,随机漂变为弱选择的发生提供了原材料,因此哪怕在短期看起来有微小害处的改变,长期来看也会成为程序创新解法的组成部分。如今进化计算中过渡的强选择,使得算法不同于真实进化。未来的进化计算,可尝试结合中性进化甚至更长的时间尺度。
4、多目标:不是只盯着一个路标
生物体的适应性是一个涉及多个元素的复杂过程——生物体需要照顾下一代,也需要自己觅食、吸引配偶。上述多种目标,需要全部完成才能繁衍下一代。这其中的多维且间接的权衡,为生物引入了复杂性。
在进化计算中,也会涉及目标存在于一个多维度的空间中,从而可以将目标进行拆解。然而,如果选择压力过小,那么过于弱小的信号将无法指导进化。通过在高层目标之下,设计用于指导进化的直接目标——例如解法复杂性、准确度、成本等——可实现指导算法在对应的维度上进行取舍,继而使用外部标准来选择一组特定的权衡。
在生物学中,适应性有多个维度——意味着在复杂的环境中,可使用不同的生存策略。由于环境中包含多种生态位及其对应的生存策略,可以促进物种的形成。在进化计算中,物种的形成也是有用的——可提升多样性及保护创新。
然而进化计算中,物种的出现,需要提升策略的多样性,而这需要改变优化函数,将策略的新颖性作为目标的一部分,从而显示促进策略构建自己的生态位。但对于复杂度更高的问题,人工定义的干涉不便过多参与,这就需要更为激进、也更为自然的方式,来促成高抽象层级的目标,包含分割众多子目标。
5、间接的基因型-表现型对应
进化算法中的基因型,目前大多直接和策略对应,而变异和重组则会直接修改解决方案的组成部分。但在生物进化中,大部分对适应性有所影响的基因突变,不会直接改变蛋白质本身,而是通过修改蛋白质调控网络,间接地影响适应性的改变:这体现了生物进化与进化计算在基因型与表现型的差异上的区别。
通过探究细胞之间、细胞与环境之间的相互作用,进化中基因型与表现型的复杂关系,使得策略的搜索得以在一个互动的、多方面的过程中,构建起更高自由度。例如上位基因(Epistasis)——如两只灰色的兔子,可以在下一代中出现黑色的兔子。又比如表观遗传的改变,进化改变的不是下一代所遗传的策略本身,而是某一策略是否执行。
在进化计算中,可以使用多种策略,来增加基因型和表现型之间的复杂度,例如神经进化中最初的HyperNEAT[A Hypercube-Based Encoding for Evolving Large-Scale Neural Networks],通过神经网络对称,让一个神经网络通过进化,为另一个真正完成具体任务的网络赋予权重,这类似人类大脑中负责学习技能的神经网络,可操纵真正执行技能的网络。另一个例子是DeepGA[Deep Neuroevolution: Genetic Algorithms Are a Competitive Alternative for Training Deep Neural Networks for Reinforcement Learning],它能够通过进化计算而非梯度下降的方式,训练神经网络,并系统化地从压缩的网络结果扩展到完全的神经网络。以上都是利用模仿生物体,模仿基因型-表现型之间的对应复杂度来改进进化计算的案例。
6、共同进化:在合作与竞争中共同成长
生物体的进化从来都不是单独进行的,个体之间普遍同时既存在合作,也存在竞争。进化计算中,个体的进化往往是独立的。当适应性取决于个体与其他人群中的个体竞争或合作,这种开放式动态,使得生物进化需要协同各个子模块及目标,从而无限期地创造更复杂的解决方案。
Alpha GO通过自我博弈进行训练的过程,就是共进化这一思想的应用。深度学习中热门的对抗神经网络(GAN),其中包含编码网络和识别网络,也是利用智能体的相互竞争,通过共进化以便让算法自行提升复杂度的。
图5:GAN模块示意图
除了上述对抗性的共进化,合作型的共进化的典型案例是CoDeepNEAT,通过实现子模块各自的进化,之后从这些模块中,选出最优或由子模块合作组成的解法,当做算法得出的最终解。解的适应性经过综合评估后,再分拆到各个模块,以激励各模块的合作。该方法得出的解,具有超过单模块进化时能产生的复杂度。
动态环境下,能够产生更为复杂的表征。而如今进化计算中,基因型-表现型的简单对应,以及算法环境的复杂性欠缺,使得这条改进路线未来的潜力,更多取决于计算资源、训练数据,而非算法机制的创新。
进化计算的挑战与机遇
进化算法自从60多年前出现,已有了长足的进展和广泛的应用,在《终极算法》一书中,被称为实现强人工智能的一条可行路线。然而,受限于缺乏生物有机体和生态系统的复杂性、灵活性和可塑性,进化计算还远远没有达到其试图模仿的生物对应物所达到的水平——如免疫算法应对威胁的能力远远不及自然免疫系统,也没有任何人工神经网络能够达成人类天生具有的基础几何推理能力。
虽然进化算法不必完全模仿自然进化,但自然进化产生了各种复杂性的机制——诸如中性进化、基因型-表现型间的间接关联等,需要在进化计算中以适当的形式重现;而共同进化、多目标进化、开放性这三个用来描述进化过程的特征参数,目前已在进化计算中有所应用。同时随着算法规模提升,这些方案将会有更广泛的体现。而进化中的跃迁,则是生命进化过程中最难能可贵之处的闪光处,需要结合上述多条路线,并引入新的规则,才可能实现。
如果我们能够在未来成功应对上述的六点进化计算与真实进化不同所带来的挑战,进化计算将成为复杂工程系统的创新引擎。随着进化计算的改进,它可以捕捉到足够多的相关生物学信息,作为一个有用的模型,反过来推动生物的进化过程。如今,巨大的计算能力使我们能够模拟庞大的种群和深层时间,从而使检验生物进化理论成为可能。在未来,我们希望能利用进化计算来反馈生物进化学,回答诸如“选择是在多个层次上运作的吗?”“是高层次的组织逐渐被发现,还是它是否需要多个组织同时进行的创新?”等进化理论中的未解之谜。
进化计算前沿综述:值得算法学习的6个生物进化特征 - 知乎