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-foraging/)
这个项目最早的起点是一个更大的问题:递归式自我改进(RSI)。一个系统如果能改进自己的学习方式,改进之后又更会改进自己,会发生什么?落到一个有真实结构的学习器上,就是果蝇蘑菇体:回路清晰,学习规则可以写出来,连线是真实的。
这一篇做的只是给学习规则的 5 个参数做自动调参,离真正的 RSI 很远,第 7 节说明远在哪里。两个问题:自动调出的规则比手调的好多少?真实连线和随机连线,谁从调参里受益更多?
1. 问题设定:进化什么、怎么进化
学习规则只留 5 个可调的数,运动常数(转向幅度、先天吸引)和其余部分不动,起点是手调默认值:
| 参数 | 含义 |
|---|---|
| 正预测误差的学习率 | 比预期更好时,突触改多少 |
| 负预测误差的学习率 | 比预期更差时,突触改多少(与上一项分开) |
| 遗忘速率 | 突触强度每步向初值回落多快 |
| KC 稀疏度 | 最强的多少比例的 KC 参与编码 |
| 价值的转向权重 | 学到的价值对转向的影响有多大 |
外层是 OpenAI 风格的进化策略:对 5 个参数的中心点加噪声得到 16 个候选(8 对对偶),每个候选在 12 个训练世界里觅食,按平均净奖励排名,沿排名高的方向移动中心点,共 25 代。训练世界的反转周期取自 1000、2000、3000,一致与冲突世界各半,与评估世界不重叠。连线有三种(真实、打乱、随机稀疏),每种 3 个独立的进化种子,共 9 次进化。
2. 评估设计:用最后一代,不挑最好的
评估用最后一代的中心点,不挑代、不挑种子。评估世界是 100 个从未用过的世界,三种条件:
- in-dist:反转周期与训练同分布;
- fast:反转周期 500,更波动(分布外);
- stationary:全程不反转(分布外)。
预先登记的判据:进化后减手调默认值的配对差,区间下界大于 0 且提升至少 6,并在 3 个进化种子里至少 2 个满足。
3. 第一次结果
3.1 提升:小而整齐
in-dist 世界的平均净奖励:
| 连线 | 手调默认 | 进化后 | 提升 |
|---|---|---|---|
| 真实 | +29.6 | +33.9 | +4.3 |
| 打乱 | +27.1 | +32.1 | +5.0 |
| 随机稀疏 | +33.8 | +40.7 | +6.9 |
方向全为正,多数区间不含 0,但幅度多数没到 +6。按判据,in-dist 上只有随机稀疏成立(3 个里 2 个),真实 1 个,打乱 0 个。当时的读法是“手调默认值已接近最优”,第 4 节之后被推翻。
3.2 连线:真实对打乱、对随机稀疏
真实 − 打乱:+3.5、+0.5、+1.5,等价或不确定。真实 − 随机稀疏:−2.7、−8.7、−8.8,三次里有两次随机稀疏明显更好。与第 3 篇一致:真实连线没有显出优势。
3.3 参数:进化选了什么
- KC 稀疏度全部从 5% 降到约 2%,九次一致。
- 负预测误差的学习率大于正的,9 次里有 7 次(后面显示单独做这个不对称没有好处,很可能是其他参数的副产品)。
- 价值的转向权重略降。
3.4 异常:没有一次进化选择遗忘
预先写下的猜想是:世界波动越快,遗忘越有益,因为奖励会反转。结果 9 次进化的遗忘速率全部停在搜索下界(1e-5)。分布外结果也反常:提升在更波动的 fast 世界里最小(−0.5 到 +2),在不反转的世界里最大(+4 到 +9)。
初稿的解释是“奖励反转时学得快比遗忘重要,负误差本来就能压掉旧价值”,当时标注为未检验。
4. 验证:手动扫描遗忘
预先登记(fly-foraging/forget/PREREG_forget.md):不让进化去找,直接扫描遗忘速率,同时扫学习速度和正负误差的不对称,100 个全新世界(种子 6000–6099),三种条件。预测:遗忘不帮忙,学得快在更波动的世界里受益最大,不对称略好。
预测几乎全部错误:
- 遗忘在波动的世界里明显有帮助。 fast 世界里遗忘速率 3e-3、1e-2 把净奖励从 +5.2 提到 +17.4、+17.7(+12,区间 [+9.9, +14.4]、[+9.8, +15.0]);反转周期 1000 到 3000 的世界里 1e-3、3e-3 提升约 +10。登记的两个主结论:1e-2 对 0 为“更好”,1e-3 对 0 为 +3.5,区间 [+1.6, +5.4],低于界限 4,判“不确定”。
- 在不反转的世界里遗忘伤害很大。 1e-3 掉 12.8,1e-2 掉 40.7,3e-2 掉 54.8。
- 在进化结果上强制加遗忘,结论相同。 3 个进化结果加 1e-3 遗忘,in-dist 再提升 +8 到 +10,比进化自己找到的 +4 到 +7 还大。
- “学得快更重要”只对一半。 学习率调低(0.25 倍)在三种世界里都变差;调高(2 倍、4 倍)没有额外好处,默认值已在学习率的平台上。
- “负误差学得快”没有被支持。 单独加倍或翻四倍负误差学习率,fast 世界里无差别,不反转世界里更差或不确定。
结论:遗忘在波动世界里有益、在稳定世界里有害,与最初的猜想一致;失败的是进化,它没有机会找到这个。
5. 归因:进化为什么找不到
遗忘速率的编码是 decay = 10^(−5 + 3.5·sigmoid(θ))。手调默认值是“不遗忘”,编码后起点 θ = −6,落在 sigmoid 的平坦尾部:θ 变一个单位,遗忘速率只变约 2×10⁻⁷,候选之间没有可分辨的奖励差异。要走到有效的 1e-3 需要 θ ≈ +0.3,距起点 6.3,而进化每代的步长只有零点几。第一次进化的历史印证了这点:9 次进化中遗忘参数 θ 始终在 −6 附近游走(−5.6 到 −6.3),没有方向。
所以“9 次进化都没选遗忘”是搜索空间的参数化造成的,不是遗忘没用。这个缺陷在登记时没有发现,审查也没有抓到。
6. 重跑:修好起点之后的进化
预先登记(fly-foraging/meta2/PREREG_meta2.md):只改一处,把遗忘参数的初始 θ 从 −6 挪到 0(遗忘速率约 5.6e-4,sigmoid 中段),其余与第一次完全相同。9 次进化,评估用全新的 100 个世界(种子 6100–6199)。
- 9 次进化全部选了遗忘: 最终遗忘速率 1.2e-3 到 2.2e-3,印证了归因。
- in-dist 提升从 +4 到 +7 变成 +14 到 +21: 三种连线、三个种子共 9 个,全部满足“下界大于 0 且提升至少 6”;与第一次进化相比,每个种子又多 +8 到 +15。
- fast 世界提升 +7 到 +11。
- stationary 世界变差 8 到 15。 训练世界全是会反转的,进化学会了遗忘,在从不反转的世界里要付代价。
- 连线结论不变: 真实 − 打乱为 +2.8、−0.9、−1.0(区间都在 ±6 内,等价);真实 − 随机稀疏为 −5.2、−8.9、−4.3,随机稀疏方向一致地更好,但按判据只有 1 个种子达到“明显更好”。
所以“进化只给小提升”是第一次进化被卡住的结果。解锁之后,自动调参在这个设置里的提升约为第一次的 3 倍,代价也清楚:在训练时没见过的稳定世界里变差。
7. 反思:离“自我改进”有多远
RSI 指系统改进自己,改进之后改进自己的能力也变强,如此循环。这里至少差三层:
- 改的只是 5 个数。 规则的形式、回路的结构、气味的编码都没有动,外层没有机会发现新的学习规则。
- 外层本身是固定的。 种群、步长、代数都是人定的,外层不会被改进,只有一层,谈不上递归。
- 外层的搜索空间决定它能找到什么。 第 5、6 节是最直接的例子:同一个进化策略,只因为遗忘参数的起点不同,提升从 +4 到 +7 变成 +14 到 +21。一个自我改进的系统,先要保证它自己的改进器没有盲区。
8. 局限
- 只有 3 个进化种子,区间只对世界做自助法,不含进化本身的方差。
- 进化目标是训练世界的平均奖励,换一组世界,最优参数可能不同;stationary 世界的下降已说明这一点。
- 手调默认值是在调参世界上选的,不是任意起点。
- 重跑的起点 θ = 0 本身带有遗忘,是有意的设计选择;没有测试其他起点是否也走到同一处。
- 只进化 5 个参数,没有探索结构。
9. 下一篇
第 6 篇:旅行商三轮。
文件位置:fly-foraging/PREREG_meta.md、RESULTS_meta.md、forget/(遗忘扫描)、meta2/(重跑)、forage2.py、evolve.py。图由 blog/figures/make_figures.py 生成。
文章概念网络
从章节进入正文概念。实线表示所属层级,虚线连接跨章节重复出现的概念,不代表因果关系。
62 / 66 个节点 · 正文标记术语与关键词概念
让进化去调学习规则:离“自我改进”有多远?
回到原文 ↗最后更新于 2026-10-21
引用本文
@article{2026-10-21-fly-connectome-05-meta-learning,
author = {枫语},
title = {让进化去调学习规则:离“自我改进”有多远?},
journal = {枫语},
year = {2026},
month = {oct},
url = {https://meiluosi.github.io/posts/2026-10-21-fly-connectome-05-meta-learning/}
}