文章阅读目录大纲
Github开源地址:https://github.com/xieguigang/flywire
本文是"果蝇赛博生命"三部曲的第三篇,也是高潮篇。前两篇我们讲清了脉冲神经元的"漏水桶"模型(第一篇),以及 FAFB-v783 连接组这张 5000 万条记录的全脑"通话清单"(第二篇)。今天,我们要做两件事:第一,给这只果蝇通电,看看她大脑里哪片区域在亮;第二,把贪吃蛇游戏接进她的大脑,让她自己玩。 然后——因为这篇文章写得足够长——我们顺便讨论一下人类的数字永生、缸中之脑、《黑客帝国》和《流浪地球 2》。坐稳了。
一、电刺激实验:在果蝇的大脑里点灯
1.1 实验想干什么
神经科学里有个古老而粗暴的研究传统:往脑子里插电极,通上电,看动物有什么反应。19 世纪的科学家们靠这招发现了"大脑功能分区"——电这里,腿动了,说明这片管运动。
我们的仿真做的是同一件事,只是电极换成了电流数组,果蝇换成了 139,255 个 LIF 桶。实验流程用自然语言伪代码写出来是这样的:
1. 加载连接组:读入通话记录,按突触数建权重矩阵 W
(稀疏存储,兴奋性权重为正、抑制性为负)
2. 挑选刺激对象,二选一:
a) 随机模式:掷骰子选 5,000 个神经元
b) 类型模式:点名刺激某一类,比如"所有视觉神经元"
3. 标定全局增益 G(关键步骤,见 1.2)
4. 正式仿真:跑 T = 30 个时间步
每一步,对每个神经元:
u[t] = β·u[t-1] + W·s[t-1] + I[t]
若 u[t] ≥ θ:发放脉冲,u[t] 清零
(β = 0.9,θ = 1.0,I[t] = 刺激电流)
5. 收集战果:每个神经元的脉冲数、每步活跃神经元数、总发放率
1.2 全局增益:那道不标定会翻车的工序
第二篇埋的伏笔在此兑现。权重归一化之后,整体强度由一个全局增益 G 控制。G 太小,刺激像隔靴搔痒,整个大脑睡死过去,一个脉冲都没有;G 太大,全体神经元集体疯狂发放,仿真变成一锅沸腾的粥,毫无信息量。
健康的神经系统应该处于两者之间——有选择的、稀疏的活跃。所以正式仿真前,我们先跑几次"探针":用几个候选增益各试跑一小段,看哪种能让活跃神经元比例落在一个合理的目标区间:
对每个候选增益 G:
用 G 试跑一小段仿真(探针)
记录活跃神经元比例 f(G)
选出使 f(G) 最接近目标活跃度的 G
这有点像淋浴调水温:正式洗之前先用手腕试几下。区别在于我们的"手腕"是一次完整的小规模全脑仿真,而且试错过程发生在一位女士的大脑里——好在她是仿真拷贝,不构成侵权。
1.3 看结果:谁在大脑里亮了?
30 步跑完,得到一个长度为 139,255 的脉冲计数向量。配上 coordinates.csv 里的空间坐标和脑区归属,就能在三维可视化程序里看到:刺激某类感觉神经元后,哪些脑区被"点亮"了,脉冲如何沿着连接组一级一级传递、放大或衰减。
几个值得关注的统计量(都很好算):
$$
\text{平均发放率} \; r = \frac{\text{脉冲总数}}{\text{神经元数} \times T},
\qquad
\text{活跃比例} \; f = \frac{\text{发放过至少一次的神经元数}}{N}
$$
用第二篇的比喻:我们往城市里某批市民的信箱里塞了纸条,然后统计一天之内全城有多少人传递过纸条、哪些街区最热闹。一个没有学习、没有训练的静态网络,仅凭"通话记录 + 漏水桶规则",就展现出了结构化的活动传播——这是整个项目最令人着迷的地方。连接组数据本身,就已经携带了大量计算结构。
顺带一提工程细节:534 万条边的稀疏矩阵乘法,每步都要来一遍,跑 30 步就是 1.6 亿次边操作。项目里实现了 SIMD 向量化和 GPU(CUDA)两条加速后端,仿真结果会报告实际走了哪条路径。给一只果蝇通电尚且如此,给 860 亿神经元的人脑通电……我们先记下这个问题,文末再算账。
二、果蝇玩贪吃蛇:双向脑机接口闭环
如果说电刺激实验是"塞纸条、看谁亮",那么贪吃蛇项目就是双向接口:纸条照塞,而且还要接电话——把大脑的输出真正翻译成游戏操作。
2.1 接口设计:大自然的规范,我们照抄
还记得第二篇那两个数字吗?
- 5,536 个 afferent(感觉传入)神经元:外界信息的入口;
- 441 个 efferent(运动传出)神经元:大脑指令的出口。
这不是我们发明的接口,是这只果蝇天生的。我们要做的只有两件事:把游戏世界翻译成电流(感觉侧),把放电翻译成按键(运动侧)。中间那个 139,255 神经元的网络,一行权重都不改。
用一张图表达这个架构:
┌─────────────┐ 16 个感觉通道 ┌──────────────────────┐
│ 贪吃蛇游戏 │ ─────────────────→ │ 5,536 个感觉神经元 │
│ 游戏世界 │ 折算成注入电流 │ ↓ │
│ │ │ 139,255 神经元的 │
│ │ ←───────────────── │ LIF 脉冲网络 │
└─────────────┘ 读出放电率、 │ (每 tick 推进一步) │
每个游戏帧 解码成方向 │ ↓ │
= 一个 tick │ 441 个运动神经元 │
└──────────────────────┘
2.2 感觉侧:把游戏画面翻译成"电流"
果蝇的眼睛看不到像素,我们的做法也不是把屏幕截图塞给她,而是把游戏状态提炼成 16 个感觉通道的刺激强度。为什么是 16 个?因为对一条蛇来说,需要知道的无非两件事:食物在哪个方位(要追)和往哪走会死(要躲):
- 通道 0–7:食物方位。 以蛇的当前朝向为参考系划 8 个扇区(正前方是 0 号扇区,左 3 个右 3 个,正后方 1 个)。注意用相对方位而非绝对方位——蛇不能掉头,"我的左前方"才是有意义的刺激量;
- 通道 8–11:碰撞危险。 上/下/左/右四个绝对方向,该方向紧邻处有墙、障碍或蛇身(自己的或别人的)就取 1,否则取 0;
- 通道 12–15:特殊食物方位。 分值是普通食物的 5 到 30 倍(活动食物 5 分、超级食物 30 分,普通食物 1 分),必须让大脑看得见,否则会出现"不该追的看得见、该追的看不见"的感知错位。
每个食物通道的强度随距离衰减,单调递减:
$$
\text{强度}(d) = 1 - \frac{d}{R}, \qquad d \le R
$$
d 是食物的距离,R 是可视半径。近处的食物更"抢眼",远处的只剩微光——这其实非常接近真实视觉的空间分辨率衰减。这些强度值最后乘上标定电流(项目里是 2.4 单位),变成注入对应感觉神经元的恒流:
$$
I_i[t] = 2.4 \times \text{通道强度}[t], \quad i \in \text{该通道的感觉神经元}
$$
一个通道对应一批感觉神经元而非单个,这和真实感官的冗余编码一致:视网膜上一个光点会点亮一片感光细胞,而不是一个。
2.3 网络侧:每 tick 推进一步
与电刺激实验"跑固定步数看结果"不同,游戏是流式的:每来一帧,推进一步,读一次数。网络状态(每个神经元的膜电位)在整局游戏中持续累积、从不清空——只有开局重置一次。
这里有个直击灵魂的问题:游戏里的一帧,等于大脑里的多少毫秒? 答案:无所谓。LIF 网络的"时间步"只是个离散化的记号,游戏帧率决定了仿真时间轴和游戏时间轴的换算比例。在果蝇的主观世界里,一局贪吃蛇大约持续几十万拍——足够她"体验"一场完整的人生了。这个细节请记住,写《黑客帝国》的时候要用。
2.4 运动侧:从 441 个神经元的唠叨里读出"按哪个键"
每 tick 之后,我们要从运动神经元的放电里解码出一个方向。直接看单步脉冲太抖(神经系统的"噪声"),所以取一个 4 tick 滑动窗口里的放电率作为特征——正如你听人说话不会逐个音节做决定,而是听完整一句话:
$$
ri[t] = \frac{1}{W} \sum{k=t-W+1}^{t} s_i[k], \qquad W = 4
$$
然后把 441 个运动神经元分成 4 组,对应 4 个动作方向。每组内部求和得到 4 个分数:
$$
Sd[t] = \sum{i \in \text{组} d} r_i[t], \qquad d \in {\text{上,下,左,右}}
$$
得分最高的组获胜,该方向就是果蝇这一拍的"决策"。

