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(目录 fly-tsp/)
旅行商是项目里最长的一条线,共三轮,每一轮独立审查之后结论都被收窄一次。这一篇按时间讲。
1. 动机:为什么选旅行商问题
觅食里有太多手写的部分:气味场、奖励时间表、转向规则、蚁群行为,很难说一个结论来自回路还是来自世界。
旅行商问题(TSP)有客观的分数:给定一批城市,走一圈经过每个城市,路线越短越好,也有成熟的强基线。
定位:不是要证明“果蝇算法比 DeepACO 更好”。DeepACO 这类方法已有“先学跨实例的神经启发式,再在实例内学信息素”的框架,都是为任务训练的神经网络。这里只在同一个框架里问一个更窄的问题:把“特征映射”换成蘑菇体回路,是否比随机稀疏特征、打乱的连线、线性学习器更好?
2. 背景:蚁群算法的一分钟版本
蚁群算法让很多只“蚂蚁”各自走一圈,在每个城市根据一个权重选下一站:
- τ(信息素):这次搜索里别的蚂蚁留下的痕迹,好路线上的边痕迹更浓。它是在一次搜索内部学的,每条边一个数。
- η(距离的倒数):越近越想去,这是固定的先验。
- v(学到的边价值):新加的一项,由跨实例训练的蘑菇体给出。v=0 就是普通蚁群。
边的“气味”是手写的:这条边的终点是起点的第几近邻、距离分档、是否互为近邻、起点在终点的近邻排名、两端城市离质心的距离。每条边激活 6 个小球(一共用了 52 个)。学习器只换最后一项 v 的来源,其余全部不动。
3. 第一轮:预训练的边价值
做法
在 100 个训练实例上,让蚂蚁先不带信息素地走,用路线的“优势”(比同批平均好多少)当作多巴胺信号,更新蘑菇体。训练完冻结,到没见过的实例上,用冻结的 v 加实例内的信息素去搜索。
踩的第一个坑
直接沿用觅食里的学习率(0.4),所有蘑菇体变体的价值都饱和在接近 +0.95,边与边没有区分度,零样本路线反而更长;降到 0.05 才开始有区分。学习率和增益要对每种学习器、每个任务在独立调参集上各自调。
结果
(100 个测试实例,路线比参考解长多少 %):
| 设定 | 蚁群 | MB-真实 | MB-打乱 | MB-随机稀疏 | 线性 |
|---|---|---|---|---|---|
| R1 均匀 50 城 | 2.90 | 2.69 | 2.70 | 2.68 | 2.93 |
| R2 均匀 100 城 | 3.71 | 3.39 | 3.37 | 3.51 | 3.36 |
| R3 聚类 50 城 | 4.01 | 4.14 | 4.34 | 4.01 | 4.05 |
真实对打乱、对随机稀疏、对线性,三个设定下全部等价。真实对蚁群:R1 差 −0.21,区间 [−0.59, +0.14];R2 差 −0.33,区间 [−0.72, +0.05]。
审查之后:被降级的说法
- 原先的结论“没有任何特征映射超过普通蚁群 0.5 个百分点”说过头了:两个区间的下界到了 −0.59、−0.72,没有排除更大的改进,准确的说法是“不确定”。
- 调参集上的 R2 优势(蚁群 4.84,真实学习器 2.68)到测试集基本消失:从 12 个配置里挑最好的,会高估效果(赢家诅咒)。
- 特征到小球的分配是任意的,而真实小球的扇出差别极大,落在枢纽还是冷门小球带有随机性,检验本来就难以探测连线特异性。
4. 第二轮:改四处结构,提高检验力
做法
第一轮“不确定”的原因之一是实例太少:配对差的标准差为 1.4 到 1.8 个百分点,100 个实例勉强只够分辨 0.5。第二轮把测试实例加到每个设定 300 个,蚁群也跑 3 个搜索种子,并改了四处结构:
- 在线学习。 不再预训练,让蘑菇体在一次搜索内学,当作“能泛化的信息素”:信息素是每条边一个数,蘑菇体则让相似的边共享价值。
- 异质群体。 4 只“果蝇”,每只用一个不同的回路,每只蚂蚁用自己的回路。个体差异用随机缺失 30% 的 KC 模拟,不是真实的个体差异(没有对齐好的 FlyWire 矩阵)。
- 通信结构。 所有回路共享学习信号(广播)对比各自私有;4 个子蚁群各自为战,对比定期交换精英路线。
- 局部搜索。 对每条路线做 2-opt。这是业界惯例,不加就没法和别人对话。
调参:蚁群 27 个配置,在线学习器各 9 个;最优都落在网格边上,于是扩大网格再调一次。蚁群在 R1、R2 上落在 ρ=0.9(R3 是 0.5),即信息素几乎只记得上一轮最优。
结果
在 300 个新实例上,所有主结论对比都在 ±0.5 个百分点内:
- 在线学习(真实)对蚁群:R1 −0.05,R2 −0.04,R4(带 2-opt)−0.01,全部等价。R3 聚类上是 −0.26,区间 [−0.44, −0.07]。
- 异质对同质:差 0.00 到 +0.07,等价。
- 真实对随机稀疏、打乱、线性:差都不超过 0.15。
- 去掉信息素,路线差 5 到 10 个百分点:信息素是实例内最重要的记忆,在线学到的边价值取代不了它。
- 4 个子蚁群不交换,比单个蚁群差 0.6 到 1.7 个百分点;每 5 轮交换一次最优路线可以补回一部分:在 R1、R2 上仍不比整体蚁群好(R2 差 0.61),聚类的 R3 上略好(−0.33,仍在界限内)。
聚类上的小增益
在线学习比蚁群好约 0.3 个百分点,而且换了一批新实例之后又出现了一次(v3 的新实例上是 −0.28、−0.35)。但随机稀疏连线一样好,所以这是一个和连线真假无关的小增益,低于 0.5 的预设界限,只能说“稳定但很小”。
R4 的小插曲
2-opt 设定最初是 n=50、100 次构造,所有臂都低于参考解(−0.17%),没有区分度。改为 n=100、30 次构造,等价边界收窄到 0.25;改动发生在看到调参结果之后、运行测试之前,已记入偏离日志。
审查指出的问题
- 边的特征与距离几乎重复,学到的价值与距离倒数的对数相关 0.85,标准差只有 0.077:各回路都只是“距离加一点平滑偏置”,彼此等价是设计的必然结果。
- 每个实例约 530 个不同的边签名,只有 25 轮学习,学习预算太小。
- “等价”会藏住小的显著效应:R3 的 −0.26 区间不含 0,岛屿不交换的差距也明显,应写成“低于界限的小效应”。
- 分析脚本在登记之后被改过一次(只改了标题),哈希对不上。
对第二轮的最终说法:没有超过边界的改进;真实连线没有优势,但这个设计本来就测不出连线效应。
5. 第三轮:加入状态依赖的转角信息
做法
审查的建议:与其再加算法,不如换特征。选用状态依赖的信息:转弯角度。知道上一站在哪,就知道这一步是否急转弯;距离和信息素都只看单条边,给不出这个信息。
转移的签名里加一个转角分箱(直行、小转、直角、折返等 7 档加“无上一站”),占用 8 个新的小球。另配一个手写对照:固定的转角惩罚 exp(−γ·(1−cos 转角)),不学习,用来回答“转角上下文本身有没有用”。
结果
(300 个全新的测试实例):学习器对蚁群,R1 −0.01,R2 +0.03,R3 −0.18,全部等价;手写转角惩罚在 R2 上反而更差 0.32。
审查指出的问题(最关键的一条)
审查看了学习器的内部:在同一个静态签名里,把学到的价值按转角分箱看残差。真实连线只有 ±0.01 到 0.02,没有单调趋势;随机连线 ±0.04,符号不一致;线性学习器 ±0.1 到 0.26,但跨实例符号不一致,是噪声。
学习器没有把转角信息学出来。 转角只是 6 个输入小球里的 1 个,5% 的 KC 编码在不同转角档之间几乎一样,加上只有 25 到 50 步学习、约 4000 个不同签名,信号被淹没。所以“真实 ≈ 随机”在这里是设计的必然,不能当作连线无关的证据。
手写惩罚也只检验了“偏好直行”这一个单参数、单方向的假设,只能写“偏好直行的惩罚在这些预算下没有帮助”,不能写“转角上下文没用”。
6. 总览:三轮放在一起
几乎所有区间都跨过 0,并落在灰色的等价区里。三轮的结论:在这个蚁群框架里,学习器的收益不超过 0.5 个百分点,真实连线与打乱、随机、线性学习器等价。
7. 结论的措辞:为什么是“没有证据”
“没有用”要求实验在“有用”时确实看得出来,而这里不满足:
- 特征与距离重复,学习器没有多少新信息可学;
- 转角信息没有被表达出来;
- 学习预算很小;
- 调参噪声(约 0.4 个百分点)与要测的效应同量级;
- 没有阳性对照:没有在任务里植入已知的规律来证明这套设置能检出它。
因此只能写:在这几种设定下没有测出真实连线的优势,且设计本身可能测不出。要得到结论,需要先做阳性对照:植入已知依赖“气味组合”的结构,确认回路学习器能检出,再比较连线真假。
8. 下一篇
第 7 篇:阳性对照与自然气味。
文件位置:fly-tsp/(v1)、fly-tsp/v2/、fly-tsp/v3/,每个目录里有 PREREG_*.md、RESULTS_*.md、NOTES_*.md、verification/。图由 blog/figures/make_figures.py 生成。
文章概念网络
从章节进入正文概念。实线表示所属层级,虚线连接跨章节重复出现的概念,不代表因果关系。
40 / 54 个节点 · 正文标记术语与关键词概念
旅行商三轮:为什么我最后写的是“没有证据”,而不是“没有用”
回到原文 ↗最后更新于 2026-10-21
引用本文
@article{2026-10-21-fly-connectome-06-tsp-three-rounds,
author = {枫语},
title = {旅行商三轮:为什么我最后写的是“没有证据”,而不是“没有用”},
journal = {枫语},
year = {2026},
month = {oct},
url = {https://meiluosi.github.io/posts/2026-10-21-fly-connectome-06-tsp-three-rounds/}
}