NEAT 具有不同创新数的两个相同基因

NEAT Two Identical Genes with Different Innovation Numbers

在有关 NEAT 算法的论文中,作者指出

A possible problem is that the same structural innovation will receive different innovation numbers in the same generation if it occurs by chance more than once. However, by keeping a list of the innovations that occurred in the current generation, it is possible to ensure that when the same structure arises more than once through independent mutations in the same generation, each identical mutation is assigned the same innovation number.

这是有道理的,因为您不希望相同的基因以不同的创新数字结束。如果他们这样做了,那么在交叉两个具有相同基因但不同创新数的基因组时就会出现问题,因为你最终会得到一个后代,每个后代都有每个 parent 的每个基因的副本,创建相同的连接两次。

但我不明白的是,如果两个基因之间发生突变,然后在下一代 世代中发生相同的突变,会发生什么情况?在这篇论文中,很明显,只有当前一代的突变列表被保留以避免 "explosion of innovation numbers" 但没有具体说明如果相同的突变发生 across[=21] 会发生什么=]不同世代。

你们是否保留了一个全球基因对列表及其相应的创新编号来防止这个问题?为什么这篇论文只规定如果同一突变发生在同一代人会发生什么,而没有考虑 cross-generational 突变的情况?

是有原因的吗?

没有。您不会保留基因对的全局列表。如果你想避免发生相同的突变,你可以。但我想指出一点:没关系。发生相同突变的唯一影响是你会做一些不必要的计算,你的全球创新数会增加。

然而,对于未来的基因组,它们不可能有两个创新编号是相同的创新。

Matching genes are inherited randomly, whereas disjoint genes (those that do not match in the middle) and excess genes (those that do not match in the end) are inherited from the more fit parent

所以当两个相同的创新出现时,它们要么是不相交的,要么是多余的基因。这些将从更合适的 parent 那里继承,并且只有一个 parent 可以更合适,所以后代永远不会有相同的创新基因。