From 1b301cc58eb69841c303bd8ca26a39c5eca9a688 Mon Sep 17 00:00:00 2001 From: cbb <2625274797@qq.com> Date: Tue, 20 Oct 2026 23:51:51 +0800 Subject: [PATCH] =?UTF-8?q?exp:=20=E5=88=86=E5=B1=82=E6=8C=87=E6=A0=87?= =?UTF-8?q?=E4=B8=89=E9=87=8D=E4=BA=A4=E5=8F=89=E9=AA=8C=E8=AF=81=E9=80=9A?= =?UTF-8?q?=E8=BF=87=E2=80=94=E2=80=94success=5Freachable=200.5514/by=5Fca?= =?UTF-8?q?t(B27%,C34%)/brake=5Frate=20p50=200.5%=E4=BD=86p90=2031.5%?= =?UTF-8?q?=E3=80=81stuck=5Fshare=2023.4%=EF=BC=9B=E8=80=8122=E9=94=AE?= =?UTF-8?q?=E9=80=90=E4=BD=8D=E4=B8=8D=E5=8F=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/experiment_round43_control_strat.json | 107 +++++++++++++++++++++ docs/探索日志.md | 15 +++ 2 files changed, 122 insertions(+) create mode 100644 docs/experiment_round43_control_strat.json diff --git a/docs/experiment_round43_control_strat.json b/docs/experiment_round43_control_strat.json new file mode 100644 index 0000000..7f7ed35 --- /dev/null +++ b/docs/experiment_round43_control_strat.json @@ -0,0 +1,107 @@ +{ + "config": { + "ckpt": "ml/runs/base_dag2_dag1/best.pt", + "samples": "ml/data/samples", + "tasks": null, + "split": "val", + "n": 256, + "K": 8, + "commit": 2, + "fb": 2.2, + "ki": 0.0, + "fb_scale": 0.0, + "fb_near": 0.2, + "fb_fallback": 0.0, + "kdecay": 0.9, + "kimax": 0.5, + "fb_every": 1, + "safety_try": 0, + "sel_w": 0.1, + "dls_safety": 1, + "fb_clear": 0.0, + "fb_cmin": 0.3, + "sub_refresh": 0, + "fb_block_gain": 0.5, + "dump": null, + "out": "docs/experiment_round43_control_strat.json", + "trace": null, + "select": "endpoint", + "replan": "empty", + "safety": 1, + "partial": 1, + "inc_cap": 1, + "gap_margin": 0.0, + "cert_batch": 0, + "steps": 1, + "z_scale": 1.0, + "len_w": 0.0, + "backoff": 0, + "max_sec": null, + "seed": 0, + "dls": "analytic", + "device": "cuda" + }, + "batch_size": 256, + "batch_seed_rule": "same seed per batch", + "checkpoint_sha256": "f7f686fd8ee92fb6948fbcc4ee954636065ad87bb54f661c4f8f575bc16c2ce1", + "tasks_sha256": "249bd93457825cda98c59e64d9a096d3473c69aeb3553de1dea6d9e56be71772", + "kin_fp": "2ebcbf17", + "act_scale": 1.0, + "metrics": { + "n": 256, + "n_ref": 256, + "success": 0.5234375, + "collision_free_success": 0.5234375, + "time_ok_1p3": 0.265625, + "collision_rate": 0.0, + "collision_steps_mean": 0.0, + "travel_ratio_median": 2.615795850753784, + "time_mean_s": 2.486567258834839, + "brakes_mean": 19.5546875, + "start_fail": 0.0, + "goal_ratio_2s": 0.27920001745224, + "err_fail_med": 204.71360778808594, + "err_success_med": 0.21751396358013153, + "dls_share": 0.61328125, + "time_budget": "teacher×2(≥3 s)", + "speed_ratio_p50": 1.0000016689300537, + "speed_ratio_p95": 1.0000101327896118, + "speed_ratio_max": 1.0000101327896118, + "over_vmax_rate": 0.0, + "accel_ratio_p95": 1.0000016689300537, + "accel_ratio_max": 1.0000101327896118, + "reverse_p50": 0.24741201102733612, + "reverse_mean": 0.25991496443748474, + "reverse_moving_p50": 0.32581019401550293, + "moving_share_p50": 0.9587156176567078, + "brake_rate_mean": 0.10028044879436493, + "brake_rate_p50": 0.0051282052882015705, + "brake_rate_p90": 0.3153846263885498, + "stuck_share": 0.234375, + "n_plans_mean": 195.0, + "success_reachable": 0.5514403581619263, + "by_cat": { + "A": [ + 128, + 96 + ], + "B": [ + 74, + 20 + ], + "C": [ + 32, + 11 + ], + "D": [ + 13, + 0 + ], + "Dr": [ + 9, + 7 + ] + } + }, + "simulation_wall_s": 353.7248780000082 +} diff --git a/docs/探索日志.md b/docs/探索日志.md index 1056045..70d0524 100644 --- a/docs/探索日志.md +++ b/docs/探索日志.md @@ -108,6 +108,21 @@ - **对 `backoff` 的预期与判据**:全拒意味着"连第 1 步的端点或中点已经穿进障碍",缩步能不能救取决于**穿得有多深**(穿 0.1 mm 救得回,穿 3 mm 救不回)。这个数转储里没记(只记被选中那条),所以直接由 `backoff_mean`/`reject_all_mean` 来量: `reject_all_mean ≈ 原全拒次数`(=backoff_mean+brakes_mean,与轮次 33 cap 的 19.55 可比),`backoff_mean/(backoff_mean+brakes_mean)` 就是"缩步能救回的比例"。这是补跑(#22)要读的第一个数。 +## 分层指标上线并被三重交叉验证(轮次 43) + +- 对照配方(轮次 33 cap:1 步、`--inc_cap 1`)重跑一次带分层指标的评估:**原有 22 个指标逐位不变**,新增键全部产出(`docs/experiment_round43_control_strat.json`): + + | 新读数 | 值 | 独立离线预测 | + |---|---|---| + | `success_reachable`(排除按定义不可达的 D 类) | **0.5514** | 0.5514(逐题 dump 手算)✓ | + | `by_cat` 到达 | A 96/128=75%、B 20/74=27%、C 11/32=34%、D 0/13、Dr 7/9 | 与离线一致 ✓ | + | `brake_rate` mean / p50 / **p90** | 10.03% / 0.51% / **31.54%** | 均值与手算 19.55/195 一致 ✓ | + | `stuck_share`(brake_rate>0.2 的题占比) | **23.4%** | 与"最卡前 20% 题占 72.4% 刹停事件"同量级 ✓ | + | `reverse_p50` / `reverse_moving_p50` / `moving_share_p50` | 0.2474 / 0.3258 / 0.9587 | 离线预测 0.247 ✓ | + +- 三处独立来源(逐题 dump 手算、轨迹转储离线重算、评估内建指标)在四个数上完全对齐 ⇒ 这批分层读数可以当判据用,不只是看板。 +- **为什么现在必须有 p90/stuck_share**:对照口径的均值刹停率 10.03% 看着"差 5 倍",但真相是 **p50 只有 0.51%、p90 高达 31.5%、23.4% 的题踩在卡住线上**。以前只有均值时,`backoff` 这类"专治尾巴症状"的改动能把判据刷好而行为不变(已实测:brake_rate −16%、到达 −0.8 pp)——**没有 p90/stuck_share 就看不出这种背离**,这就是 #25 存在的理由。 + ## `backoff` 四臂判掉:转化率能买到刹停率,买不到到达——而且它能**绕过 §9.2 的判据**(轮次 43) - 同一 256 题同 seed、`--inc_cap 1 --cert_batch 1`,只改缩步档数(`docs/experiment_round38_backoff{0,1,2,3}.json`):