【问题标题】:NEAT Two Identical Genes with Different Innovation NumbersNEAT 两个具有不同创新数的相同基因
【发布时间】:2017-05-20 14:43:13
【问题描述】:

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

一个可能的问题是,如果偶然发生不止一次,相同的结构性创新将在同一代中获得不同的创新编号。但是,通过保留当前一代发生的创新列表,可以确保当同一结构通过同一代的独立突变多次出现时,每个相同的突变被分配相同的创新编号。

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

但对我来说没有意义的是,如果两个基因之间发生突变,然后在下一代中发生相同的突变,会发生什么?在论文中,很明显只保留了当前一代的突变列表以避免“创新数量的爆炸式增长”,但没有具体说明如果相同的突变发生跨越会发生什么不同的世代。

您是否保留了基因对及其相应创新编号的全球列表以防止出现此问题?为什么论文只说明了同一代发生相同突变时会发生什么,而没有考虑跨代突变的情况?

【问题讨论】:

  • 查看 NEAT 用户页面的 General NEAT Methodology FAQs,特别是解决此问题的第 9 个(倒数第三个)。
  • 完美!谢谢!

标签: neural-network genetic-algorithm evolutionary-algorithm


【解决方案1】:

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

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

匹配的基因是遗传的 随机的,而不相交的基因(那些在中间不匹配的)和多余的 基因(最终不匹配的)遗传自更合适的父母

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

【讨论】:

  • 可以不使用创新编号吗?
  • 当然!我的neuro-evolution library 中根本没有使用创新编号。我使用pairing function 为每个连接基因创建一个唯一编号(提供from 索引和to 索引作为输入)。如果两个基因组具有相同的唯一编号:共同基因,否则:多余基因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-22
  • 2021-09-02
  • 2015-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多