我通读了NEAT paper,现在我理解了算法。
但有一点我还不清楚。突变何时发生?它是如何发生的?如何选择添加节点还是添加连接变异?此外,如何选择网络中发生突变的位置(在哪些连接之间)?
答案 0 :(得分:2)
首先:NEAT论文非常广泛。它没有提供很多具体的实施。但是在大多数GA实施中,在从父代基因组中创建新基因组后发生突变。
在进入NEAT之前,请务必先研究遗传算法的工作原理。
在大多数情况下,发生某种突变的可能性在突变方法中均匀分布。例如,如果您有3种变异方法(add_node,add_conn和mod_weight)和mutationRate = 0.3
,则每种方法都有0.1
在基因组上执行的机会。
有时无法添加连接,因此添加节点的可能性更高。
网络中突变的位置也是随机的。突变总体上是随机的。
但是你问的是非常广泛的问题。您引用的论文仅说明了如何实现有效的网络拓扑神经进化。它构成了您自己项目的基础。你如何实现它,完全取决于你(以及最适合网络的东西!)