什么是NEAT(增强拓扑的神经进化)?

Kar*_*van 11 artificial-intelligence neural-network genetic-algorithm

我已经查看了你在youtube和互联网上的NEAT,但我只能找到使用NEAT的项目,但除了维基百科条目(只介绍它在引言中的内容,并且非常令人困惑),我仍然不知道是什么它是,它是一个图书馆,它是一种神经网络,它是一种训练神经网络的方法吗?对不起,如果这是一个明显的问题.

zeg*_*jan 16

NEAT,或拓扑拓扑的神经演化,是由Kenneth O'Stanley [1]引入的基于人口的进化算法.

该算法基于几个关键特征:

复化

初始种群中的网络是最简单的(直到极端没有连接,使输入和输出神经元保持不连接)并且算法仅添加新的结构元素(神经元,连接).这样,产生的网络往往非常小.

通过历史标记避免竞争约定

在普通的进化算法中,很容易发生两个人编码相同(或非常相似)的行为但具有非常不同的基因型.这称为竞争惯例.当这些人受到交叉时,他们的孩子可能比任何一方都要差.NEAT通过保留新结构元素的历史标记来解决这个问题.当创建新的结构元素时(通过结构突变),它被赋予创新号(并且所有这样的突变产生相同的元素,即使在不同的个体中也被赋予相同的数字).然后,当两个人交叉时,他们的基因型以这样的方式排列,即相应的创新数字匹配并且仅交换不同的元素.

形态和健身分享

NEAT适用于物种的概念.这只是将人口细分为几组个体,称为物种.该细分基于个体的不相似性,所述个体基于其进行交叉时使用的基因型的类似比对来计算.然后跨越不同物种的个体的概率比物种内的交叉小得多.通过促进更多相似父母的交配,孩子不太可能比父母更糟糕,因为父母只是兼容.

此外,在物种内,健身在个体之间共享.这有两个目的.(1)它保护个体免受突变 - 当突变发生时,适应性通常较低,但由于健身共享,个体有时间优化自身(权重)以适应这种新的结构变化.(2)促进多样性,因为物种越大,健身共享的越多,物种的成员就越不适合.

强烈建议您阅读原始论文[1].该算法描述得非常好.此外,还有一个NEAT用户页面,其中包含更多文章的链接以及NEAT的实施和使用.


[1] Kenneth O. Stanley和Risto Miikkulainen.通过增加拓扑来演化神经网络.Evolutionary Computation,10(2):99-127,2002.