(0) 阅读 (1091)

增殖拓扑的神经进化 编辑

词条创建者 匿名用户

增殖拓扑的神经进化

编辑

增殖拓扑的神经进化(NEAT)是一种遗传算法(GA),用于生成不断进化的人工神经网络(一种神经进化技术),由KennethStanley和RistoMiikkulainen于2002年在德州大学奥斯汀分校开发。它改变了网络的加权参数和结构,试图在进化的解决方案的适用性和多样性之间找到一个平衡。它基于三个关键技术的应用:用历史标记跟踪基因以允许拓扑结构之间的交叉,应用物种进化以保持创新,以及从简单的初始结构逐步发展拓扑结构(复杂化)。

增殖拓扑的神经进化的性能

编辑

在简单的控制任务中,NEAT算法通常比其他当代神经进化技术和强化学习方法更快地获得有效的网络。

增殖拓扑的神经进化的算法

编辑

传统上,神经网络拓扑结构是由人类实验者选择的,有效的连接权重值是通过训练程序学习的。这就产生了一种情况,即为了确定适当的拓扑结构,可能需要一个试验和错误的过程。NEAT是一个拓扑和权重进化的人工神经网络(TWEANN)的例子,它试图同时学习权重值和神经网络的适当拓扑结构。为了将网络编码为GA的表型,NEAT使用了直接编码方案,这意味着每一个连接和神经元都被明确表示。这与间接编码方案相反,后者定义的规则允许在不明确表示每个连接和神经元的情况下构建网络,允许更紧凑的表示。NEAT方法从一个只有输入神经元和输出神经元的类似感知器的前馈网络开始。随着进化通过离散的步骤进行,网络拓扑结构的复杂性可能会增加,要么是在连接路径中插入一个新的神经元,要么是在(以前没有连接的)神经元之间建立一个新的连接。

竞争性约定

编辑

当表型中有不止一种表示信息的方式时,就会出现竞争性约定问题。例如,如果一个基因组包含神经元A、B和C,并以[ABC]表示,如果这个基因组与一个相同的基因组(在功能方面)杂交,但有序的[CBA]杂交将产生缺少信息的子代([ABA]或[CBC]),实际上在这个例子中,1/3的信息已经丢失。NEAT通过使用一个全局创新数来跟踪基因的历史来解决这个问题,这个创新数随着新基因的加入而增加。当添加一个新的基因时,全局创新号码被增加并分配给该基因。因此,号码越大,该基因就越是最近添加的。对于一个特定的世代,如果一个相同的突变发生在一个以上的基因组中,它们都会被赋予相同的号码,然而除此之外,突变号码将无限期地保持不变。这些创新号码使NEAT能够匹配出可以相互交叉的基因。实现KenStanley的原始实现是在GPL下发布的。它与GNU方案解释器Guile集成。这个NEAT的实现被认为是传统的NEAT算法实现的基本出发点。扩展rtNEAT2003年,Stanley设计了一个NEAT的扩展,允许进化实时发生,而不是像大多数遗传算法那样通过世代的迭代进行。

增殖拓扑的神经进化

其基本思想是将种群置于不断的评估之下,对种群中的每个个体都有一个生命周期的计时器。当一个网络的计时器过期时,它当前的适配度会被检查,看它是否接近种群的底部,如果是,它就会被抛弃,并由两个高适配度的亲本培育的新网络取代。为新网络设置一个定时器,并将其放入种群中,参与正在进行的评估。rtNEAT的xxx个应用是一个名为"神经进化机器人操作者"的视频游戏,即NERO。在游戏的xxx阶段,单个玩家在"沙盒"中部署机器人,并将它们训练成一些所需的战术学说。一旦一组机器人被训练出来,游戏的第二阶段允许玩家将他们的机器人与其他玩家训练的机器人进行对战,以了解他们的训练方案如何为他们的机器人做好战斗准备。

分阶段修剪

编辑

由ColinGreen开发的KenStanley的NEAT的一个扩展,在进化过程中增加了对候选解决方案的网络拓扑结构的定期修剪。这一增加解决了对无限制的自动增长会产生不必要的结构的担忧。HyperNEATHyperNEAT是专门用来演化大规模结构的。它最初是基于CPPN理论的,是一个活跃的研究领域。


内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/163731/

发表评论

登录后才能评论

词条目录
  1. 增殖拓扑的神经进化
  2. 增殖拓扑的神经进化的性能
  3. 增殖拓扑的神经进化的算法
  4. 竞争性约定
  5. 分阶段修剪

轻触这里

关闭目录

目录