§29 2026-10-04 凌晨 03:10:"留住"这件事有解了 —— 两个零架构改动的修法

· ★★★★★★★ 2.7k 字 · 源文件 PROJECT.md 第 5234 行起 · discipline ruler arch optim memory

★ 本节是今晚的收口。★ 全部读数用权威口径 eval_f2_all_checkpoints.py。 ★ 主读数按铁律 = 末点相对最好点。 → 完整:journal/RESULT_T5_FINAL_FOUR_INDEPENDENT_EVIDENCES.md、 journal/RESULT_LRD_DECISIVE_LATE_STEP_SIZE_IS_THE_CAUSE.md、 journal/TASK_BOARD_LIVE.md

#29.1 ★★★★★★★ 两个修法(都不改任何架构)

#★ 修法★ 它做什么★ 证据★ 成本
①★★★ --restore-best-at-end★★ 把末点换成最好点(纯报告层)★★★★ 4 个跑次★ 零(不改训练)
②★★★ --lr-end 0(后半段 lr → 0)★★★ 让末点不丢,甚至超过最好点★★ 1 个跑次(LRD_s4)★★ 要重训

#29.2 ★★★★★★★ 修法 ① 的四个独立证据

#★ 跑次★ 最好点在步★ 最好点★ 干预后末点★ 未干预末点★ 收益
1FRZ_s1110038.5% / 1.63★★ 38.5%★★★ 0.0%+38.5pp
2FRZB_s6 vs FT_s6160.4% / 0.74★★ 60.4%★★★ 21.9%+38.5pp
3★★ FRZ_s3800★ 39.6% / 1.00★★ 39.6%★★★ 0.0%+39.6pp
4⚠️ FRZ_s2125.0% / 3.55(假阳性)25.0%25.0%★ 0

★ 参数逐位验证:三次 {arm}.pt vs {arm}_best.pt 的差都是 0.000000e+00。

★★★ 判据 T5 成立且超出要求:T5-a ✓ 3/3 个可测种子 · T5-b ✓ · T5-c ✓(3 个)

#29.3 ★★★★★★★ 修法 ② 的决定性证据(LRD_s4)

步★ REL_s4(恒定 lr)到位率★ 每100步★ LRD_s4 到位率★ 每100步★ lr_eff
4000.0%0.0010700.0%★ 0.0010700.001000
60060.4%0.00523060.4%★ 0.0052300.001000
80025.0%0.002347★ 75.0%0.0024520.000857
120021.9%0.003639★★ 89.6%0.0015050.000286
★★ 1400★★★ 0.0%★★★ 0.008194★★★ 89.6%★★★ 0.000411★ 0

★★★★★★★ -> 前 600 步【逐位相同】⇒ 这是一个干净的单变量判别。 末段移动慢 20 倍,而末点从 0.0% 变成 89.6%(甚至超过最好点 60.4%)。 ⇒ 判决:后半段的【大步长】就是丢失的原因。

#29.4 ★★★★★★ 一条修正了项目最早结论的发现

★ "任何单次最多同时活 3 条"只对 REL 成立:

★ 组★ 同时活 4 条
REL(移除 π 前)★ 0/3
RLO(移除 π 后)★ 2/3

★ Fisher p = 0.4000(不显著)⇒ 它只能支持"那条上限句需要附条件"。 → journal/CORRECTION_THE_SIMULTANEITY_LIMIT_IS_CONDITIONAL_ON_PI.md

#29.5 ★★★★★ 而"两个判据不同型"是一个待修的实现缺陷

★ --save-best 只看到位率,而 eval_f2 用"到位率 且 格距" ⇒ 它已经选出过 3 个假阳性(REL_s8_best.pt、FRZ_s2_best.pt、REL_s8_best_snap200.pt)。 ★★★ -> 正确的组合是:先把 --save-best 的规则改成两个判据的合取,再用 --restore-best-at-end 保住它。

#29.6 ★★★ 下一步

#★ 干预★ 它测什么★ 状态
1★★★ C2_s4(--rl-scale 0 + --lr-end 0)★★★ 两条最强修法叠加★ 在跑
2★★ LRD_s6/s8修法 ② 的第 2–3 个种子★ 在跑/排队
3★★ FT2_s6那个 60.4% 的点是否可改进★ 排队
4★★ 把 --save-best 改成两个判据的合取修掉假阳性★ 未开工

← 返回《PROJECT.md》目录