§31. 保持机制到打字通道(2026-10-04 晚)

· ★★★★★★ 2.4k 字 · 源文件 PROJECT.md 第 5365 行起 · ruler arch optim ground read memory

#§31.1 ★★★ 摇杆线的五个修法(三种子)

配置 = --rl-scale 0 + --lr-end 0 --lr-decay-frac 0.5 + --best-eval-n 96

  • --best-from-snapshots + --restore-best-at-end + --snapshot-every 100。
种子最好点末点之比
s495.8% / 0.75 格95.8%1.00
s694.8% / 0.77 格94.8%1.00
s8100.0% / 0.66 格100.0%1.00

★ ★ ★ 根因:末段参数更新步长过大。判据 = 末点相对最好点。 决定性单变量实验:REL_s4(恒定 lr)vs LRD_s4(后半段降到 0) —— 前 600 步逐位相同,而末点 0.0% vs 89.6%。

#§31.2 ★★★ 训练是【确定性】的

同配置 + 同种子,跨两次运行(间隔约 3 小时)给出逐项相同的读数 (TANH_s4/s6/s8 vs T1_s4/s6/s8)。 ⇒ 一条跑次的信息量比通常大,而“这次运气好”不是一种解释。

#§31.3 ★★ 无效应的已答项(不要重测)

项结论
激活 tanh ↔ clip无稳定效应(配对符号 +9.3 / −5.2 / 0.0pp;均值差 1.37pp < 种子内散布 4.2pp)⇒ 保留 tanh
--threads 2比 1 线程慢约 7%,且不改变训练结果 ⇒ 用 --threads 1
2 并发1.23× 吞吐,但显存 60% → 92% ⇒ 单跑次是正确模式

#§31.4 ★★★★ 打字线(exp31):本来一个修法都没有

实测:打字线此前只有 --save-best;--lr-end / --restore-best-at-end / --best-eval-n / --snapshot-every / --best-from-snapshots / --best-min-step 全部为新增(默认关)。

任务(core/envs/read_screen.py):屏幕给一个字符,模型在 T 刻内用 77 键把它录入 (汉字 → 拼音);奖励 Φ = −编辑距离;老师 β: 1→0 逐刻纠正。

#§31.5 ★★★★ T5 第一轮:不可读解(任务未学会)

权威口径(tools/eval_clean.py,4 条件 × 96 题):

检查点有回显无回显留出有认字
T5_s4_best.pt0.01040.01040.00000.0104
T5_s4.pt(末点)0.01040.01040.00000.0104
snap22000.15620.01040.09380.3229
snap30000.18750.01040.14580.3438

★ 一度到达 最好 0.1875(而插入前的 800 步竟评估只有 0.083) ⇒ 任务比摇杆难得多(摇杆 1400 步最好点 95.8–100%)。 ★ 而 snap2200 → snap3000 是上升的(15.6% → 18.75%,留出集 9.4% → 14.6%) —— 与摇杆线的 "rise-peak-fall" 不同。

#§31.6 ★★★★ 发现的缺陷(均已修)

#缺陷修法
①选点在会变的池上取最大值:课程使池 2→33→84→134→142(步 2200 才满),于是步 200 的 100%(只有 2 个字)被选为最好点新增 --best-min-step
②tools/eval_clean.py 硬编码 backbone=256 ⇒ 加载 --backbone 16 直接崩从检查点读规模
③训练集 247 字 vs 评测集 142 字不对齐--chars-json 对齐(留出 48 字不见)
④--best-from-snapshots 并未真的限制候选集(旧逐步路径仍在更新)_legacy_ok(默认关 ⇒ 旧行为不变)
⑤--best-eval-n 在 exp31 里是死旗标现在真生效

#§31.7 ★★★★★ 旧结论的更正索引

见 journal/CORRECTIONS_INDEX_FROM_TWO_INDEPENDENT_AUDITS.md(由两个独立子智能体审计得出)。 最高风险的一条:"冻主干 = 累积器,全参 = 替换器"读起来像机制,而只有 FT_s4 一个种子; FT_s6 的最好点(60.4%)低于它自己的起点(75.0%)。


← 返回《PROJECT.md》目录