NEAT物种算法是如何工作的?

7
我一直在了解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))}$

原始文件


2
即使发布后,也应明确指出此处不支持LaTex渲染... - desertnaut
啊,对不起,我把它放在这里的原因是因为我要用它来编写一个使用NEAT的人工智能程序。另外,考虑到LaTex的问题,我对它还很陌生,所以任何关于它的帮助都将是极好的。 - Aguy
1
对于某些新手来说,不了解某些东西的工作原理是完全可以的;但是,如果你发布的内容看起来像乱码,那就不好了。即使假设你的问题是相关的(实际上并不是),最好还是直接从论文中复制方程的图像... - desertnaut
1
我的回答可能对你有所帮助。一种常见的物种分化方法是在基因组上使用k-means(这可以通过NEAT编码信息的方式进行比较)。https://dev59.com/Cazka4cB1Zd3GeqP6lL1#51837691 - Pablo
1个回答

6

在NEAT中,物种形成类似于其他进化算法使用的适应度共享。其想法是惩罚相似的解决方案,从而创建向更多样化人口的压力。

Delta术语是两个解决方案之间距离的度量。此处使用的距离度量专门针对NEAT使用的可变长度基因组。小的Delta值表示更相似的解决方案。

在NEAT中实现的共享函数会在两个解决方案之间的距离大于或小于给定阈值时产生0或1的值。每个解决方案都与候选人口中的每个其他解决方案进行比较,并且适应度通过生成的共享函数值之和进行修改。如果一个解决方案与人口中的几个其他解决方案相似,则其修改后的适应度将显著降低。


谢谢,如果您不介意回答,我还有三个问题。1. 在交叉过程中,后代是否继承了更适应的父母的结构和权重,除了通过历史标记获得的额外连接之外?2. 根据我所读到的Delta-fitness函数,“W”是匹配基因之间平均权重差异。这是否意味着计算所有对齐的连接的权重差异,然后取平均值?3. 在计算调整后的适应度时,您是将其与每个神经网络进行比较,还是仅与其物种组中的神经网络进行比较? - Aguy
3
跨界有不同的实现方式。通常会随机继承共同的特征,然后继承最适合的独特特征,只有在某些情况下才继承较弱者的特征。 - Pablo
2
公平警告,我熟悉NEAT的思想,但不熟悉具体实现。1. 我相信Pablo是正确的。2. 我也认为你的评估是正确的,它只是匹配连接权重差的平均值。3. 你要将其与种群中的每个其他解决方案进行比较,直到你比较它们之后才能知道解决方案是否属于同一物种。如果两个解决方案属于不同的物种,则将它们进行比较将产生共享函数值为0,从而不会对修改后的适应度产生任何改变。 - Matt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接