十七、10-01 下半场:一个贯穿性的模式(这比单个发现更重要)
#★★★ 今天发现的四件事,其实是同一个形态
| # | 项目设计了什么判别条件 | 实际用了什么 | 后果 |
|---|---|---|---|
| 1 | 认字:--echo-drop 0.5(逼她自己记住前缀) | ★ 78/96 个跑次用了 0.0(回显恒开) | 学会"看屏幕抄",无回显就崩 |
| 2 | 接地线:--hide-after N(指令消失后仍能完成) | ★ 65/65 个跑次用了 0(永不消失) | 工作记忆从未被测量 |
| 3 | --pred-coef(自监督"预测下一刻") | ★ 绝大多数跑次没开 | "必须保持"的压力不存在 |
| 4 | --pi-init-std 默认 0(我加的,为保持旧行为) | ★ 我以为默认值是"旧行为",其实旧行为是没有这个参数 | — |
★★★ 共同形态:项目设计了正确的判别条件,而【默认值让它们不生效】, 于是读出来的数看起来"还行",但【测的不是那个能力】。
#★★ 而"照抄屏幕"这件事,项目早就知道
--echo-drop 的帮助文本写着:
"0.0 = 旧行为(回显恒开)。建议 0.5。" 附实测:"回显关掉后整串 22.7% → 3.1%,而认字一格不变"
→ 这不是新发现,是"记录过、设计了开关、但默认值让它不生效"。
#★★★ 而我今天真正做成的事
| # | 做成了什么 |
|---|---|
| 1 | ★★ 建起了"干净读数":tools/eval_clean.py(独立评测,一次测完 有/无回显 × 训练/留出)<br>★ 为什么必须:曲线 json 里只有"能作弊"那一版读数 |
| 2 | ★★ 建起了"可判阈值":tools/baseline_stats.py(MDE,效应须 > MDE 才算数) |
| 3 | ★★ 建起了"配置核对":tools/diff_two_runs.py(比较两条跑次前先列出所有差异)<br>★ 曾靠它发现 var_s0 vs P0v2 有 12 个参数不同(我只看见 1 个) |
| 4 | ★ 排除了"确定性"这条怀疑(单变量:+1.0pp << MDE) |
| 5 | ★ 确认了 echo_drop 是"会不会写"的单变量决定因素 |
| 6 | ★ 加速度 + 触觉两个通道【真正接通】(新 18 维梯度非零),而旧的"实现完成"是假的 |
#★ 现在的可信基线
| 条件 | 3 种子均值 | MDE |
|---|---|---|
echoOFF(真会写) | 0.368 | 0.067 |
copy(照抄的贡献) | 0.052 | 0.091 |
→ 任何后续对照的效应 < 6~9pp 一律写"在种子噪声内,未观测到效应"。
#⏳ 正在跑 / 待做
| # | 事 | 判据 |
|---|---|---|
| 1 | ★ BASE_s3/s4/s5(判双峰 vs 回归) | 若有 ≥1 个 ≥0.8 -> 双峰确认;若 3 个全低(当前代码 6/6 低)-> 回归,要二分定位 |
| 2 | ★ 接地线 --hide-after N(第一次真正测工作记忆) | 指令消失后仍能完成? |
| 3 | ★ 在好配方上重做 units / 读出 / pi-init-std | 全部用 MDE 口径 |
| 4 | P2/P3 的行为判据 | 关奖励后被碰到行为是否变化 |