§27 2026-10-04 凌晨:根因是一条"曲线拟合直线",而修法有三个选项

· ★★★★★★★ 4.8k 字 · 源文件 PROJECT.md 第 4950 行起 · goal discipline ruler arch optim

★ 本节取代 §26 的结论(§26 说"病因在优化动力学",那是对的但不完整)。 ★★ 读本节前先读 journal/ROOT_CAUSE_CHAIN_ARCTANH_PUSHES_TARGETS_INTO_TANH_SATURATION.md。

#27.1 ★★★★★★★ 根因链(七环,每一环都有实测或源码依据)

#环节★ 依据
1教师靶由 clip(d/MOVE_PX, ±0.98) 得到(线性裁剪)源码
2教师再把它 arctanh 成 logits ⇒ 极值 ±2.298源码 + 实测(目标极差 4.595)
3策略侧 stick = tanh(logits)源码 screen_agent.py:340
4⇒ 要复现教师的 ±0.98,策略 logits 必须到 ±2.3数学
5★★ 而在 ±2.3 处 tanh 的导数只有 0.01 ⇒ 梯度被压 100 倍数学
6⇒ 输出被"缩小"2.2 倍★ 实测(两个跑次,a* = 2.20)
7⇒ 误差集中在"到位前"窗口(RMSE 1.30 vs 0.17)★ 实测

★★★★★ -> 一句话:arctanh 把靶推到了 tanh 的饱和区 —— 模型被要求用一条【曲线】去拟合一条【直线】。

#27.2 ★★★★★★★ 三个修法选项(已实测)

选项★ 内容★ 到位前 RMSE★ 授权
① 不动保持 tanh + arctanh0.85–1.12—
★★ ② 推理时把摇杆 logits × 2.2一处、可逆;输出仍在 (−1,1) 内★ 0.19★ 不需要
★★★ ③ 把摇杆饱和从 tanh 换成 clip(与教师一致)两处(教师侧 + 环境侧)★★★ 0.0026★★ 需要 + 重跑基线

#27.3 ★★★★★★★ 而"学得多好"与"保持"是两件可分的事

#★★★★★★★ 而 π 项的效果在三个种子上有统计支持(2026-10-04 凌晨补)

跑次上左右下★ 合计★ 活着的条数
REL_s4(有 π)241915★ 058/963
★ RLO_s4(无 π)24241424★★ 86/96★ 4
REL_s6(有 π)2424★ 02472/963
RLO_s6(无 π)24★ 0192467/963
★★ REL_s8(有 π)24★ 0★ 0★ 0★★★ 24/96★ 1
★ RLO_s8(无 π)19192424★★ 86/96★ 4
对比★ 差★ Fisher p
REL_s4 → RLO_s4+29.2pp0.0000
REL_s6 → RLO_s6−5.2pp0.5187
REL_s8 → RLO_s8★ +64.6pp0.0000
★★★ 合并三个种子154/288 → 239/288★★ +29.5pp,p = 0.0000

★★★★★★★ -> 判定:移除 π 显著提高最好点(+29.5pp,p = 0.0000)。 ★★★ 而只看 s6 会得出"没有效果"(p = 0.519)⇒ 合并检验是必须的。

★★★★★★ REL_s8 是最强证据:有 π 时她退化成"只会一条"(24/96), 去掉后【四条都活】(86/96)。

#★★★★★ 机制:π 让离散控制维度的 logits 饱和

