Neural network 在NEAT中,如果相同的连接以前被拆分过,新节点如何编号?

Neural network 在NEAT中,如果相同的连接以前被拆分过,新节点如何编号?,neural-network,evolutionary-algorithm,neat,Neural Network,Evolutionary Algorithm,Neat,我现在正在使用NEAT,关于新创建节点的编号,我有一些问题。我的第一个假设是,每当某个连接(例如由创新编号标识)被拆分时,它应该被拆分为相同的两个连接,并创建相同的新节点。但当满足某些条件时,这似乎会产生奇怪的结果 我有一个非常基本的例子,假设我的起始网络(输入1和2,输出3)由以下连接组成: (1,3)、(2,3) 假设第一个连接已被拆分以创建此网络: (1,4)、(4,3)、(2,3) 然后将(1,3)连接添加回中,以形成以下形式: (1,4)、(4,3)、(2,3)、(1,3) 如果再次拆

我现在正在使用NEAT,关于新创建节点的编号,我有一些问题。我的第一个假设是,每当某个连接(例如由创新编号标识)被拆分时,它应该被拆分为相同的两个连接,并创建相同的新节点。但当满足某些条件时,这似乎会产生奇怪的结果

我有一个非常基本的例子,假设我的起始网络(输入1和2,输出3)由以下连接组成:
(1,3)、(2,3)
假设第一个连接已被拆分以创建此网络:
(1,4)、(4,3)、(2,3)
然后将(1,3)连接添加回中,以形成以下形式:
(1,4)、(4,3)、(2,3)、(1,3)

如果再次拆分(1,3)连接,则不应再次拆分为(1,4)和(4,3),对吗?而是转化为(1,5)和(5,3)

这是否意味着,每当连接被拆分时,必须为新节点提供一个全新的节点号


这不会导致物种数量的大规模、人为爆炸吗?因为基本上一个连接的每个拆分都会创建两个全新的连接?

你是正确的,每当一个连接被拆分时,必须给新节点一个全新的节点id,并且拆分的连接不能再次拆分为(1,4)和(4,3)基因,从而消除现有基因

因此,在[(1,4),(4,3),(2,3),(1,3)]基因型中分离(1,3)连接确实会导致增加(1,5)和(5,3)基因

然而,这并不会导致物种数量的大爆炸。原因如下: 每个连接都分配了一个特定的标识符,称为创新编号。如果相同的突变(分裂连接(1,3))发生在同一代突变阶段内的两个单独基因组中,则产生的连接被分配相同的创新编号

该创新编号用于比较基因组并将其分类为物种。不是两个独立的基因组有多少共同点(如果你是这么想的话)


下面这张图摘自O.Stanley博士论文,它用NEAT说明了交叉操作,不过也很好地说明了对齐和比较两个独立基因组的过程。在将基因组聚类成物种时,也会进行类似的比对和比较


如果你想了解更多关于NEAT物种形成方法的信息,请参考O.Stanley的(这是最接近现有的NEAT官方规范的),尤其是第3.3章

如果你想了解更多关于神经进化的知识,请看以下内容


希望这能有所帮助,如果还有什么不清楚的地方,请随时询问。=)

谢谢你的意见!你有没有找过?删除了我之前的评论,因为我不幸误读了你问题中的一个细节,我没有正确区分node_id和innovation_id,这可能会被误解。也请原谅我以后的回答!那天出了点事,到家时我把这个问题忘了。