v13_E 设计文档 — 调整后的定位
日期:2026-05-02 (调整版) 状态:暂不运行。v13_D 已在跑且表现超预期(ep10 F=0.402),先等 v13_D 跑完 25 epoch 定位:v13_D 之后的扩展实验(可能的 v13_F),而非替代
重要前提(来自 postmortem)
之前此文档写的是 "v13_D 崩溃,v13_E 抢救"。这个前提错了。 v13_D 在 ep8 spatial loss ramp 放开后 F 从 0.19 跳到 0.40,ep10 已经超过 v12 best (0.378) 并仍在上涨。v13_D 是目前最强的实验。
v13_E 的实际价值是 在 v13_D 之后再加一层:启用 num_active head 的训练 + 让 SELD official evaluator 用 top-K̂ gate。这是 v13_D 没有做的改动,理论上正交。
v13_E 设计(保持不变,但动机重写)
改动
- [E-1] cls warmup 8 epochs + 20 total epochs
- [E-2] 启用 num_active head 训练(
lambda_frame_num_active = 0.5)+ 推理 top-K̂ gate
和 v13_D 的关系
| 改动 | v13_D | v13_E |
|---|---|---|
| cls warmup 长度 | 8 | 8 |
| cosine LR | ✓ | ✗ |
| Top-K rank loss | ✓ | ✗ |
| EMA | ✓ | ✗ |
| resume optimizer | ✓ | ✗ |
| num_active head 训练 | ✗ | ✓ |
| SELD top-K̂ gate | ✗ | ✓ |
v13_E 是一个剥离了 v13_D 的 loss/schedule 改动、只加 num_active 的对照组。不能直接比 "哪个 F 高",而是回答:
在同样 8 ep warmup 下,num_active head + top-K̂ gate 单独带来多少 F?
如果 v13_E 最终 F > v13_D,说明 num_active 是正贡献,应该在 v13_F 里合并;反之说明它和 v13_D 的 Top-K rank 路径冲突。
何时运行 v13_E
先看 v13_D 最终结果:
- 如果 v13_D 稳定在 0.43 以上 → 写 v13_F = v13_D + num_active 做融合
- 如果 v13_D 最终不到 0.40 → 跑 v13_E 看 num_active 单独能达到多少
- 如果算力充足 → 现在就可以跑 v13_E 做独立 ablation(对照组)
预期(基于 v13_D 实测)
| 指标 | v12 best | v13_D ep10 | v13_E 预期 |
|---|---|---|---|
| F20 | 0.378 | 0.402 | 0.39~0.42 |
| aR | 0.126 | 0.069 | 0.13~0.18 |
v13_E 的 aR 预期比 v13_D 高(num_active 补漏报),但 F 可能持平或略低(没有 Top-K rank + cosine + EMA 的增益)。
代码状态
- ✅
spatial_loss.py—_build_frame_track_official_segment_dicts加use_num_active_gate参数 - ✅
train_spatial_beats.py—make_ov1_unified_v13e_config已注册,CLI dispatch OK - ✅
run_ov1_unified_v13e.sh— 可运行 - ✅ smoke test 通过
不影响其它实验
所有改动通过 config flag,默认 False。v12/v13_B/v13_C/v13_D 不受影响,照旧可跑。
参考
- 主要错误诊断记录:
docs/v13_honest_postmortem.md - v13_D 设计:
docs/v13d_spatial_beats_design.md