当添加一个新的节点基因时,是给它一个全局的还是局部的新编号?整洁的

When a new node gene is added, is it given a global or local new number? Neat

我正在尝试在 python 中实现一种 NEAT(增强拓扑的神经进化)算法,但在观看了多个指南并阅读了原始论文之后,我留下了一个问题。当一个新的node/neuron被创建时,它的节点基因是被赋予一个全局编号还是一个局部编号?

这篇论文听起来像是全局数字,但如果是这样的话,如果节点创建的顺序不同,可能会出现错误,即使连接相同,连接基因也不同;但是,如果是本地的,则根据 NN 的不同,coming from and going to connection gene/the in out connection 基因会有所不同。希望它有意义,如果没有让我知道任何帮助,我们将不胜感激!

我什至不确定 "local number" 是否有道理!创新数的概念正是为了方便我们比较不同基因组之间的结构。

创建新节点时,通常将一个连接一分为二,在中间添加一个新节点。此事件存储在日志中,因此如果稍后在不同的基因组上尝试通过拆分相同的连接来创建新节点,则会使用相同的创新编号。

当然,通过一些迂回的方式,可以创建两个结构相同但创新数不同的基因组。这简直是​​接受了。

我正在添加一个包含这样一个示例的图表,如果您正在考虑另一种情况,请告诉我:

请注意,某些实现具有连接和节点的创新编号,而其他实现仅具有节点的此类编号,连接由它们连接的节点完全描述。在第一种情况下,也有可能最终得到与不同创新数的等价联系,但这也很好。围绕这个更精细的细节存在一些争论,但在实践中似乎影响很小。