
研究者用果蝇大脑连接组模拟驱动100个虚拟果蝇玩Doom
来源标题:100 Fly Brains Play Doom
一名神经科学实习生在Namespace平台上用100个并行Devbox分别运行基于果蝇连接组的Doom模拟,测试关闭神经元后的影响。这些模拟基于HHMI Janelia、Google Research等重建的成年雄性果蝇中枢神经系统,涵盖约16.67万个神经元和1.25亿个突触,神经活动被解码为移动、转向和射击操作。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
几周前,我看到了 MaleCNS,这是 HHMI Janelia、Google Research 及合作者完成的一项成年雄性果蝇中枢神经系统重建。它绘制了大约 166,700 个神经元和 1.25 亿个突触。
更有意思的是,我发现了 DOOMFLY,这是 nftechie 的一个开源项目,它把基于这个连接组的模拟接入了 Doom。它利用模拟果蝇大脑的神经活动来控制移动、转向和射击。
在看到一个 Reel 视频里果蝇大脑的成绩超过我的 Beat Saber 最高分之后,我想做个自己的实验。如果我开始关闭神经元,会发生什么?影响会局限在局部,还是仅仅禁用两个细胞就能引发数千个其他细胞的变化?
作为在 Namespace 实习的神经科学学生,我一直在试用 Devboxes——那种可以通过程序创建并并行运行的开发环境。给每个果蝇大脑分配一个自己的 Devbox,看起来再合适不过。
在 DOOMFLY 中,Doom 的帧会经过模拟视网膜,神经活动在网络中传播,然后一个解码器把这种活动翻译成游戏控制信号。虽然 DOOMFLY 大致映射了约 166,700 个神经元,但真正引起我注意的是,对控制器来说真正重要的神经元少得惊人。尽管 DOOMFLY 记录 14 个读出神经元的活动,它的控制器只依赖两对:
这些是人为设定的分配,不是果蝇自然的运动功能。仅仅让这两对上游的十二个 MeVP9 神经元中的两个沉默,就消除了所有游戏控制输出。更令人惊讶的是,模拟大脑的大部分实际上处于沉默状态。几乎所有活跃神经元都在视觉系统中,直接受刺激的群体之外只有 1,341 个活跃神经元。
我先让 DNp20、DNpe017 以及这两对一起沉默,把它们的传入和传出突触置零。正如预期,没有 DNp20 时转向完全停止,没有 DNpe017 时移动和射击停止。这些效果是解码器里预设好的。
但网络的其余部分就是另一回事了。
我最初的结果表明,让 DNpe017 沉默会改变其他 8,249 个神经元的脉冲计数。这大约相当于完整运行中活跃神经元的 70%。这种扰动是在大脑中扩散,还是我每次扰动模拟时都会发生这种情况?
为了弄清楚,我加入了假敲除——让活动性和连接性相当的随机神经元对沉默,排除直接向我研究的细胞类型提供输入的神经元。我还测试了上游的 MeVP9 对,并加入了两个视觉对照:黑屏和冻结的第一帧。
我先做了开环实验:每个大脑观看一局实时、带种子的 Doom 游戏,摄像机按脚本扫视,其命令被记录但从不应用。这确保了每个实验条件下的视觉输入完全相同。然后我转向闭环,每个大脑控制自己的游戏,每个动作都会塑造它接下来看到的内容。
两个实验采用相同设计:四个游戏种子,每个种子下进行 100 次两分钟的运行,包含六种实验条件、一个完整对照,以及每个种子十八个假敲除。在 100 个相同的开发环境中运行这个实验需要一些功夫,本文剩下的部分就讲我们是怎么做到的。
挑战在于让 DOOMFLY 在 100 个相同的环境中运行。
我使用 Namespace Custom Images 一次性打包依赖,而不是在每台机器上分别安装所有东西。然后,我用 TypeScript SDK 以编程方式创建 Devboxes。
准备就绪后,我可以启动 100 个 Devboxes,在开环运行中每个耗时 89 秒,闭环运行中在 59 秒内完成。我已经在四个 Devboxes 上测试过这个实验,100 次模拟在不到 13 分钟内完成。现在我想看看每次运行都有自己的机器时会发生什么。
NAMESPACE CUSTOM IMAGE DOOMFLY CODE pinned CONNECTOME DATA 166,700 neurons SIM KERNEL compiled building… 100 NAMESPACE DEVBOXES · OPEN LOOP ready in 89 s waiting for image live 000 OUTPUTS SPIKE COUNTS per neuron GAME LOG + frame hashes RUN SUMMARY data collected 000/100 INSIDE DEVBOX #42 · OPEN LOOP DOOM scripted camera RETINA simulated FLY BRAIN connectome DECODER 14 neurons ACTIONS recorded only booting
Namespace Custom Image 只构建一次。TypeScript SDK 从它并行创建 100 个 Namespace Devboxes,收集每次运行的结果,然后删除这些盒子。动画在开环和闭环实验之间交替。
我启动了实验,每个 Devbox 运行一个模拟。新一批在大约九分钟内完成,其中一次运行需要重试。除了速度,我还想确保实验没有改变结果。我在全部 100 个开环模拟上运行了 verify_results.py;每次运行都通过了。
结果与之前四 Devbox 运行逐字节完全相同,甚至精确到单个神经元的计数。四台机器还是一百台,科学结果完全一样。我可以扩展基础设施而不损害可重复性。
完整的果蝇并不算电竞明星。它朝同一方向绕圈,94% 的时间在射击,还不知怎么地在存活约 80 秒的同时击杀了大约 27 个怪物。显然,“边扫射边祈祷”加上绕圈跑是一种还算有效的 Doom 策略。
盲眼果蝇就更奇怪了。视觉输入只有黑屏,它仍然移动、转向,并取得了 22-29 次击杀。没有光,光感受器沉默了,释放了一些下游神经元的抑制。恒定的背景电流让它们保持放电,使果蝇在大约 44% 的游戏 tick 中射击。它在两分钟内也死了 12-13 次。看来你不用看见也能打中东西。活下来则是另一回事。
(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。