为什么需要遗传算法中的适应度缩放?

Why do you need fitness scaling in Genetic Algorithms?

阅读 David E. Goldberg 的书 "Genetic Algorithms",他提到了遗传算法中的适应度缩放。

我对这个功能的理解是限制最强的候选者,让他们不会为了繁殖而淹没池子。

为什么要限制最佳候选人?在我看来,尽早拥有尽可能多的最佳候选人将有助于尽快找到最佳解决方案。

如果你早期的最佳候选人后来证明是进化的死胡同怎么办?比如说,你的早期最适者候选人是强大的大代理人,他们支配着更小、更弱的候选人。如果所有较弱的动物都被淘汰,你就会被大型野兽困住,这些野兽可能对环境的某个方面有弱点,而弱者可以应对:想想小行星撞击后的恐龙与小型哺乳动物。或者,在 GA 中更有可能出现这种情况的更具确定性的环境中,较弱的候选者可能距离探索适应性景观的全新富有成果的部分只有一个或一小部分进化步骤:想象一下弱小的小动物进化飞行, 开辟了一个全新的可能性世界,大型野兽很可能永远不会触及。

潜在的问题是,您的早期最强候选者实际上可能处于或接近适应度 space 的 局部最大值 ,这可能很难得出。可能较弱的候选人实际上更接近 全球 最大值。

无论如何,通过积极修剪您的种群,您可以减少种群的 遗传多样性 ,这通常会减少您覆盖和限制的搜索 space您搜索这个 space 的速度有多快。例如,也许你的最佳候选人 相对接近全局最佳解决方案,但仅仅近亲繁殖该组可能不会使其更接近它,​​你可能必须等待足够多的随机阳性发生突变。然而,也许您想要剔除的弱候选基因中的某些基因本身并没有多大帮助,但当与强候选基因的基因杂交时,可能会导致进化上的巨大飞跃!想象一下,比如说,一个人类与蜘蛛 DNA 杂交。

@sgvd 的回答有道理,但我想详细说明一下。

首先,我们需要定义适合度缩放的实际含义。如果这意味着只是将适应度乘以某个因子,那么这 不会 改变种群中的关系 - 如果最好的个体的适应度是最差的个体的 10 倍,在这样的乘法之后这是仍然正确(除非你乘以零,这没有任何实际意义)。因此,更合理的适应度缩放是适应度值的仿射变换:

scaled(f) = a * f + b

即这些值乘以某个数字 并且 偏移另一个数字,向上或向下。

适应度缩放仅对某些类型的 selection 策略有意义,即 selection 概率与个体适应度成正比的那些 1.

健身缩放实际上扮演着两个角色。第一个仅仅是实用的——如果你想让概率与适应度成正比,你需要适应度为正。因此,如果您的原始适应度值可能为负(但受以下限制),您可以对其进行调整,以便从中计算概率。 示例:如果您的健身值在 [-10, 10] 范围内,您只需将这些值加 10 即可获得所有正值。

正如您和@sgvd 已经提到的,第二个作用是限制最强解决方案压倒较弱解决方案的能力。最好的说明是用一个例子。

假设您的原始适应度值给出范围 [0, 100] 中的值。如果你这样离开,最差的人被 selected 的概率为零,而最好的人的概率比最差的人高 100 倍(不包括真正最差的人)。但是,让我们将比例因子设置为 a = 1/2, b = 50。然后,范围被转换为 [50, 100]。马上,两件事发生了:

  1. 即使是最差的人也有非零概率被 selected。
  2. 最好的人现在 select被教育的可能性是最差的人的 2 倍。

探索与开发

通过设置比例因子,您可以控制算法是否会比开发进行更多探索,反之亦然。缩放后的值 "compressed"2 越多,进行的探索就越多(因为最好的个体可能 select ed 与最差的相比会有所减少)。反之亦然,"expanded"2 的值越多,就会进行越多的剥削(因为最好的个体可能 selected相比最差的会有所增加)。

其他select离子策略

正如我在开头所写的那样,适应度缩放仅对 selection 策略有意义,这些策略从适应度值中按比例得出 selection 概率。然而,还有其他 select 离子策略不是这样工作的。

排名selection

排名 selection 与轮盘 selection 相同,但概率的来源数字不是原始适应度值。相反,整个种群按原始适应度值排序,排名(即排序列表中的位置)是您从中得出 select 离子概率的数字。

这完全消除了存在一两个 "big" 个人和很多 "small" 个人时的差异。他们只会被排名。

锦标赛selection

在这种类型的 selection 中,您甚至根本不需要知道绝对适应度值,您只需要能够比较其中的两个并判断哪个更好。 select 一个使用锦标赛 selection 的人,你从人群中随机挑选一些人(这个数字是一个参数),然后你选出最好的一个。只要 select 有足够多的人,你就重复一遍。

在这里,您还可以通过锦标赛的规模来控制探索与利用的事情 - 锦标赛规模越大,最优秀的个人参加锦标赛的机会就越大。


1 这种 selection 策略的一个例子是经典轮盘 selection。在这个 selection 策略中,每个人都有自己的轮盘部分,其大小与特定个人的适应度成正比。

2 假设原始值为正,缩放后的值会随着 a 下降到零和 b 上升而被压缩。扩张则相反。