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

我在YouTube和互联网上查找了NEAT的相关信息,但只能找到使用NEAT的项目,除了维基百科的条目(仅在介绍中说明了它是什么,而且非常令人困惑)外,我仍然不知道它是什么,它是一个库吗?是一种神经网络吗?还是一种训练神经网络的方法?如果这是一个显而易见的问题,我深表歉意。


回答:

NEAT,或称增强拓扑的神经进化,是由Kenneth O’Stanley [1] 引入的一种基于种群的进化算法。

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

复杂化

初始种群中的网络是最简单的(甚至可能没有任何连接,输入和输出神经元未连接),算法只会增加新的结构元素(神经元、连接)。这样,生成的网络往往非常小。

通过历史标记避免竞争惯例

在普通的进化算法中,很容易发生两个个体编码相同(或非常相似)的行为,但基因型却大不相同。这被称为竞争惯例。当这些个体进行交叉时,它们的后代很可能比任何一个父本都要差。NEAT通过保留新结构元素的历史标记来解决这个问题。当创建一个新的结构元素(通过结构变异)时,会分配一个创新编号(所有产生相同元素的变异,即使在不同的个体中,也会分配相同的编号)。然后,当两个个体进行交叉时,它们的基因型会以对应创新编号匹配的方式对齐,只交换不同的元素。

物种化和适应度共享

NEAT使用物种的概念。也就是说,种群被细分为几个个体组,称为物种。这种细分是基于个体之间差异性的计算,计算方式与交叉时使用的基因型对齐方式类似。然后,不同物种个体之间的交叉概率远小于物种内部的交叉。通过促进更相似父母的交配,子代不太可能比父母差得多,因为父母本身就是兼容的。

此外,在物种内部,适应度在个体之间共享。这有两个目的。(1)它保护个体免受变异的影响——当发生变异时,适应度通常会很低,但由于有适应度共享,个体有时间优化自身(权重)以适应这种新的结构变化。(2)促进多样性,因为物种越大,适应度共享就越多,物种成员的适应度就越低。

强烈推荐阅读原始论文 [1]。算法描述得非常好。此外,还有一个NEAT用户页面,上面有更多论文链接以及NEAT的实现和应用。


[1] Kenneth O. Stanley 和 Risto Miikkulainen。通过增强拓扑进化神经网络。进化计算,10(2):99-127,2002年。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注