我一直在阅读NEAT(增强拓扑的神经进化)的工作原理,我已经掌握了它的主要思想,但是困扰我的一件事是如何将不同的网络分成物种。我已经研究了算法,但是对我来说没有太大意义,而且我阅读的论文也不能很好地解释它,因此,如果有人可以解释每个组件的含义及其作用,那非常感谢。
两个等式是:
$ \ delta = \ frac {c_ {1} E} {N} + \ frac {c_ {2} E} {N} + c_ {3} .W $
$ f_ {i} ^ {'} = \ frac {f_i} {\ sum_ {j = 1} ^ {n} sh(\ delta(i,j))} $
答案 0 :(得分:1)
NEAT中的规范类似于其他进化算法使用的适应度共享。这个想法是要对类似的解决方案进行惩罚,给更多的人带来压力。
delta项是两个解决方案之间距离的度量。这里使用的距离测量专门用于NEAT使用的可变长度基因组。小增量值表示更多类似的解决方案。
如果两个解决方案之间的距离分别大于或小于给定阈值,则在NEAT中实现的共享函数将得出0或1的值。将每个解决方案与候选总体中的其他解决方案进行比较,并通过结果共享函数值的总和来修改适合度。如果某个解决方案与总体中的其他几种解决方案相似,那么修改后的适应度将大大降低。