我一直在阅读有关增强拓扑的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呢?我没有发现任何与删除创新数字相关的内容。
在第二个数字上,父母1如何失去6,7,第8个基因在父母2中的位置是什么?
答案 0 :(得分:5)
创新编号(我将简称IN)是一种特定结构的标签。因此,从神经元编号1到神经元编号2的连接将具有IN,例如1,具有该连接的所有网络都将此连接标记为IN 1.当创建新连接时(通过添加连接变异或添加节点变异),首先检查在“数据库”中是否存在此类连接。插件。如果已经存在这样的连接,则使用其IN。如果不是,则IN计数器增加,新连接获得新的IN并存储在数据库中。
在上半部分的第一个图中,从神经元3到神经元5添加了一个新连接。如果这是第一个出现在整个群体中的连接,则增加IN计数器并使用这个新的IN那个联系。如果它已经发生在其他地方,则使用其IN而不是创建新的IN。可能是这些情况中的任何一种,我们不知道其他人的情况如何。恰好,连接3-> 5具有IN 7。
现在,在第一个图的底部,您在神经元3和4之间添加神经元6,这意味着您添加连接3-> 6和6-> 4。再次,您首先询问“数据库中是否存在用于连接3-> 6的IN?”如果是你使用IN,如果不是,你增加计数器。其他连接也是如此。在该图中,您可以想象所有这些新连接都是新连接,因此在上部IN计数器为6并且使用新连接时尚未遇到,您增加了IN计数器并将7分配给连接。然后底部发生,有两个全新的连接,所以你将IN计数器增加到8和9.在底部,没有连接3-> 5,其中有IN 7,所以这就是IN 7的原因是不在那里。
关于第二个图,它只是一个示例,显示当存在不相交的IN时交叉是如何工作的。为了这个例子,父母只是这种方式。但是,他们可以很容易地进入这个状态。想象一下,在进化的某个早期时刻,父母1只有INs 1到5和5是迄今为止的最新IN。然后,在群体中的其他地方,添加神经元5和4之间的新神经元(No.6),即创建新的连接5-> 6和6-> 4。由于尚未遇到这种连接,因此IN计数器增加到6和7.然后,在此之后,通过添加新的连接1-> 8使父母1突变。由于这也是新的,因此分配了新的IN 8。