NeuroEvolution:NEAT 算法创新数字

NeuroEvolution: NEAT algorithm innovation numbers

我一直在阅读增强拓扑的 NeuronEvolution,这件小事一直困扰着我。在阅读 Kenneth Stanley 关于 NEAT 的论文时,我在这里看到了这个数字:

第一次突变时创新数从 1,2,3,4,5,6 变为 1,2,3,4,5,6,7。

在第二个上,它从 1,2,3,4,5,6 变为 1,2,3,4,5,6,8,9。

我的问题是为什么它跳过数字 7 而直接上升到 8?我没有找到任何与删除创新号相关的内容。

第二个图也是一样,Parent 1 是怎么丢失 6,7 的,Parent 2 的第 8 个基因去了哪里?

创新号(我将简称为 IN)是一种特定结构的标签。因此,从 1 号神经元到 2 号神经元的连接将具有 IN,例如1 并且所有具有该连接的网络都会将此连接标记为 IN 1。创建新连接时(通过添加连接突变或通过添加节点突变),首先检查 [=20= 中是否存在这样的连接] 的 IN。如果已经存在这样的连接,则使用它的 IN。如果不是,则增加 IN 计数器,新连接获取此新 IN 并存储在数据库中。

在上半部分的第一个图中,从神经元 3 到神经元 5 添加了一个新连接。如果这是整个种群中出现的第一个这样的连接,则增加 IN 计数器并使用这个新连接IN 用于该连接。如果它已经发生在别处,则使用它的 IN 而不是创建一个新的。可能是这两种情况中的任何一种,我们不知道其他人的情况。恰好连接 3->5 有 IN 7.

现在,在第一个图的底部,你在神经元 3 和 4 之间添加了一个神经元 6,这意味着你添加了连接 3->6 和 6->4。同样,您首先询问 "Is there an IN for connection 3->6 in the database?" 如果是,则使用该 IN,如果不是,则增加计数器。另一个连接也是如此。在该图中,您可以想象所有这些新连接都是新连接,因此在上部,IN 计数器为 6,对于尚未遇到的新连接,您增加了 IN 计数器并将 7 分配给连接.然后底部发生了,有两个全新的连接,所以你将 IN 计数器增加到 8 和 9。在底部,没有连接 3->5 有 IN 7,所以这就是 IN 7 不是的原因那里。

关于第二个图,它只是一个例子,展示了当有不相交的INs时交叉是如何工作的。 parents 只是这样,为了举例。但是,他们本可以很容易地达到这种状态。想象一下 parent 1,在进化的某个早期时间点,只有 IN 1 到 5,而 5 是迄今为止最新的 IN。然后,在群体中的其他地方,在神经元 5 和 4 之间添加了一个新的神经元(第 6 号),即创建了新的连接 5->6 和 6->4。由于尚未遇到此类连接,IN 计数器增加到 6 和 7。然后,在此之后,通过添加新连接 1->8 来改变 parent 1。由于这也是新的,因此分配了新的 IN 8。