大冠军搜索算法
假设我们被要求在孟德尔图书馆的适合度景观中搜寻高峰,这里需要注意的是,我们的任务并不是找到最高的山峰。整个景观中可能并不一定存在一个明确的最高峰,而是可能有多个高度相同的山峰却彼此相距甚远。更重要的是,即使有一根适合度杆比其他的杆子都略高,我们找到它的机会也非常小。而且,山峰的高度会在景观中不断变化,当我们发现最高的一根杆子时,它可能会变矮,或者另一根杆子会变高。因此,我们无法寻找某个全局最优值,只能简单地寻找在任何给定的时刻的最高峰值。
在开始徒步旅行之前,我们需要引入三个额外的挑战。第一,我们必须想象这是一个漆黑无月的夜晚。你可以感觉到你是走到了高处还是低处,但仅此而已。这代表着进化在任何意义上都无法“向前看”,它所能做的就是尝试一些东西,看看它是否有效。
第二,这个景观中毒雾附着在低适合度的山谷和缝隙中。如果你在漫游中到达的高度太低,就会掉入毒雾因窒息而死。毒雾代表了自然选择——在某些时候,如果你的适合度太低,你就会被淘汰。
第三,这个景观不是静止的,而是不断变化的。随着环境的变化,适合度函数也会发生变化,因此今天的适合度高峰可能到明天就不再是高峰了。随着环境的变化,低适合度的山谷形成新的山脉,而以前的高峰在毒雾之下塌陷为低地。在任何一个时间点上,一些地区的景观可能是稳定的,而另一些地区可能会像板块运动一样逐渐移动,还有一些地区可能是高度活跃的,就像地震带和火山爆发形成的断裂带。
一些景观的变化,比如小行星撞击地球并改变气候,代表了环境的随机变化。而大部分的起伏变化都是物种自身进化的结果。之前,我们注意到所有物种都存在于与其他物种的复杂关系网络中:掠食者、猎物、共生关系、寄生关系等。随着物种在进攻与防御、合作与竞争之间展开军备竞赛,一个物种的进化改变会引发其他物种适合度的连锁反应。
为了搜索景观,我们可能会先选择一个随机的起点,然后运用以下规则:向任意方向迈出一步;如果这一步让你向上走了,就以那里为起点再随意走一步。如果没有让你向上走,则回到之前的位置再试一次。可以想象,如果你的起始点在一个山谷里,你最初可能会在谷底随意地移动。但你最终还是会找到一条向上的路径,爬上最近的山峰。这个规则被称为适应性步行(adaptive walk,见图9-7)。28虽然适应性步行在攀登单个山峰方面是有效的,但它有一个重要的局限性,即一旦你到达山顶就会停下来,被困在一个局部的最大值上。也许在离山谷不远的地方有一个更高的山峰,但是你永远也找不到,因为你必须先下山才能到达那里。这种适应性步行甚至可能使你困在场地中间的一个小山丘上。
图9-7 适应性步行
另一种策略是想象你有一个非常强大的弹簧跳板。当你按下弹簧跳板上的一个按钮时,它会在一个随机的距离内向一个随机的方向把你发射出去。因此,你会连续按下按钮,希望降落在一个较高的位置,这种策略被称为随机跳跃(见图9-8)。与适应性步行相比,随机跳跃的优势在于,你可以跳过中间的山谷,从低谷跳到高峰。然而,它也有一个缺点,那就是你可能会发现自己掉进了一个死亡谷。因此,随机跳跃是一种比适应性步行风险更高的策略,因为适应性步行至少可以让你远离最低的低地并躲开毒雾。此外,随机跳跃也面临着要花很长的时间才能找到真正的高峰的问题。我们都知道,山体大致呈锥形。如果把圆锥体水平切成两半,圆锥体下半部分的表面积总是大于上半部分的表面积。因此,更多的景观表面区域都将是低适合度区域,而非高适合度区域,平均而言,随机跳跃将使你进入低适合度点,偶有幸运的例外情况。对于任何一个正在寻找适合度景观的人来说,即使是找到一个适合度高的点,总有更多的方法让你变得更糟,而不是更好。用丹尼特的话来说,在一个设计空间中,好的设计的数量总是“少得可怜”。
图9-8 随机跳跃
到目前为止,我们似乎面临着霍布森(Hobson)的选择。我们必须选择一种低风险,但不太可能让我们达到非常高的峰值的策略,或是一种高风险,有可能把我们带到一个高峰,但更有可能把我们带到毒雾之中的策略。
接下来,让我们尝试一下将这两种选择混合在一起的算法,这种算法采用适应性步行,以使我们在景观中爬得越来越高,同时也提供一些随机跳跃,以防止我们被困在局部的高峰上(见图9-9)。29我们还将权衡随机跳跃与较短距离的跳跃(跳跃距离越长,发生的概率越低),这仍然会帮助我们避免陷入局部的高峰,但降低了落入一个非常低的山谷的可能。
图9-9 适应性步行和随机跳跃的混合
更进一步讲,如果不是只有一个旅行者,而是有一大群旅行者来帮助我们探索景观呢?如果站在“上帝之眼”的视角,每个徒步旅行者在巨大的地形上看起来就像一个小黑点,而当一大群徒步旅行者都在寻找更高的山峰时,他们看起来就像一片乌黑的云。30我们会看到一片乌云缓缓爬上山坡,每个人都在进行适应性步行。最终,随着这一大群徒步旅行者展开探索,这片云将会出现在局部的高原上并随机扩散到周围。当他们继续适应性步行时,一些徒步旅行者将从“瑞士奶酪孔洞”中消失,但大多数会在局部的高原周围散布开来。我们偶尔也会看到这群人中出现了几个跳跃者,他们降落在远离这群人主体的地方。像高级侦察兵一样,这些跳跃者将在景观中寻找新的路线。一些跳跃者会从高原边缘跳跃到下面的毒雾中,一些人可能会偶然发现一条新路线,也有一些人会发现克拉奇菲尔德所说的那个门户陆桥,带他们穿过低适合度的山谷,进入一个新的高适合度的高原。
截至这里,我们就得到了一个两全其美的结果。大部分徒步旅行者采用了相对风险较低的、在景观中行进的适应性步行。也有一些徒步旅行者分散在离中心更远的地方,还有一些侦察兵拿着真正的传单,在远离人群的地方搜索。这种策略不可避免地会淘汰一些徒步旅行者,但也更有可能找到景观的高适合度区域,而不会陷入局部的高原。
这种在群体中分散赌注的行为正是进化所做的,每个生物都可以被认为是一个徒步旅行者。复制过程为适应性步行提供了动力。如果高适合度的徒步旅行者倾向于将他们的模式与其他高适合度徒步旅行者重新组合,并拥有更多的后代,那么低适合度的徒步旅行者往往会在更高的海拔地区增多,而在低海拔地区减少。但是,变异(生物学中是通过杂交和突变)确保了徒步旅行者遍布整个景观。大多数的徒步旅行者将在同一地区聚集在一起——这是一件好事,因为如果徒步旅行者还活着,他们至少知道自己是在毒雾之上。并且如前所述,下山的路总是比上山的路多,至少也会有一些离群者提供一些寻找更高的高地的新方法。
如果外围的侦察兵确实找到了一条新的上升路径,比如说通过一个门户陆桥到达一个新的高适合度区域,那么高适合度将意味着它们将更快地繁殖,在新的高适合度区域创造一片新的种群云。从上帝的视角看,我们会看到高原上嗡嗡作响的种群云——换句话说,是一个新物种。
这种由变异带来的赌注分散,不仅对发现提高适合度的新方法至关重要,而且对于提高某些徒步旅行者在环境发生变化时存活下来的概率也至关重要。大多数徒步旅行者可能正生活在一个不错的高适合度的高原上,突然景观发生了急剧变化,他们所在的高原坍塌了,唯一剩下的就是那些在更远处的侦察兵了,他们必须重建队伍。同样,一些之前在低适合度地区的侦察兵可能会突然发现,随着景观的变化,他们会到达一个新的、更高的海拔。这是遗传多样性在种群中所起的重要作用:如果你不把赌注分散到整个景观范围内,当环境突然发生变化时,你就有可能失去一切。
通过创建跳跃长度的扩展,进化解决了约翰·霍兰德所说的探索与开发之间的紧张关系。32如果进化发现了一个高适合度的高原,大多数种群就会聚集在该地区繁殖和生长,从而利用其好运及它已经发现的成功适应。但也总会有一些徒步旅行者在更远处的黑暗中跌跌撞撞,寻找上山的新方法,以防范“过度适应”。
有趣的是,霍兰德已经证明,进化会自动在探索与开发之间取得正确的平衡。当情况良好时,也就是在找到一个高原时,进化将按比例投入更多的人口或族群资源用于开发。但是,当情况变得糟糕时,也就是当山谷中的人口或个体减少时,进化就会将更多的资源用于探索。每当进化占据了适合度景观的一个新部分,它就会押注于对未知事物的采样。就像任何下注者一样,随着进化得到更多的信息,它也想对看起来最有希望的赌注加码。霍兰德研究出了平衡开发与探索的最佳方法,并证明了进化非常接近于达到最优均衡。33进化是一个赌徒,一个胜算很大的赌徒。