当添加新的节点基因时,是分配全局编号还是本地编号?Neat

我正在尝试用Python实现一个NEAT(增强拓扑的神经进化)算法,但在观看多个指南和阅读原始论文后,我还有一个问题。当创建一个新的节点/神经元时,它的节点基因是分配一个全局编号还是一个本地编号?

论文听起来像是全局编号,但如果真是这样的话,如果节点创建的顺序不同,即使连接相同,连接基因也可能会有不同;然而,如果是本地编号,那么根据神经网络的不同,连接基因的来源和去向/输入输出连接基因将会有所不同。希望这有意义,如果没有,请告诉我,任何帮助都将不胜感激!


回答:

我甚至不确定“本地编号”是否有意义!创新编号的想法正是为了让我们能够轻松地比较不同基因组之间的结构。

当创建新节点时,通常一个连接会被分成两个,在中间添加一个新节点。这个事件会被记录在日志中,因此如果后来另一个不同的基因组尝试通过分裂相同的连接来创建一个新节点,那么将使用相同的创新编号。

当然,通过一种迂回的方式,可以创建两个结构相同但创新编号不同的基因组。这是被接受的。

我添加了一个这样的例子图表,让我知道你是否在考虑不同的情况:

enter image description here

请注意,一些实现对连接和节点都有创新编号,而另一些实现仅对节点有这样的编号,连接完全由它们连接的节点来描述。在第一种情况下,也可能出现具有不同创新编号的等效连接,但这也没问题。关于这些更细微的细节一直有些争论,但在实践中,似乎影响甚微,如果有的话。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注