蜻蜓大脑能怎样启示计算机设计?(3)
2024-06-15 来源:旧番剧
为了开始回答这些问题,我创建了一个简单的神经网络来代替蜻蜓的神经系统,并用它来计算蜻蜓捕捉猎物时发生的转向。我用软件模拟三层神经网络。最初,我用的是Matlab,因为那是我已经在用的编程环境。后来,我把模型移植到了Python。
因为蜻蜓必须看到猎物才能捕捉到它,所以我首先制作了一个模拟蜻蜓眼睛的简易版本,捕捉追踪猎物所需要的最少细节信息。虽然蜻蜓有两只眼睛,但普遍认为蜻蜓没有用立体深度感知来估计猎物的距离。在我的模型中,我没有模拟两只眼睛,也没有试着去匹配蜻蜓眼睛的分辨率。我的神经网络的第一层包括441个代表眼睛输入的神经元,每个神经元描述视野的一个特定区域,这些区域平铺成覆盖蜻蜓视野的一个21×21神经元阵列。当蜻蜓转向时,猎物在蜻蜓视野中的图像位置也随之发生变化。蜻蜓计算转向时需要将猎物的图像与这些“眼睛”神经元中的一个(或几个,如果猎物足够大的话)进行匹配。第二组441个神经元(也位于网络的第一层),告诉蜻蜓哪些眼睛神经元应该与猎物的图像匹配,也就是说,猎物应该处在视野中的哪个位置。
处理,即接收描述一个物体在视野中运动的输入信息并将其转化为蜻蜓需要转向哪个方向的指令的计算,这发生在人工神经网络的第一层和第三层之间。在这个第二层,我使用了一个包含194481(21⁴)个神经元的阵列,这可能比蜻蜓完成这个任务使用的神经元数量要多得多。我预先计算了网络中所有神经元之间的连接权重。虽然只要有足够的时间就可以学习这些权重,但是通过进化和预先编程的神经网络结构来“学习”是有好处的。一旦它由幼虫变成有翼成虫(严格来说应称为刚羽化的成虫),蜻蜓就没有父母喂养或教它捕猎了。此时蜻蜓很容易受到伤害,且正在适应新的身体,在这个阶段想出捕猎策略并不有利于蜻蜓。我设置了网络权重,让模型蜻蜓能够利用传入的视觉信息计算出要截获猎物所需要的正确的转向。这些转向是什么呢?如果蜻蜓想抓住一只正在飞过的蚊子,它不能只瞄准蚊子。