diff --git a/docs/探索日志.md b/docs/探索日志.md index 61d478b..241090b 100644 --- a/docs/探索日志.md +++ b/docs/探索日志.md @@ -816,10 +816,12 @@ - **反直觉但自洽的一组数**:两段推理**开环更贴老师**(E1-b:0.43 vs 4.33)、**行程比更接近 1**(1.571 vs 2.445)、**到了的题还更快**(1.67 vs 2.31 s),但闭环到达掉 14.8 个百分点。逐题对照:108 题两者都到、**39 题只有 1 步能到、只有 1 题是 2 步独有** ⇒ 不是"换了一批题",是同一批题里 1 步原本能做对的那部分被卡住了。 - **卡点在安全层不在策略**:刹车从 19.25 → 86.3/题(4.5 倍),未到达组的刹车中位数从 45 → 176(几乎每步都被拒 ⇒ 原地冻结,末态误差 p50 也从 230 → 406 mm)。也就是说**发布的那 57.4% 是与"一步那套偏置且被削弱过的动作"共同标定出来的**:策略、反馈增益、认证口径、DAgger 采集分布四者都围着它。 - **两种解释必须分开,否则下一步会走错**: - - (A) 两段动作确实更危险(位移更大 ⇒ 真的穿模); - - (B) 认证过度保守(界随位移线性放大 ⇒ 明明安全的更大步也被拒)。 - 判别实验:`--safety 0` 的 steps=1 vs steps=2 对照 + 候选多样性探针(两段积分是否把 K 条候选吸到一起,让安全层没有备选可退)+ steps 的 B=1 代价实测。脚本 `ml/runs/_safetyoff_ab.sh`,结果见下面补记。 + - (A) 两段动作确实更危险(一段更长 ⇒ 真的经过障碍附近); + - (B) 拒绝来自口径而非几何。 + **先把我自己写的 (B) 改正一次**:线上安全层里没有"位移界随步长放大"这回事——它只做点检(每步的端点 + 中点,`gaps(...).min(-1) > 0`,见 `ml/sim/closed_loop.py` 的 `okstep = ok6[:, :commit_n] & ok6[:, commit_n:]`)。确定性界只在我离线做的连续认证里用。所以 (B) 不可能以"界太松/太紧"的形式成立;能以 (B) 解释的只剩两种:**点检欠采样**(那会让它偏松而不是偏严)与**候选多样性塌了**(两段积分把 K 条候选吸到一起,没有备选可退)。 + 于是判别实验定为三件:`--safety 0` 的 steps=1 vs steps=2 对照(看真实碰撞率差多少 ⇒ (A) 的直接证据)、候选多样性探针、steps 的 B=1 代价实测。脚本 `ml/runs/_safetyoff_ab.sh`,结果见下面补记。 - **对 K-MF 那条训练路线的直接含义**:把角点"训准"会让动作分布变成现在两段那样 ⇒ 按当前认证口径,到达率可能**先降**。所以训练不是下一步,先做 (A)/(B) 判别;若是 (B),收紧认证(细分/更紧的界)比训模型便宜得多,而且是 50 Hz 也必须的那块。 +- **共同标定的第三处证据(回代码确认)**:`ml/dagger/collect.py:48` 调 `rollout` 时也不传 `steps` ⇒ DAgger 采集的状态分布同样是一步走出来的。所以"一步偏置的动作"同时被三处围着标定:策略微调数据、反馈增益、认证口径。改任一处都要另两处跟上,不能指望"只换推理段数"就白拿 10 倍开环增益。 ## 分支清理(2026-10-20)