exp: 轮次37——K-MF 方案核查:Eq.7 抄法不动点不自洽(1.87×),一步输出比自身2段采样离老师远10倍
This commit is contained in:
@@ -770,6 +770,27 @@
|
||||
- **改动(默认关,`--backoff`)**:全拒时不再站住,把首选候选按 1/2、1/4、1/8…(档数 = backoff)**并进同一次批量认证**(零额外几何调用),只在原候选连第 1 步都不安全时顶上;缩步候选不参与"前缀更长者优先"的比较,所以正常路径的选择逐位不变。新增 `backoff_mean` 指标记录缩步次数。测试 35→38 项(全拒→慢爬、有安全前缀时插手无效、未开批量认证时报错)。
|
||||
- **待测**:256 题 A/B(`--inc_cap 1 --cert_batch 1 --backoff 0/1/2/3`)——GPU 先让给 K-MF E1,这轮排在其后。
|
||||
|
||||
## 轮次 37:K-MF(运动学 MeanFlow)方案核查——先测"一步 vs 多步",结果比论文那条更要命
|
||||
|
||||
- **交来的方案里那几条 file:line 断言,逐条回代码核过(都成立)**:`ml/model/meanflow.py:38-39` 是标准 Eq.4 单段自举(`jvp` 切向量 (v,0,1),目标 `v − (t−r)·du/dt`);`ml/train.py:162` 调 `meanflow_loss` 时**没接 ada_p** ⇒ 自适应加权一直是默认 `ada_p=1.0`(配置里改不了,与方案说的一致);`p_neq` 在第 `p_neq_warm=5000` 步从 0 硬切到 0.5;`p_edge=0.1` 把 10% 样本钉在部署角 (r=0,t=1);`policy.sample_k(..., steps=1)` 是默认,`ml/model/policy.py:153` ⇒ **历史发布的所有数字都是一步推理**。
|
||||
- **方案里过时的两条要先改掉,否则会拿旧靶子做新实验**:「闭环 0% 到达、79% 碰撞」是 DAgger 之前的状态,现在是 256 题到达 57.4%、实际执行碰撞 0(轮次 30/33);「DAgger 全量是主线,先做」也已完成(`base_dag2_dag1` 就是两轮的产物)。所以 E 系列的判据不能再用"能不能从 0 救起来"。
|
||||
- **E1 第一版判据是自证的,作废**:我先拿"网络自己的 r≠t 切片走 32 段"当平均速度真值——那正是 MF 损失直接训练的切片,等于用被测公式的收敛解当真值。改成**与损失无关的参考**:平均速度的定义是瞬时场(r=t 切片,由纯流匹配监督)的流图 `u_true = (z_t − Φ_{t→r}(z_t))/(t−r)`,128 段欧拉;离散化自证:128 段与 512 段的真值差 0.019(相对 **0.18%**)⇒ 参考本身稳。
|
||||
- **E1 结果(`docs/experiment_round36_kmf_e1.json`,256 个 val 样本,λ=0.5,‖u_true‖ 均值 10.38)**:目标与真值的距离(越小越好)
|
||||
|
||||
| 目标写法 | (r=0,t=1) 部署角 | 最差 ‖du/dt‖ 处 (t=0.05) |
|
||||
|---|---|---|
|
||||
| MF(现行 Eq.4) | **3.851** | 2.629 |
|
||||
| K-MF 按方案抄的 (1−λ)²/λ² | 7.187(1.87×,更差) | 3.808 |
|
||||
| K-MF 把平方换成线性权重 (1−λ)/λ | 14.661(更差) | 2.106 |
|
||||
| 把整条修正移到中点时刻 `du(z_c,r,c)/dc` | **2.364(0.61×)** | 2.468 |
|
||||
| 网络现在的一步输出 u(ε,0,1) | 3.906 | — |
|
||||
|
||||
- **两条硬结论**:
|
||||
1. **方案抄来的 Eq.7 系数在收敛解上不自洽**:λ=0.5 时两项系数和 = (1−λ)²+λ² = 0.5,不动点变成 `v − 0.5(t−r)u'`,不是平均速度;实测也印证——部署角 `‖du(z_t,c,t)/dt‖ = 28.0` 而 `‖du/dt‖ = 4.24`(把 r 槽钉在中点后对 t 的导数大 6.6 倍),组合被这一项主导,所以偏差反而更大。**K-MF 仓库只有 README,论文只能引公式,这条是我们自己的数**:要么抄漏了子区间时长因子,要么 c 的定义不同。判据「K-MF 偏差 ≤ MF 的一半」在这个写法下不成立(1.87×)。
|
||||
2. **自举污染是真的,而且就在部署角**:网络一步输出与自己的流图差 3.906(相对 38%),而 MF 目标的偏差 3.851 几乎一样 ⇒ 训练把目标的偏差原样灌进了线上那一步。`‖du/dt‖` 在两端炸开(t=0.05 为 156.6、t=0.95 为 64.3,中段只有 1.6–4.1),与论文 Fig.1a 的形态一致(他们报 76×,我们这里 0.05↔0.4 是 **66×**)。
|
||||
- **E1-b(`docs/experiment_round36_kmf_e1b.json`,512 样本,比的是"离老师多远",归一化动作块 L2)**:一步 **4.326**;同模型 2 段 **0.434**、4 段 0.429、32 段 0.601;流图(r=t,128 段)0.665。**一步比多步差 10 倍**,而 2 段就基本到位(再多段反而偏离老师——那是模型自身场的偏差,不是采样误差)。
|
||||
- **这一条比 K-MF 本身更要命**:57.4% 的到达是在"线上一步输出偏离自己场 10 倍"的前提下拿到的,安全层/反馈/DAgger 都在替这个角点擦屁股。所以先把 `--steps` 打通,量它对闭环到达的影响,再决定要不要为"把一步训好"付一次训练。
|
||||
|
||||
## 分支清理(2026-10-20)
|
||||
|
||||
- `feat/fb-mix`(8e5431c):反馈混合方案的中间分支,**已验证是 `exp/dagger-deploy` 的祖先**(所有提交都在后者历史里),本地/远端分支删除,内容保留在 exp/dagger-deploy。
|
||||
|
||||
Reference in New Issue
Block a user