SharpNEAT - 神经网络的进化
NEAT(神经网络增强拓扑结构的演化)是由Kenneth O. Stanley设计的一种进化算法。
SharpNEAT是一个用C#编写的完整NEAT实现,目标平台为.NET 8。
什么是SharpNEAT?
SharpNEAT提供了一个进化算法(EA)的实现,其特定目标是演化神经网络群体以解决某个目标问题任务(称为目标函数)。
该EA使用突变、重组和选择等进化机制,搜索能"解决"给定问题任务的神经网络,每个神经网络都会被分配一个代表其解决方案质量的适应度分数。
一些示例问题任务:
- 如何控制简单二足或四足动物的四肢使其行走。
- 如何控制火箭保持垂直飞行。
- 找到实现某些期望数字逻辑(如多路复用器)的网络。
值得注意的是,NEAT和SharpNEAT同时搜索神经网络结构(网络节点集合及其连接方式)和连接权重。这与尝试为给定结构找到良好连接权重的算法(如反向传播)不同。
SharpNEAT是一个框架或"部件套件",有助于进化计算尤其是神经网络进化的研究。该框架提供了一些示例问题任务,展示了如何使用它来产生一个完整的工作EA。
该项目旨在模块化,例如,可以使用替代的基因编码或全新的进化算法与SharpNEAT提供的其他部分/类一起使用。为这种模块化实验提供便利是SharpNEAT的主要设计目标之一,通过在SharpNEAT架构中围绕关键概念(如"基因组"(基因表示/编码)和"进化算法"(突变、重组、选择策略等))进行抽象来实现。
开发SharpNEAT的动机源于对生物进化的更广泛兴趣,以及对神经进化在解决问题和问题复杂性水平方面能产生令人满意解决方案的限度的好奇。
更多信息/链接
- SharpNEAT YouTube频道
- SharpNEAT 4:源代码浏览