什么是遗传漂移以及它如何影响 EA?

What is genetic drift and how does it affect EAs?

我在一些进化计算的文章中看到,由于遗传漂移现象,算法通常会收敛到一个单一的解决方案。网上的内容很多,但是我对这个概念理解不深。我需要简单而准确地知道:

为了更好地理解遗传漂变(生物学)的原始概念,建议您阅读this可汗学院的文章。简单地说,你可以把它看作是一种进化现象,其中一个或多个等位基因(基因的版本)的频率由于随机因素(与每个个体的适应性无关)而发生变化。如果种群中最健康的个体不幸被闪电击中并在繁殖前死亡,他将不会留下后代(尽管他的适应度最高!)。这是遗传漂变的一个例子(我知道有点荒谬)。

现在,在进化算法的特定背景下,this 论文对该主题进行了很好的总结:

EAs genetic drift can be as a result of a combination of factors, primarily related to selection, fitness function and representation. It happens by unintentional loss of genotypes. For example, random chance that a good genotype solution never gets selected for reproduction. Or, if there is a ‘lifespan’ to a solution and it dies before it can reproduce. Normally such a genotype only resides in the population for a limited number of generations.

(Sloss & Gustafson, 2019)

最后,我给大家举一个遗传漂变作用于遗传算法的真实例子。最近,我使用了一种简单的神经进化算法来创建能够玩贪吃蛇游戏 (GitHub repo) 的代理。在我的游戏实现中,苹果出现在屏幕的随机位置。第一次执行进化过程时,我注意到种群在连续几代人之间的最佳适应性有很大波动——总的来说,没有太大改善。因此,我的算法无法收敛到一个好的解决方案。

经过一番调试,我发现这是遗传漂变造成的。由于苹果的产卵位置是随机的,一些不一定是最适者的个体幸运地得到了“容易的苹果”,从而获得了较高的适应度并留下了更多的后代。你看到这里的问题了吗?

假设蛇A比蛇B更擅长游戏,因为它可以向食物移动,而B只是随机移动。现在,假设蛇 A 出现的第一个食物是在屏幕的一角(一个困难的位置),并且 A 在吃了苹果后不久就死了。现在,假设蛇 B 幸运地连续产下 3 个苹果,一个接一个。虽然 B 比 A 更“笨”,但它会留下更多的后代,因为它获得了更大的适应度。 B的后代会“污染”下一代,因为他们很可能会像B一样“笨”

我使用更好的苹果定位算法解决了这个问题(我定义了两个连续苹果的产卵位置之间的最小距离)并通过计算每个个体的最终适应度作为其在几个游戏会话中的适应度的平均值。这大大减少了(虽然没有消除)遗传漂移对我算法的干扰。

希望对您有所帮助。您还可以观看 this 视频(它是葡萄牙语,但提供英文字幕),我在其中解释了我用来制作 Snake AI 的一些策略。