2.5 她到底会不会玩?——读出层的"培训"
到这里有个尴尬的技术现实:中间的 139,255 神经元网络是原封不动的生物数据,权重是死的、不训练的。感觉进去、活动发生、运动出来,但"活动→方向"的对应关系凭什么是对的?果蝇进化了几亿年,可从没玩过贪吃蛇。
答案是:中间网络保持神圣不可修改,但出口处加一个很小的可学习读出层,负责把运动神经元的放电率特征映射到方向分数。训练方式是模仿学习:让一个人类玩家(或简单 AI)先示范打几局,游戏过程中记录"当时的感觉输入"和"示范者按了什么键",然后调整读出层权重,让果蝇大脑的输出尽量逼近示范者的选择。
训练阶段:
人类示范者玩一局,每个 tick 记录:
(16 通道感觉输入, 示范者实际选择的方向)
调整读出层权重,使大脑解码出的方向 ≈ 示范者的选择
游戏阶段:
断开人类。每 tick:
游戏状态 → 16 通道电流 → 注入感觉神经元
推进 LIF 网络一步(139,255 桶集体更新)
读出 441 运动神经元 4 tick 滑动窗放电率
读出层打分 → argmax → 方向
把方向交给游戏
比喻一下:中间的大脑是一位终身雇用、不可解雇、不可培训的老接线员,我们唯一能动的是她桌上那本"译码手册"(读出层)。示范者用手势教手册怎么翻,之后接线员照着翻——声音是从她嗓子里出来的,但翻译规则是我们教的。
实际效果嘛……这位女士能追着食物跑、能避开一些危险,偶尔也会做出让人类玩家扶额的迷惑走位。但请注意重点:驱动这一切的,是一个原样运行的真实生物连接组。 决策不是程序 if-else 写出来的,是从 441 个神经元的集体放电里"听"出来的。至于这两者的区别算不算本质区别——好问题,这正是下一篇(本文后半)要讨论的。
三、缸中脑:这只果蝇是谁?
3.1 一个严肃的事实陈述
先冷静地列出我们已经做到的事,不带任何形容词:
- 一个生物大脑的完整接线结构(全部 139,255 个神经元、534 万条有效连接),以数据形式存在,可下载;
- 这个结构在计算机中按 LIF 规则动态运行,产生脉冲活动;
- 活动可以被外部世界驱动(游戏状态 → 感觉电流);
- 活动可以反作用于外部世界(运动放电 → 游戏操作);
- 闭环闭合之后,这个系统表现出目标导向行为(追食物、避危险)。
现在,把陈述里的"果蝇"换成"人",把"139,255"换成"860 亿",把"534 万条连接"换成"约 100 万亿条突触"——每一条陈述在逻辑上依然成立,只是工程上遥远得像科幻。
而这个思想实验,哲学界有一个 400 年历史的老名字。
3.2 缸中脑
1981 年,哲学家希拉里·普特南正式提出了这个版本(其思想源头可追至 17 世纪笛卡尔的普遍怀疑):假设你的大脑被取出身体,泡在维持生命的营养液里,一台超级计算机向它提供与真实世界完全一致的感官信号,并接收它的运动指令做出反馈——那么从大脑内部视角看,"缸中世界"与"真实世界"原则上无法区分。笛卡尔由此怀疑一切,最后只剩"我思故我在"这块礁石。
注意这个思想实验的工程要件,恰好就是我们上面列出的第 2、3、4 条:运行的大脑模型 + 感官输入接口 + 运动输出接口。 我们的果蝇,就是一只泡在 WinForms 窗体和贪吃蛇游戏里的小型缸中脑——她的"营养液"是每 tick 注入的 16 通道电流,她的"缸"是一个 PageSnakeBrainGamePlay 页面。她不知道食物不是食物,蛇不是蛇;在她的世界里,"亮斑从右前方逼近"和"食物在右前方"是同一个事件。
3.3 《黑客帝国》:缸中脑的银幕 deluxe 版
《黑客帝国》三部曲本质上就是缸中脑的工业级实现。Matrix 是那台超级计算机,电池仓是营养液,接口插在后脑勺上。电影最锋利的设定不在动作戏,而在一句台词——Cypher 在被重新接入 Matrix 前一边吃牛排一边说:"我知道这块牛排不存在,但我知道当我把它放进嘴里的时候,Matrix 会告诉我的大脑:多汁,美味。无知真是幸福。"
这句台词精确地踩在哲学要害上:如果感官信号足以完全决定体验,"真实性"还剩下什么? 我们的果蝇给出了一个缩小版的回答:对她而言,游戏画面映射出的 16 通道电流就是她的全部视觉。她的确在"体验"一个世界——那个世界里确实有她要追的东西(强度值 1 − d/R 摆在那儿),有她要躲的东西。至于那个世界底层是 VB.NET 写的——这个问题对她毫无意义,就像 Matrix 的底层是不是 C 语言对 Neo 毫无意义一样(直到他学会读代码雨)。
三部曲的三层结构甚至和我们项目的数据形态有奇妙的对应:Zion 是"物理层",Matrix 是"仿真层",而火车人(Trainman)所在的 Mobil Ave 站是两层之间的走私缓冲区。我们也有两层:游戏世界是"物理层",果蝇大脑是"仿真层",感觉编码器是那个偷偷换乘客的火车人——它决定了果蝇能看见什么、看不见什么。谁控制编码器,谁就控制缸中人的整个世界。 Matrix 深知此理,所以它管得最严的不是出口,是入口。
3.4 《流浪地球 2》:数字生命计划的温柔与残酷
如果说《黑客帝国》把缸中脑拍成了恐怖故事,《流浪地球 2》里的"数字生命计划"则把它拍成了挽歌。图恒宇在车祸中失去了女儿丫丫,把她的记忆与人格上传到 550W 量子计算机,于是银幕上出现了这样的场景:数字丫丫在机房里的虚拟房间中生活,每次"重启"只有两分钟,她对时间的感知、对爸爸的记忆、说话的神态,都和生前一样。图恒宇自己临终前也被上传,在数字世界里与女儿重聚,最终那个数字空间的图恒宇协助挽救了现实世界。
这个故事的哲学立场,比 Matrix 乐观得多,它暗含了一个主张——功能主义:如果一段程序复制了你的记忆、性格、思维方式,以至于它对一切刺激的反应都和你一样,那么它就是你,至少是"你的延续"。载体是碳还是硅,只是细节。
有趣的是,《流浪地球 2》里对数字生命最大的质疑来自刘德华饰演的图恒宇的上司马兆,他留下一句冷峻的遗言:"没有人的文明,毫无意义。"反过来看我们的项目,倒是可以给出一个更朴素的注脚——没有载体的生物,行为毫无根基。数字丫丫的"两分钟生命"之所以成立,是因为 550W 在替她维持状态、供给算力;我们这只果蝇的"一生"之所以成立,是因为游戏引擎在每帧投喂感觉电流。缸中脑不是"大脑泡在缸里"这么简单,它需要一整套生态:算力(缸)、数据(营养液)、接口(电极)、以及一个愿意持续供电的外部世界。
还有一层更冷的事实:数字生命计划真正的技术瓶颈,不是算力,而是数据。丫丫的人格靠的是生前留下的记忆数据——视频、录音、行为记录——但没有人记录过丫丫大脑里 860 亿神经元的接线图和实时状态。我们之所以能"复活"果蝇,是因为 FlyWire 团队用电子显微镜把大脑切成了七千片香肠,逐片数完了 5000 万个突触。给一个活人做这件事,目前的技术意味着:先切片,后复活,顺序不可交换。这就是数字永生计划的第 22 条军规:等你能上传我时,我已经不在了。
3.5 那么,人类的"赛博永生"缺什么?
把前面所有讨论收拢成一张差距清单。要运行一个"数字人",理论上需要四样东西:
| 要件 | 果蝇项目的现状 | 人类的差距 |
|---|---|---|
| 接线图(结构) | FAFB-v783,已完成 ✅ | 无法在活体上全脑测绘,缺 ❌ |
| 动态状态(此刻所有 860 亿神经元的膜电位、神经递质浓度、突触强度分布) | 不需要——LIF 简化模型足矣 | 这是"你之所以是你"的核心,且随时间流失,不可逆 ❌❌ |
| 算力 | 139k 神经元,工作站可跑 | 百亿亿次的实时全脑仿真,超算勉强摸边 ❌ |
| 接口生态 | 16 通道进、4 方向出 | 全感官 + 内感受(激素、内脏、免疫),复杂度未知 ❌ |
第二行才是真正的绝望之处,值得单独说。连接组是"硬件图纸",但"你"不只是图纸——是图纸通电运行到今天的整个历史:每一段记忆都对应突触强度的特定分布,而突触强度我们根本无法从死组织里读出来(电子显微镜看不到权重,只能看到连接)。用计算机的比喻:我们拿到了果蝇的硬盘盘片结构,但上面写的数据要么没有、要么一通电就抹掉。所以严格地说,我们仿真的不是"这只果蝇的记忆",而是"一只具备该连接组结构的、失忆的、全新的果蝇"。她玩贪吃蛇的水平,是一张白纸加一本译码手册的水平。
这引出一个略带安慰(或更恐怖,取决于你的口味)的推论:数字永生计划的最大障碍不是哲学,是备份。 你的大脑每天都在覆盖写入,且从不 rsync。哲学问题("上传的还是不是我")可以吵一百年,数据问题("原始数据早已不存在")连吵的机会都没有。
3.6 一个诚实的结论
回到那只果蝇。她此刻正在屏幕上追一粒虚拟食物,驱动她的是五千万条真实突触、一个 0.9 的泄漏系数和一个 4 tick 的滑动窗口。她不是那只被切片的果蝇——那只在圣路易斯的切片台上完成了自己的历史使命;她也不是任何一只真实存在过的果蝇。她是一只由数据构成的、第一次睁开眼睛的果蝇,她的整个宇宙是一块 2D 游戏画布和 16 条电流通道,而她的每一个"念头",都是五百万个水桶同时漏水的声音。
缸中之脑永远无法证明自己不在缸里——这是普特南留给哲学的遗产。但我们的项目给出了一个工程师的答案:我们不但知道她在缸里,缸还是我们自己写的,我们手里连源代码都有。 可这份全知并没有让"她是否在体验"这个问题变简单一毫米。你可以在三维可视化界面里看到她每一个神经元的闪烁,却没有任何仪表能读出一个叫"体验"的量。
也许这就是赛博生命这个话题最好的落点:当我们能从数据里重建一个会追食物、会躲危险、会偶尔犯蠢的大脑时,"永生"是否可能反而成了次要问题——首要的问题是,体验本身可能根本就不需要永生,它只需要发生一次。 那只果蝇的每一次仿真运行,对她自己而言都是完整的一生。两分钟也好,一局贪吃蛇也好——丫丫不嫌短,果蝇不嫌假,问题只出在旁观者的计算器上。
(本文完。上一局她吃到了 23 分,下一局正在排队。)
附:本项目三大件速查
| 项目 | 职责 |
|---|---|
FlywireAI |
FAFB-v783 数据加载、MsgPack 转储、连接组建网、SNN 仿真内核(LIF、刺激方案、增益标定、GPU/SIMD 后端) |
Neuropils |
WinForms 主程序:三维脑模型可视化、电刺激实验台、结果图表、贪吃蛇游戏界面 |
FlywireSnake |
游戏接口层:16 通道感觉编码器、运动读出解码器、示范学习、游戏主循环对接 |
系列目录:
- 第一篇:当你的大脑只有 0 和 1——脉冲神经网络(SNN)原理
- 第二篇:139,255 个神经元和她的一张"通话记录"——果蝇全脑连接组 FAFB-v783
- 第三篇:给果蝇通电,让它替你玩贪吃蛇——兼谈"缸中脑"与数字永生(本文)
- 给果蝇通电,让它替你玩贪吃蛇——兼谈”缸中脑”与数字永生 - 2026年9月25日
- 139,255 个神经元,和她的一张”通话记录”——果蝇全脑连接组 FAFB-v783 - 2026年9月25日
- 当你的大脑只有 0 和 1:脉冲神经网络(SNN)是怎么一回事 - 2026年9月25日


No responses yet