在 NEAT 中,为从相同连接基因创建的节点基因提供相同的 ID 是否是个好主意?

人工智能 整洁的 神经进化 交叉运营商
2021-11-04 04:16:27

我是否必须防止从同一连接基因创建的节点具有不同的 ID/创新编号?在此示例中,节点 6 是通过从节点 3 到节点 4 的连接创建的:

节点突变示例

在该特定节点已经全局创建的情况下,给它相同的 ID 进行交叉是否有用?因为 NEAT 的目标是通过做历史标记来做有意义的交叉。Kenneth O. Stanley 的论文在第 108 页说:

[...] 通过保留当前一代发生的创新列表,可以确保当同一结构通过同一代的独立突变出现不止一次时,每个相同的突变被分配相同的创新编号.

为什么我们不对节点基因也这样做呢?

1个回答

在 NEAT 中,节点的创新并不直接影响进化。只有连接基因及其创新才重要。因此,您可以简单地将整数作为每个基因组/网络下的 ID。

--EDIT--(完整推理)

在原始论文中,明确指出来自更好基因组的节点是在交叉期间获取的,然后只有连接被交叉(以某种方法),因此连接的创新数。NEAT 以连接为中心,不太关心不断发展的节点。

再加上基本的神经网络理论,节点在神经网络中永远不会重要,因为所有的计算和学习都发生在连接中。考虑一个常规的前馈网络。您只关心权重矩阵,它是连接而不是节点的属性,尽管两者都存在。同样,在 NEAT 生成的网络中,节点无关紧要,因为所有学习都发生在这些节点的连接方式和网络的权重中。

此外,节点列表可以很容易地从连接列表中导出,因此标记连接就足够了。