exp: 轮次38——两段推理开环更贴老师、行程比更近1,但闭环到达降14.8pp:瓶颈移到安全层拒绝率
This commit is contained in:
@@ -796,6 +796,30 @@
|
||||
- **收敛阶分开"有偏"与"无偏"**(区间长度 0.2→0.1→0.05,σ=2 的相对偏差):`sq`(按方案抄的 (1−λ)²/λ²)0.426→0.133→0.057,比值 ≈0.4 ⇒ **只有线性收敛 = 结构性少修一半**;`lin`(换成系数和为 1 的线性权重)0.042→0.015→0.004、`mid`(整条修正移到中点)0.147→0.042→0.010,比值 ≈0.25 ⇒ 二次收敛,只剩积分误差。
|
||||
- 跨整段 (0,1) 时**所有**单点导数写法都不可信(σ=2:sq 1.92、lin 1.84、mid 4.15 倍偏差),跨半段就降到 0.44–0.85 ⇒ 与 E1-b 的实测同向:**一步跨完本身难,两段就便宜一个量级**。这不是训练的毛病,是写法本身的量级。
|
||||
- 测试 35→38 项(缩步档 3 项)+ 新文件 `tests/test_meanflow_targets.py` 3 项 ⇒ 共 41 项。
|
||||
- **目标写法开关已落地但默认不启用**(`ml/model/meanflow.py` 新增 `avg_velocity_target(..., target='mf'|'lin'|'sq'|'mid', lam)`,`ml/train.py:162` 从配置读 `mf_target`/`mf_lam`):
|
||||
- 默认 `mf` 分支与原实现**逐位相同**(测试用同一批输入把老写法重构出来对拍 `u`、`u_tgt`、`z` 三个张量,rtol=atol=0)。
|
||||
- 接线自证:把解析高斯场做成桩喂进 `avg_velocity_target`,float32 下三种写法的偏差与 float64 解析值逐位到小数四位一致(sq 0.4262→0.1332→0.0567、lin 0.042→0.0149→0.0038、mid 0.1465→0.0422→0.0104)⇒ z_c、切向量、r 槽换位没接错。
|
||||
- 加这个开关不是为了训它,是为了"E2 若要训,先有一条不改默认路径的口子"。要不要付这次训练,等 #21 的判别结果(见轮次 38)。
|
||||
|
||||
## 轮次 38:把 `--steps` 打通之后,闭环反而变差——瓶颈从"动作质量"移到了"安全层拒绝率"
|
||||
|
||||
- **动机**:E1-b 实测同一个模型的一步输出比它自己的两段采样离老师远 **10 倍**(4.33 vs 0.43)。那就先别急着训练——直接把推理段数当自变量,量闭环。`ml/eval/eval_cl.py` 加 `--steps`(默认 1,发布口径不变),同一 256 题、同 seed、同配方只改段数:
|
||||
|
||||
| 口径 | 到达 | 时限内(≤1.3×老师) | 刹车/题 | 到点耗时 | 行程比(中位) | 成功题末态误差 | DLS 接管份额 |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| steps=1 cap=0(=轮次33 base) | 0.5742 | 0.3906 | 19.25 | 2.31 s | 2.445 | 0.189 mm | 0.625 |
|
||||
| steps=2 cap=0 | 0.4258 | 0.3555 | **86.31** | 1.67 s | **1.571** | 0.243 mm | 0.453 |
|
||||
| steps=1 cap=1(=轮次33 cap) | 0.5234 | 0.2656 | 19.55 | 2.49 s | 2.616 | 0.218 mm | 0.613 |
|
||||
| steps=2 cap=1 | 0.3945 | 0.2969 | 86.16 | 1.93 s | 1.844 | 0.293 mm | 0.445 |
|
||||
|
||||
(`docs/experiment_round36_steps2_cap{0,1}.json`;steps=4/8 同批续跑)
|
||||
- **反直觉但自洽的一组数**:两段推理**开环更贴老师**(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`,结果见下面补记。
|
||||
- **对 K-MF 那条训练路线的直接含义**:把角点"训准"会让动作分布变成现在两段那样 ⇒ 按当前认证口径,到达率可能**先降**。所以训练不是下一步,先做 (A)/(B) 判别;若是 (B),收紧认证(细分/更紧的界)比训模型便宜得多,而且是 50 Hz 也必须的那块。
|
||||
|
||||
## 分支清理(2026-10-20)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user