Cyber​​calmar神经进化

进化神经网络


人工神经网络模仿真实的生物神经系统。它们包含神经元及其之间的连接,从而将传入信号转换为显着的输出结果。在机器学习领域,这些网络通常使用神经元之间的随机连接来初始化,此后网络将学习直到以正确的方式开始行为。这种方法非常适用,但是,在动物中,有许多简单的神经系统可以直接使用:尽管人的行为是由神经元网络造成的,但没有人教鱼游泳或蝴蝶飞。他们的神经系统不是随机初始化和后续训练的结果,而是进化的结果经过几代人的努力,大自然创造了一种提供复杂而成功行为的细胞和联系模式。

要创建无需学习即可提供行为的神经网络,可以使用Neuroevolution进化算法(例如我用来执行植物进化的算法)使遗传密码经过很长一段时间才能进化。遗传密码(DNA的模型)及其代表的生物最初非常简单,但是几代以来,小的突变增加了有利的复杂性并增加了刺激这些特性进一步传播的功能。

数码鱿鱼


为了演示神经进化的作用,我想展示数字鱿鱼的进化。鱿鱼具有以下属性:


图1:浮动鱿鱼。

  • 它们可以具有任意数量的不同长度的触手。
  • 每只手由一个输出神经元控制,在一个方向上以低输出信号泵浦它,在另一方向上以高输出信号泵浦它。
  • 鱿鱼有 ; 头部的大小决定了神经元的最大可能数目。
  • 鱿鱼的质量取决于头的大小和触手节的数量。
  • 乌贼漂浮在充满食物的模拟液体中。触摸这些点,鱿鱼“吃掉”它们,鱿鱼分数的计算方法是食用的点数除以其质量。

由于进化,这些特性应能创造出可以在环境中有效游动的鱿鱼,并尽可能多地食用食物。由于鱿鱼的身体也很重,因此必须有效:鱿鱼和大的触手需要更多的食物才能有进化的理由。

由于鱿鱼可以具有变化的属性(例如,头部大小和触手构造),因此这些属性也会发生变化。鱿鱼DNA不仅包含他的大脑“图”,还包含他的身体计划。

图1显示了用两只手模拟的鱿鱼。通过向臂段施加弹力来确保手的摆动。如果肌肉停止移动手臂,则各部分将逐渐对齐,直到手臂变成直线。为了计算加速度的大小,将所有横向运动相加。图中显示的所有横向移动都添加到该编号中。触角在身体后面摆动,鱿鱼可向前移动。

尖峰神经网络


为我们的项目选择正确的神经网络并非易事。有许多不同类型的神经网络。这篇文章中包含了他们中的一些容易的概述。鱿鱼管理的某些方面的任务不同于知名网络的工作:

  • «-». , . - , .
  • . «-», .
  • , . , .

尖峰(脉冲)神经网络 可以满足这些要求这样的网络是实时工作的,旨在更准确地模拟野生动植物。像真实的神经元一样,尖峰神经网络中的细胞会累积电位,并从所有输入信号中逐渐收集它们,而在没有输入信号的情况下,它们会逐渐返回其“中性”状态。不需要尖峰神经网络遵守严格的接线图。它们由一层输入神经元,一层输出神经元(在我们的例子中是控制触角)以及它们之间的几个神经元组成,称为隐藏层隐藏层中的神经元可以连接到输入和输出神经元,但是神经元也可以断开连接。在我们的任务中,隐藏层神经元可以相互连接。


图2:物流功能。

神经系统的所有神经元都有激活功能该函数根据输入信号的总和确定神经元的输出值。神经元由连接源神经元和目标神经元的轴突连接。轴突将原始神经元的输出值乘以轴突权重(可以是正数或负数),从而增加了目标神经元的激活能力然后,激活函数根据神经元的激活来确定神经元的输出值。在此模拟中,我们选择逻辑函数作为激活函数

11+ea


在这个方程式中 a是神经元的激活。图2显示了该函数的图形。a=0 输出值是 0.5; 在我们的仿真中,这很有用,因为即使在没有输入值的情况下,网络也必须能够提供行为。如果默认输出值不等于零,则某些信号将不断流过系统。从理论上讲a 可能很小或很大,但是逻辑函数的渐近线确保输出值始终在该范围内 [0,1]因此,不会传播极端的系统输出值。

进化模拟


仿真环境包含以下组件:

  • 任意数量的鱿鱼具有不同的身体结构和刺神经网络来控制其四肢。
  • 食物散落在环境中。

为了开始模拟进化,在系统中模拟了每一代的固定寿命。在我的模拟中,我选择了20到30秒的片段。在这段时间之后,选择了最有生产力的鱿鱼,将其重复几次以创建新一代的鱿鱼。在执行下一个模拟之前,所有鱿鱼都会经历轻微的突变。以下属性可能会发生变化:

  • 身体的半径,以及鱿鱼大脑中神经元的最大允许数量。
  • 触角的数量和位置。
  • 触角的长度。
  • 大脑中神经元的数量。
  • 神经元之间的轴突连接(连接可以出现或消失,键的权重也可以改变)。

目前,鱿鱼脑不包含输入神经元。输出神经元的数量始终等于触手的数量,每个触手分配一个输出神经元。如果触手在突变过程中消失,则与之对应的输出神经元也将被移除。在突变过程中出现新的触手时,它将接收到具有随机连接的新输出神经元。

模拟的源代码已上载到GitHub,并且模拟是在浏览器中完成的

结果



图3:神经系统产生无尽的冲动。

执行模拟时,通常需要数百代才能获得移动的鱿鱼。当一种有效的游泳策略逐渐形成时,通常会随着时间的推移而演变成最佳的版本。

可以看到神经系统。图3显示了一个带有两个手臂的简单鱿鱼神经系统。该网络包含五个神经元(由橙色圆圈表示)和两个输出神经元(由蓝色圆圈表示)。当神经元的输出信号增加时,神经元变亮。当输出信号减小时,圆圈变为透明。轴突通过连接相应神经元的虚线可视化。当轴突发送信号(并影响目标神经元)时,虚线会变得更明显,并且虚线会沿信号方向移动。


图4:进化的浮动鱿鱼。请注意,并非所有代理都特别有效;有些包含无用的突变。

图4显示了在仿真环境中漂浮的几个乌贼。这些鱿鱼使用两个同时摇摆的触手。在代理中,变异性很明显:

  • 触角有各种长度,但它们的移动方式大致相同。
  • 图像底部的两个代理已进化地接收了额外的触手,这些触手尚未特别有用。他们增加了鱿鱼的质量,从而降低了鱿鱼的分数。

结论


当前状态下的仿真证明了神经进化的有效性,并为系统的进一步开发奠定了基础:

  • . , .
  • . , .
  • , , .
  • . . , . , .

这些添加将不需要神经进化的基本机制的任何改变,它们只会允许出现更多种不同的策略。所示的神经进化框架的普遍性和适应性使其成为许多其他领域的有趣工具,特别是对人工生命的研究

All Articles