From 00602f3f0b68752ef5e0c779f0d1ac13bb45b07e Mon Sep 17 00:00:00 2001 From: cbb <2625274797@qq.com> Date: Tue, 20 Oct 2026 22:53:07 +0800 Subject: [PATCH] =?UTF-8?q?exp:=20#21=E5=AE=9A=E6=A1=88=E2=80=94=E2=80=94?= =?UTF-8?q?=E5=85=B3=E9=97=B8=E5=90=8E=E4=B8=A4=E6=AE=B5=E6=AF=8F=E6=A0=BC?= =?UTF-8?q?=E9=83=BD=E4=B8=8D=E6=9B=B4=E5=B7=AE(=E7=A2=B0=E6=92=9E?= =?UTF-8?q?=E6=AD=A558.3=E2=86=9245.1)=EF=BC=8C=E4=B8=BB=E5=9B=A0=E6=98=AF?= =?UTF-8?q?=E5=80=99=E9=80=89=E5=A1=8C=E7=BC=A935=E5=80=8D=EF=BC=9B?= =?UTF-8?q?=E5=AE=89=E5=85=A8=E5=B1=82=E5=80=BC25.4pp=E5=88=B0=E8=BE=BE?= =?UTF-8?q?=E4=BD=86=E5=87=80=E6=94=B6=E7=9B=8A=E4=B8=BA=E6=AD=A3(?= =?UTF-8?q?=E7=BA=AF=E7=AD=96=E7=95=A5=E6=97=A0=E7=A2=B0=E6=92=9E=E5=88=B0?= =?UTF-8?q?=E8=BE=BE=E4=BB=850.359)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/experiment_round40_safetyoff_steps1.json | 82 +++++++++++++++++++ docs/experiment_round40_safetyoff_steps2.json | 82 +++++++++++++++++++ docs/探索日志.md | 18 ++++ 3 files changed, 182 insertions(+) create mode 100644 docs/experiment_round40_safetyoff_steps1.json create mode 100644 docs/experiment_round40_safetyoff_steps2.json diff --git a/docs/experiment_round40_safetyoff_steps1.json b/docs/experiment_round40_safetyoff_steps1.json new file mode 100644 index 0000000..6d79742 --- /dev/null +++ b/docs/experiment_round40_safetyoff_steps1.json @@ -0,0 +1,82 @@ +{ + "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_round40_safetyoff_steps1.json", + "trace": null, + "select": "endpoint", + "replan": "empty", + "safety": 0, + "partial": 1, + "inc_cap": 0, + "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.77734375, + "collision_free_success": 0.359375, + "time_ok_1p3": 0.53515625, + "collision_rate": 0.5859375, + "collision_steps_mean": 58.33984375, + "travel_ratio_median": 2.375220775604248, + "time_mean_s": 2.3642210960388184, + "brakes_mean": 0.0, + "start_fail": 0.0, + "goal_ratio_2s": 0.0402195081114769, + "err_fail_med": 50.388858795166016, + "err_success_med": 0.1961677223443985, + "dls_share": 0.84765625, + "time_budget": "teacher×2(≥3 s)", + "speed_ratio_p50": 1.6600004434585571, + "speed_ratio_p95": 1.660003662109375, + "speed_ratio_max": 1.660003662109375, + "over_vmax_rate": 1.0, + "accel_ratio_p95": 1.5426017045974731, + "accel_ratio_max": 1.6600004434585571, + "reverse_p50": 0.2846153974533081, + "reverse_mean": 0.2833859324455261, + "reverse_moving_p50": 0.2846153974533081, + "moving_share_p50": 1.0, + "brake_rate_mean": 0.0, + "brake_rate_p50": 0.0, + "n_plans_mean": 195.0 + }, + "simulation_wall_s": 52.50466950000555 +} diff --git a/docs/experiment_round40_safetyoff_steps2.json b/docs/experiment_round40_safetyoff_steps2.json new file mode 100644 index 0000000..fe1ac4e --- /dev/null +++ b/docs/experiment_round40_safetyoff_steps2.json @@ -0,0 +1,82 @@ +{ + "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_round40_safetyoff_steps2.json", + "trace": null, + "select": "endpoint", + "replan": "empty", + "safety": 0, + "partial": 1, + "inc_cap": 0, + "gap_margin": 0.0, + "cert_batch": 0, + "steps": 2, + "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.81640625, + "collision_free_success": 0.375, + "time_ok_1p3": 0.68359375, + "collision_rate": 0.55859375, + "collision_steps_mean": 45.07421875, + "travel_ratio_median": 1.5936355590820312, + "time_mean_s": 2.019808530807495, + "brakes_mean": 0.0, + "start_fail": 0.0, + "goal_ratio_2s": 0.003008240135386586, + "err_fail_med": 48.19245529174805, + "err_success_med": 0.2415877878665924, + "dls_share": 0.8515625, + "time_budget": "teacher×2(≥3 s)", + "speed_ratio_p50": 1.6600004434585571, + "speed_ratio_p95": 1.660003662109375, + "speed_ratio_max": 1.660003662109375, + "over_vmax_rate": 0.9921875, + "accel_ratio_p95": 1.010289192199707, + "accel_ratio_max": 1.4423871040344238, + "reverse_p50": 0.08469945192337036, + "reverse_mean": 0.09047156572341919, + "reverse_moving_p50": 0.08469945192337036, + "moving_share_p50": 1.0, + "brake_rate_mean": 0.0, + "brake_rate_p50": 0.0, + "n_plans_mean": 195.0 + }, + "simulation_wall_s": 58.29419349999807 +} diff --git a/docs/探索日志.md b/docs/探索日志.md index bbc97a1..efff8cc 100644 --- a/docs/探索日志.md +++ b/docs/探索日志.md @@ -107,6 +107,24 @@ - **对 `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)要读的第一个数。 +## 判别定案(#21):两段动作不是"更危险",是"没有备选";顺带量出安全层值多少到达 + +- 关安全层(`--safety 0`,同 256 题、`--inc_cap 1`,只改段数): + + | 口径 | 到达 | **无碰撞到达** | 碰撞率 | 碰撞步/题 | 时限内 | 行程比 | + |---|---|---|---|---|---|---| + | pure steps=1 | 0.7773 | 0.3594 | 0.5859 | 58.34 | 0.5352 | 2.375 | + | pure steps=2 | **0.8164** | **0.3750** | **0.5586** | **45.07** | **0.6836** | **1.594** | + | 开安全层 steps=1(对照) | 0.5234 | 0.5234 | 0 | 0 | 0.2656 | 2.616 | + | 开安全层 steps=2 | 0.3945 | 0.3945 | 0 | 0 | 0.2969 | 1.844 | + + (`docs/experiment_round40_safetyoff_steps{1,2}.json`) +- **结论 1(判据 #21 定案)**:关掉安全层以后,两段在**每一格都不更差**——到达更高(+3.9 pp)、时限内高一大截(+14.8 pp)、**碰撞步反而更少**(58.3→45.1)、行程比更接近老师。⇒ "两段动作更危险"被否;两段在开环与纯策略口径都更好,它唯一输的地方是"开安全层时刹车多 4.5 倍"。 +- **结论 2(机理)**:这正好是候选塌缩的必然结果——`steps=2` 时 K 条候选的一阶步标准差从 0.852 掉到 0.0245(35 倍),"塌成一条"以后,那条在采样点上穿模就等于**全拒**;`steps=1` 时候选彼此差得远,总有一条能过。所以"没有备选"是主因,不是"界太保守"(线上只有端点+中点点检,没有位移界)。 +- **结论 3(安全层值多少到达,首次定量)**:一步口径下安全层把到达从 0.7773 压到 0.5234(**−25.4 pp**),换来碰撞从 58.6% 到 0;纯策略的**无碰撞到达只有 0.3594**,比开安全层的 0.5234 低 16.4 pp ⇒ **安全层确实在净收益上是赚的**,不是白拿到达。 +- **对"把一步角点训准"这条训练路线的直接警告**:一步候选的多样性,恰恰来自角点的**偏差/欠缩放**(每条 ε 被削到不同的衰减幅度)。如果训练把一步映射成两段那样的收敛解,候选可能一起塌缩 ⇒ **按当前安全层口径,到达率可能不升反降**(实测就是这个方向:steps=2 开闸 −12.9 pp)。所以任何"修角点"的训练都必须**同时**处理候选多样性(更大 K、或给候选注入受控多样性),否则就是拿开环收益去换闭环到达。 +- 顺带修一处历史口径:§9.2 的"策略单独碰撞率 <3%"这一格,现在才有合法读数 **58.6%**(一步)/ **55.9%**(两段)——差距巨大,且以前从没在同一配方下报过。 + ## §9.2 记分板(2026-10-20 现状,最好的合法口径 = `--inc_cap 1` + K=16) | 判据(§9.2) | 要求 | 当前 | 差距 |