English interface selected · this article is currently written in Chinese.
一个真实的果蝇大脑回路,怎么公平地和“别的办法”比?
English overview →具备清晰骨架、初步数学推导或工程验证,持续补充论据与实测。
数字花园
🌿 什么是数字花园与思想演进?
遵循 Maggie Appleton 与 Andy Matuschak 的常青笔记理念:这里不是按时间沉底的流水账,而是持续修剪打磨的知识生态。文章按成熟度经历:
- 🌱 萌芽 (Seedling): 发散灵感、读书摘录、开放猜想
- 🌿 演进 (Budding): 结构渐明、初步代码推导、积极修正
- 🌳 常青 (Evergreen): 逻辑闭环、持久经得起检验的基石
- 🔬 实验待证 (Speculative): 结合沙盒与仿真探针的理论探索
项目代码与全部实验记录:https://github.com/meiluosi/fly-connectome-study
后面所有实验(觅食、持续学习、旅行商)都建立在同一个回路和同一个比较框架上:把真实蘑菇体的接线做成固定的学习器骨架,再用“打乱”“随机稀疏”“线性”“不学习”替换它的连线,让比较只剩一个变量。
1. 回路与数据:从连接组到三张矩阵
果蝇怎么学气味
果蝇学气味,大致是四步:
- 嗅觉小球 → Kenyon 细胞(KC):气味激活若干小球。每个 KC 只接收少数几个小球的输入,而且只有最强的约 5% 的 KC 会亮起来。这是一种稀疏的高维编码。
- KC → 输出神经元(MBON):这一层的突触会被改写,也就是“学习”发生的地方。
- 多巴胺神经元:携带奖惩(可以理解为预测误差),决定上面那层突触该变强还是变弱。
- MBON:有的推动趋近,有的推动回避。
数据从哪来
数据来自 Janelia 公开的 MaleCNS v1.0 连接组:一只雄性果蝇脑的电镜重建,记录了每个神经元的类型,以及神经元之间每一对突触连接的数量(CC BY 4.0,下载脚本在仓库的 repos/drosophila-brain-mlx/tools/fetch_male_cns.sh)。我只用了右半球的蘑菇体部分。
从原始的“谁连谁、连了几个突触”的大表里,经过三步整理:
- 按细胞类型挑出蘑菇体的神经元:投射神经元(PN)、Kenyon 细胞(KC)、输出神经元(MBON)。整理后的边表在
study/mb_edges_malecns.parquet。 - 把 PN 按所属的嗅觉小球归并,得到“每个小球连到每个 KC 的突触总数”的矩阵。
- 用神经递质预测定 MBON 的符号:乙酰胆碱记为兴奋,GABA 和谷氨酸记为抑制。
最后只剩三样东西,存成一个很小的文件:
| 内容 | 形状 | 具体数字 |
|---|---|---|
小球 → KC 连线 P | 65 × 2045 | 10800 条非零连接;每个 KC 平均接收约 5.3 个小球;单条连接最多 89 个突触 |
KC → MBON 连线 N | 2045 × 49 | 24091 条非零连接;每个 KC 平均连到约 11.8 个 MBON |
| MBON 的符号 | 49 | 25 个预测为兴奋、24 个为抑制 |
一个会影响后面设计的事实
各小球的“扇出”非常不均匀。连到的 KC 数量,最少的小球只有 2 个,中位数 164 个,最多 473 个。后面会看到,这直接影响“怎样才算公平比较”。
2. 学习规则
学习规则是我写的抽象版本,不是真实的生物物理。下面先讲规则是什么,再讲每一处为什么这样设。
规则是什么
- 编码:气味是一个 65 维向量
u(哪些小球被激活)。算每个 KC 的输入psi = u @ P,取最强的 5% 作为激活集合code。 - 价值读出:每个 KC→MBON 突触有一个强度
q(0 到 1,初始 0.5)。价值是 MBON 带符号的加权和,减去初始值后归一化到 [-1, 1]。 - 学习:得到奖励后,用预测误差
delta = 奖励 − 当前价值更新。delta > 0就增强兴奋型 MBON 的突触、削弱抑制型的;delta < 0反之。更新有界,大致是q ← q + eta·|delta|·(目标 − q),eta是学习率,目标是 1 或 0。 - 价值怎么变成行为:觅食里是转向规则,旅行商里是
权重 × exp(κ × 价值)。
为什么这样设
| 设计 | 原因 |
|---|---|
| 只让 KC→MBON 这一层可学 | 果蝇的联想学习主要就发生在这一层突触上,PN→KC 的连线基本固定,是编码,不是学习 |
| 用预测误差(奖励减当前价值)驱动 | 多巴胺神经元被认为携带的是预测误差,不是奖励本身。这也是前人把蘑菇体写成赌博机学习者时的做法(Bennett 等,2021),我沿用它,好和已有工作对得上 |
| 按 MBON 的符号决定增强还是削弱 | 要把“好”对应到“趋近”,“坏”对应到“回避”,需要用符号把两类输出神经元分开 |
| 突触强度限制在 0 到 1,初始 0.5 | 真实突触强度有上下限;有界更新不会无限增长,价值也不会失控。初始放在中间,让“没学过”时价值就是 0 |
| 价值归一化到 [-1, 1] | 不同任务(觅食、旅行商)用同一个量纲,下游的转向规则或 exp(κ·价值) 不用重新定标 |
| 最强的 5% 的 KC 才激活 | 真实的蘑菇体里,一个气味只激活很少一部分 KC,由一个抑制性神经元(APL)把关。我直接用“取前 5%”来近似 |
| 用速率模型,不用脉冲模型 | 早期接入脉冲(LIF)引擎时,没能调出“既稀疏、又覆盖面广、又对气味特异”的编码,按事先设的止损线收尾。速率模型简单,也便于控制变量 |
| 所有对照共用同一条规则 | 这是控制变量的前提:规则不变,才能把差别归因到连线上 |
“价值怎么变成行为”这一步没有生物依据,只是让价值能影响行动的最简接口。
哪些是真的,哪些是我写的
| 真实(来自连接组) | 手写(我的假设) |
|---|---|
| 小球→KC 连线与突触数 | 气味如何产生、奖励时间表 |
| KC 只留最强 5%(比例来自生物,取前 5% 的做法是我的) | 学习规则的形式 |
| KC→MBON 连线与递质符号 | 价值如何变成行动 |
| MBON 类型与隔间 | 蚁群、各种基线的规则 |
3. 比较框架:只替换连线
要回答“真实连线有没有特别之处”,必须做控制变量:学习规则、任务、预算、调参方式都完全一样,只替换小球→KC 这一层连线。
| 对照 | 怎么构造 | 它回答的问题 |
|---|---|---|
| 真实 | 原始连线 | 基准 |
| 打乱 | 对每个 KC,随机置换它连的是哪些小球,保持输入个数和突触数 | 真实的拓扑有没有用? |
| 随机稀疏 | 每个 KC 随机选 6 个小球,突触数都是 1 | 只要“稀疏扩展”就够了吗? |
| 真实二值 | 保持真实拓扑,所有突触数置 1 | 起作用的是拓扑,还是输入强度的差异? |
| 线性学习器 | 不做稀疏扩展,在 65 维小球向量上直接学线性价值 | 稀疏扩展本身有没有用? |
| 不学习 | 价值恒为 0 | 健全性检查:学习有没有作用 |
怎么解读:
- 真实 ≈ 打乱:起作用的不是具体接了哪几个小球。
- 真实 ≈ 随机稀疏:只要稀疏扩展就行,真实连线没有额外的东西。
- 真实 > 随机稀疏:这才是真实连线特异性的证据。
- 真实 ≈ 线性:稀疏扩展也没有带来好处。
4. 公平性检查:四个坑
- 并列打破。 随机稀疏连线下 KC 的输入分数是 0 到 6 的整数,截止线上约有 152 个并列(真实连线约 10 个)。
argpartition隐式选取的平均索引基本均匀,仍改为显式加微小随机抖动并全部重跑,结果不变。 - 学习率饱和。 把觅食里的学习率直接用到旅行商,所有变体的价值饱和在接近 +0.95,边与边没有区分度。学习率和增益要对每种学习器、每个任务在独立调参集上用同样的网格各自调。
- 对照本身要先检验。 持续学习审计里,论文的稠密对照因权重饱和崩到随机水平,让稀疏优势显得很大;换成同一个分类器后缩到 3 个百分点以内。
- 特征与先验重复。 旅行商里边的特征与距离的相关高达 0.85,学习器只是“距离加一点平滑偏置”,各变体因此天然等价。
5. 局限:这个框架测不出什么
- 打乱保留每个 KC 的输入数和突触数,但打散了小球扇出不均匀的结构(最少 2 个 KC、最多 473 个)。“真实 ≈ 打乱”不等于“扇出结构不重要”。
- 觅食和旅行商里,哪个特征接到哪个小球是任意指定的,落在枢纽小球还是冷门小球带有随机性,这让检验连线特异性本来就很难。
- 回路是蘑菇体的简化:没有效价专门化的隔间、多巴胺的时序规则、反馈和循环。
因此结论只能是:在这种抽象设定下没测出真实连线的优势,不是“真实连线没有用”。
6. 下一篇
第 2 篇:每个实验共用的协议。
代码位置:fly-foraging/forage.py(回路与对照 make_P、MB、LinearValence)、fly-tsp/mbcore.py、blog/figures/make_figures.py(本文的图)。
文章概念网络
从章节进入正文概念。实线表示所属层级,虚线连接跨章节重复出现的概念,不代表因果关系。
35 / 59 个节点 · 正文标记术语与关键词概念
一个真实的果蝇大脑回路,怎么公平地和“别的办法”比?
回到原文 ↗最后更新于 2026-10-21
引用本文
@article{2026-10-21-fly-connectome-01-circuit-and-framework,
author = {枫语},
title = {一个真实的果蝇大脑回路,怎么公平地和“别的办法”比?},
journal = {枫语},
year = {2026},
month = {oct},
url = {https://meiluosi.github.io/posts/2026-10-21-fly-connectome-01-circuit-and-framework/}
}