四十、 可靠性实验结果 + 我撤回了一个"发现" + 一次反向否证
★★★★★★★
2.1k 字 ·
源文件 进度.md 第 2130 行起 ·
memory selfcorrect
★ 完整版见
PROJECT.md§25 与journal/RESULT_INTERFERENCE_HYPOTHESIS_REFUTED_IN_REVERSE.md。
#★★★★★★ 一、可靠性实验(5 种子):墙在"保持",不在"能力"
| 种子 | 最好点条数 | 末点条数 | 最好点格距 | 末点格距 |
|---|---|---|---|---|
| s4 | 3 | 0 | 1.21 | 2.68 |
| s6 | 3 | 2 | 0.72 | 2.18 |
| s5 | 1 | 0 | 1.22 | 2.69 |
| s7 | 1 | 0 | 3.54 | 2.69 |
| s8 | 1 | 1 | 3.54 | 2.65 |
★★★ -> 3/5 的种子学到过 3 条(格距 0.72–1.22,远好于不动 3.00), 而 5/5 的末点都 ≤2 条。她能学;她留不住。
#★★★ 二、而她不是"崩掉"—— 她在解之间漂移
REL_s8 步1100 左=100% → 步1200 左=100% → 步1300 全0 → 步1400 左=50%
REL_s6 步1100 下=67% → 步1200 全0 → 步1400 左=50 下=25
REL_s7 步1200 左=50下=50 → 步1300 下=67 → 步1400 全0★ 而 ent 全程稳定 −0.24(没坍缩)⇒ 不是策略崩溃,是行为在指令间重新分配。
★ 回退起点全在 β ≤ 0.4(老师基本退出之后)。
#★★★★★★ 三、判决实验:"干扰假设"被反向否证
| 组 | 最好点条数 | n | Fisher「至少 1 条」 |
|---|---|---|---|
| 4 指令 | 3,1,3,1,1 | 5 | 5/5 |
| 2 指令 | 0,0,0,0,0,0 | 6 | ★★ 0/6,p = 0.002 |
★★★★★ -> 把指令从 4 条减到 2 条,让她【明显更难学到任何东西】。 而"四条互相干扰"预测的是相反方向 —— 所以这个直觉假设是【反的】。
#⚠️⚠️⚠️ 四、我撤回了一个"听起来很有道理"的发现
★ 我写过:"训练监控的到位率是采样,独立复评是贪心,所以两者差 2 倍。"
★★ 而读源码发现两者都是贪心(evaluate() 用 sigmoid(...) > 0.5)。
★ 真因是:我自己的探针忘了设 arrive_px(跑在默认 4.0 上,而检查点是 12.0 训的)。
★★★★ -> 一个"听起来很有道理"的解释比一个明显的 bug 更危险 —— 因为它会让我【停止查】。 ★★ 可复用的做法:任何机制解释都必须附带一条【可直接测量的预测】, 并在写进 journal 之前把它测掉。
#★★★★ 五、两个真缺陷(都影响过结论)
| # | 缺陷 | 修法 |
|---|---|---|
| 1 | ★★ 快照不存判定条件 → 复评只能回退到默认值 → 同一个快照在不同工具下判定不同 | ★ 存全 + 回填 126 个已有快照(值从各跑次自己的日志读) |
| 2 | ★★ train_cmds 在 188/188 个跑次上都是 None | ★ 逐行 match(不要对整篇用 ^)→ 现在 0/188 |
#★★★★★ 六、新增的机制(不是"再加一条教训")
| 工具 | 作用 |
|---|---|
★★ workqueue.py | 待办登记册:在我空闲时叫我做下一件事(用户指出的问题:我会闲着) |
★★★★ gate.py | 把修过的每个 bug 变成一条可重跑的核对(7 组)—— "记录教训与防止重犯之间的机制连接" |
★★★ calibrate_gate.py | 校准闸门:故意弄坏两处,确认它真的会失败 |
★★ audit_static_silent_failures.py | 静态审计"算了但没落盘"与 except: pass |
★ 闸门从 76 项失败收敛到 0(限定在【当前在用的 7 个 .ps1】—— 回测 60 个历史脚本是噪音)。
#★ 七、下一步(已定,判据待写)
区分两个机制候选:
(a)指令数是"辅助信号"(2 条时示范分布多样性减半) vs (b)她需要更多机会碰到一个"能学会的角落"。
★ 实验:训练 4 条指令,但评估只看那 2 条 —— 若"至少 1 条"的比例回到 5/5,则是(b);若仍是 0,则(a)不成立。