NEAT 的突变何时发生?
When do mutations in NEAT occur?
我通读了 NEAT paper,现在我理解了算法。
但是有一件事我还不清楚。突变何时发生以及如何发生?是加节点还是加连接变异怎么选择呢?此外,如何选择网络中发生突变的位置(在哪些连接之间)?
首先:NEAT 论文非常广泛。它没有给出很多具体的实现。但在大多数 GA 实施中,突变发生在之后 从父基因组创建新基因组。
在开始学习 NEAT 之前,请确保首先研究遗传算法的工作原理。
在大多数情况下,某种变异发生的几率在变异方法中是均匀分布的。例如,如果您有 3 个变异方法(add_node、add_conn 和 mod_weight)和 mutationRate = 0.3
,那么这些方法中的每一个都有 0.1
的机会被执行在基因组上。
有时无法添加连接,因此添加节点可能有更高的机会被执行。
突变在网络中的位置也是随机的。突变总体上是随机的。
但是你问的问题很宽泛。您引用的论文仅说明了如何实现网络拓扑的有效神经进化。它为您自己的项目奠定了基础。如何实现它完全取决于您(以及最适合网络的方式!)
我通读了 NEAT paper,现在我理解了算法。
但是有一件事我还不清楚。突变何时发生以及如何发生?是加节点还是加连接变异怎么选择呢?此外,如何选择网络中发生突变的位置(在哪些连接之间)?
首先:NEAT 论文非常广泛。它没有给出很多具体的实现。但在大多数 GA 实施中,突变发生在之后 从父基因组创建新基因组。
在开始学习 NEAT 之前,请确保首先研究遗传算法的工作原理。
在大多数情况下,某种变异发生的几率在变异方法中是均匀分布的。例如,如果您有 3 个变异方法(add_node、add_conn 和 mod_weight)和 mutationRate = 0.3
,那么这些方法中的每一个都有 0.1
的机会被执行在基因组上。
有时无法添加连接,因此添加节点可能有更高的机会被执行。
突变在网络中的位置也是随机的。突变总体上是随机的。
但是你问的问题很宽泛。您引用的论文仅说明了如何实现网络拓扑的有效神经进化。它为您自己的项目奠定了基础。如何实现它完全取决于您(以及最适合网络的方式!)