跑次★ 全部 `\max\`摇杆两维★ 其余维`\x\>10`p50
REL_s4(有 π)59.412.68★ 59.41★ 88.6%27.22
★ RLO_s4(无 π)4.382.58★ 4.38★ 0.0%1.98
REL_s6(有 π)35.072.7235.0759.8%11.20

★★★★★ -> π 把键/鼠标/emit 那些维度的 logits 推到 27–60, 而那里的 sigmoid 完全饱和(exp 溢出)⇒ 梯度 ≈ 0 ⇒ 那些维度只能用"开关式"更新,而它们通过【共享读出向量】影响摇杆侧。 ★ 而摇杆两维一直温和(2.58–2.72,恰在教师靶 ±2.298 附近)。

#★★★★★ 而"保持"仍然未被解决(且我已更正一条说法)

跑次★ 最好点★ 之后均值★ 保持率(之后均值 / 最好点)
REL_s460.4%17.2%28.5%
★ RLO_s489.6%4.2%★ 4.7%
REL_s675.0%12.5%16.7%
RLO_s659.4%27.1%45.6%
REL_s825.0%6.8%27.1%
★ RLO_s881.2%33.3%★ 41.0%
组★ 保持率(三种子)★ 均值
REL(有 π)28.5% / 16.7% / 27.1%24.1%
★ RLO(无 π)4.7% / 45.6% / 41.0%30.4%

★★★★★★★ -> 更正:我曾用日志口径说过 "移除 π 改善了保持(最好点之后均值 1.38 → 3.50)"。 用权威口径(eval_f2,24 题/指令)重做后【不成立】: RLO 在 3 个种子里 2 高 1 低,而种子间方差(4.7 ↔ 45.6)远大于组间差(24.1 vs 30.4) ⇒ 不能宣称改善。

★★★ -> 所以 W2 的最终判定只有一条成立: π 移除显著提高【最好点】(+29.5pp,p = 0.0000); 而它对【保持】没有可靠效果。

★ T5 的离线上界已测:REL_s4 66.7% / RLO_s4 100%。

#27.4 ★★★★★ 一条被推翻的旧读数:日志口径系统性偏低

口径★ REL_s6_best.pt
★ 检查点复评(独立工具,贪心)★ 75.0% / 0.72 格
★ 我的贪心探针100%
★★ 训练日志的逐指令读数★★★ 显著更低

⇒ 从本节起,所有"她学会了几条"的读数只允许来自【检查点复评】; 训练日志只用于看趋势且必须标注"日志口径"。

#27.5 ★★★★★★★ 末段大更新的驱动项 = v(价值项)(2026-10-04 凌晨补)

★ 这一条填掉了旧契约里"未测出:末段大更新由哪一项驱动"那个空格。 数据:GN_s5(--gn-split,1270 个落盘点,KL_COEF = 0 ⇒ 四路分解完整)。

项★ 相对变化(末段 vs p10)★ 中位梯度范数
★ v(价值项)★★ 6.52x(最大)0.031
pi3.18x0.384
ent2.00x0.001
sup★ 0.36x(下降)★ 4.614(最大)

最大/第二 = 2.05 ⇒ 判据成立 ⇒ 驱动项是 v。

#★★★★★ 而它带来三条更正

#★ 更正
1★★ "谁最大"与"谁在末段增长"是两个不同的问题 —— sup 绝对量级最大(sup/pi = 12.02x)但在末段下降
2★★★ 证伪审计 F5("三项尺度差一个数量级"):实测最大/最小 = 5724x(3.4 个数量级)
3★★★ "参数更新最大" ≠ "梯度最大" —— 末段参数更新最大(37–50%)而 sup 的梯度范数在下降;两者不矛盾,因为 Adam 的步长 ≈ lr·m̂/√v̂ 与梯度【大小】近似无关,而与【方向一致性】有关

#★★ 一条可零成本检验的预测

若 v 是驱动项,那么 --v-coef 0.0 应减小末段漂移 ⇒ 队列里的 IMO 正好能检验它(与 W2 只移 pi 对比)。

#27.6 ★★★ 今晚的元事实:我改了 23 次结论

★ 其中第 183 条教训("用一个终点的读数定义一个过程的类型")复现了 2 次。 ★ 而 20 处实现层的错误也被逐一修正(含一个导致两个训练同时跑的闸门竞态, 已改成 OS 级原子文件锁并通过验证)。

★★ 完整台账:journal/CRITERIA_LEDGER.md、journal/GOAL_NAVIGATION.md、 journal/SESSION_SUMMARY_2026-10-03_NIGHT.md、journal/INTERVENTION_PREDICTIONS.md。


← 返回《PROJECT.md》目录