人工智能算法(卷2):受大自然启发的算法
上QQ阅读APP看书,第一时间看更新

本章中“种群”一词与Merriam-Webster词典(2014)中的一种定义,即“居住在一个地方的一群特定种类的人或动物”较为类似。在本书中,种群是解决问题的一组潜在方法。这些潜在解属于同一种类,因为它们解决相同的问题。有时,解种群中的成员将分为不同的物种,但是我仍将这些成员归为同一种群。

种群也是统计研究中常用的术语。统计种群被定义为“从中抽取样本进行统计测量的一组个人、物体或物品” [1]。在统计数据中,人们经常将种群细分为较小的、可管理的组,称为样本。通常,我们从种群中抽样时会偏向得分较高的个体。在另一些时候,我们可能会进行纯粹的随机抽样,从而为种群中的每个成员提供平等的获选机会。

解种群也被视为统计种群。类似于统计学家通常会从种群中抽样,演化算法也会从解种群中抽样。抽样通常涉及从潜在解种群中随机选择单个或多个个体,然后将这些样本用于选择。选择抽样将在后文讨论。

种群规模通常不会随着演化算法的发展而改变。种群规模是一个硬性限制。例如,如果你指定500个人,那么总会保持500个人。如果有5个人出生,则必须有5个人死亡,以维持500个人的平衡。我们会创建一个初始种群,其计数等于该种群规模,构成初始种群的初始潜在解将被随机生成。这些最初的随机解可能不太好,但是,其中一些随机解的得分会比较高。

程序中使用的算法类型会影响种群规模。种群成员可以是竞争的,也可以是合作的。合作种群通常以固定规模开始,并且永远不会添加或删除新成员。竞争种群总是会创造出后代,以维持这个固定种群的规模。这些后代也被称为“迭代”,下一代的孩子仅由最合适的亲本产生,一旦竞争种群的下一代达到这个最大的后代数量,就不会再有孩子出生了。

这些算法模仿自然,因为动物种群通常既有竞争性,又有合作性。例如,一群狼一起狩猎,而多个狼群相互竞争以争夺稀缺资源。另外,在选择头狼的过程中将存在竞争。受大自然启发的算法要么是竞争的,要么是合作的,两者不能同时实现。在本书中,我们将从竞争种群开始,讲解每种算法的示例。

竞争种群的算法包括遗传算法和遗传编程。这些算法都会创建潜在的解,分数较高的解更有可能被选择用于交配并提供下一代种群。除交配外,竞争种群的成员之间没有直接合作。

竞争种群总是会包含一个或多个获得最佳分数(比如打平)的解。还有一个可能的结果是,下一代不包含超过上一代最佳分数的新解。如果发生这种情况,最优解的分数将下降,从而使训练倒退一步。这种结果通常是不希望产生的。

你可以通过“精英”来解决这一问题,精英是一种训练设置,用于指定将多少个获得最佳分数的解用于下一代。因为精英设置始终会保留最优解,所以它可以保证算法不会倒退到较差的分数。可以将其设置为多个获得最佳分数的解,而不只是单个解。精英不是防止种群的最佳分数在代际间倒退的唯一途径。此外,“联赛”也可以防止分数下降。联赛选择将在后文介绍。

AI中的种群并非都是竞争种群,AI中也存在合作种群。合作种群的算法包括粒子群优化(Particle Swarm Optimization,PSO)和蚁群优化(Ant Colony Optimization,ACO),在这两种算法中,各个潜在的解相互学习。在它们寻求指定问题的良好解时,信息在个体之间共享。

合作种群总会跟踪其成员已经找到的最优解,但算法不会贪心,而会在寻求最优解时接受一个较差的解。由于这个特性,跟踪至今为止找到的最优解非常重要。保留这些记录可以使你恢复到最优解,即使种群成员已转向较差的解。

与竞争算法一样,合作算法也是迭代的。但是,一次合作迭代不会用新一代取代先前的种群。合作算法的迭代仅表示对每个潜在解的一次完整遍历,评估解的有效性并获得了分数。在每个迭代周期结束时,所有潜在的解都会进行协作并调整它们的解参数,使得分数最大化。

表型和基因型是两个来自生物学的术语,它们对某些受大自然启发的算法很重要。基因型是遗传信息,生物体根据它来生长。表型是由基因型产生的实际生物组织。同卵双胞胎就是理解表型和基因型之间差异的一个很好的例子。同卵双胞胎拥有相同的基因型,但是,双胞胎会成长为不同的人,具有稍显不同的身体特征。在AI中,相同的基因型会成长为两个略有不同的表型。

然而,大多数演化算法不区分表型和基因型。潜在解的基因型和实际解的表型之间没有区别。因此,我将遵循该指导原则,不在我讨论的演化算法中区分表型和基因型。

HyperNEAT神经网络是一种可以区分表型和基因型的受大自然启发的算法的例子 [2],它不是本书的主题,而是本系列第3卷计划的主题。

地理分离会对生物自然种群的进化产生重大影响。塔斯马尼亚岛、加拉帕戈斯群岛和马达加斯加岛等岛屿的生态特征都与距其最近的大陆完全不同。此外,岛上和岛外种群之间的互动可能会随着时间而变化。岛屿可能曾经是大陆的一部分,陆桥可能存在又消失。这些事件控制着个体之间的分离程度。

岛屿的概念也可以在受大自然启发的算法中使用,以使多个种群在很大程度上彼此独立,就像真实的岛屿将种群分开一样。算法还可以选择允许岛之间的偶然交互。这种间歇性相互作用类似于陆桥或其他允许生物在生态系统之间传播的地质事件。

岛屿概念最常用于竞争种群。将潜在解分为多个种群,可以使新的创新不断发展,而不会受到现有种群的威胁。岛屿之间偶尔可以进行互动,并允许其他岛屿的外来解引入新的想法。

多元种群概念也可以应用于合作种群,这类似于公司创建多个团队来解决同一问题。这些团队有时可能会就某个想法进行协作,但它们在很大程度上是自主的。例如,可以认为施乐帕克研究中心是与施乐公司分开的孤岛。尽管帕克研究中心可能会不时与施乐公司合作,但它们的分离使它们能够为计算问题创建一些非常独特的解。

总的来说,多元种群的概念具有一些非常实际的用处,它与分布式计算非常兼容。所有分布式计算问题中最困难的方面之一,就是组成计算集群的各个计算机之间的同步问题。由于不同的种群之间固有地彼此独立,因此该算法不需要同步,这使得该任务容易在并行系统上实现。