PhysJEPA · 09-16 → 09-22 · 实验总账

这一周训完了什么,各自值多少

七个模型训练完成:两个 Stage-1 臂、五个 Stage-2 臂。全部在同一封存测试集(PhyCo test_core,140 条)上用同一把尺子量过。结论一句话:改 Stage-1 没动针,改 Stage-2 的训练量动了

一张图看完

横轴是 capture:0% = 不喂光流(地板),100% = 喂真值光流(天花板)。两组各自只变一个东西,其余全部固定。

A · 换 Stage-1 光流源 — Stage-2 固定为「真值条件训练 2000 步」

joint(7 锚点) 38.5%
fix+dense(14 锚点 + 轨迹监督) 34.7%
dense(14 锚点) 29.4%

B · 换 Stage-2 — 光流源固定为 joint,条件逐条同种子

真值条件 2000 步起点 38.5%
真值条件 4000 步 45.8% 多训 2000 步 → +7.3 点
混合条件 4000 步 45.8% 混合条件 → +0.0 点
Stage-1 臂(这几天训完 2 个) Stage-2 臂(这几天训完 2 个 + 1 个重测) 虚线 = 地板 0% / 天花板 100%

怎么读:A 组三个点跨度 9.1 点,而且它们的 Stage-1 自评排名和这里的顺序对不上(见下表);B 组只把 Stage-2 多训 2000 步就走了 7.3 点,几乎等于整个 A 组的跨度。B 组最后两行是同一件事的两种训法,落在同一个位置——混合条件的贡献恰好是零

第一批:两个 Stage-1 臂(09-19 训完)

PhyCo 域,把光流锚点从 7 个加密到 14 个,看时间分辨率是否有用。两臂都是 2000 步。

Stage-1 臂 · 封存集 140 条
改了什么训完时间物体 EPE 改善下游 capture
dense锚点 7 → 1409-19 08:090.61229.4%
fix+dense锚点 7 → 14,外加质心轨迹监督(位置/速度/加速度)09-19 06:340.61034.7%
joint对照7 锚点基线,更早训的0.60138.5%

「物体 EPE 改善」越大越好(相对不动基线的改善比例)。注意这三行:dense 的 Stage-1 自评最好(0.612),下游却最差(29.4%);joint 自评最差,下游最好。Stage-1 自评和下游效果是脱钩的,这是半年来反复出现的现象,这两个臂又确认了一次。

结论二:dense 无效,而 fix 的权重有问题

dense(纯加密锚点)无效:对下游是负收益(29.4% vs 基线 38.5%)。Stage-2 只有 7 个条件槽位,14 个锚点必须抽掉一半才喂得进去——而且抽的是偶数位,加密出来的奇数位锚点Stage-2 一个都看不到。在真正交付的那 7 个锚点上,两个 dense 臂的物体 EPE 差别只有 −0.16%,是个洗。

轨迹监督(fix)确实救回了 5.3 点,但机制不是「物理更准」:实测加了质心监督之后,交付给 Stage-2 的光流幅值缩小了 37%(0.001988 → 0.001248),两臂条件的逐元素差达幅值的 58%。赢的是「少编造运动」,和本周 Stage-2 续训的取胜方式是同一条线索。

权重配置有三处实打实的问题(读代码查出来的):① 有效梯度阶梯是 权重÷beta = 0.2/0.02 : 0.05/0.05 : 0.01/0.1 = 10 : 50 : 250——权重数字最小的 acceleration 反而主导,我原本「acceleration 权重太小近乎无效」的判断是错的;② 损失里的 delta_time 硬编码 0.2,而 14 锚点的真实间距是 0.2857,导致 velocity/acceleration 的有效权重被虚高 1.43×/2.04×(PhyCo 侧更是 2.86×/8.16×);③ velocity 和 acceleration 两项从未被记录到日志,现在跑任何扫参,事后都无法判断哪一项真的起了作用。

而且监督信号本身是退化的:在 300 个真实质心 sidecar(11984 个质心步)上实测,64.8% 的逐步位移恰好为 0、87.4% 不足一个像素,逐锚平均位移从第 1 个锚点到第 14 个衰减 180 倍。所以 velocity/acceleration 主要在教模型「停下来」——这正好解释了幅值缩小 37%,也解释了为什么长时程锚点反而变差。这是结构性问题,标量权重扫不到它

第二批:三个 Stage-2 臂(09-20 → 09-21 训完)

换方向——不动 Stage-1,改 Stage-2 的训练方式。原本的假设是:Stage-2 只见过完美真值光流,部署时却要吃幅值被压扁的预测流,这个错配才是瓶颈。

Stage-2 臂 · 全部用同一批 joint 预测流条件、同一组逐样本种子
改了什么累计步数训完时间capture状态
起点(重测)历史权重,只是在同一批条件上重新量一次200038.5%已定案
混合条件约 45% 真值流 / 45% 预测流 / 10% 零位移400009-20 20:4545.8%已定案
等算力对照纯真值条件,其余与上一行完全相同400009-21 04:3945.8%已定案
再续训纯真值条件,把 max_steps 从 2000 改到 4000 继续训600009-21 16:5843.3%已定案
连续调度重跑纯真值条件,max_steps 全程恒定 4000(单条连续 cosine)6000high 09-22 15:14待出low 在 yli8 并行

假设被证伪:混合条件的贡献是 0.0 点

混合条件臂和等算力对照臂的配对差值是 +0.0001 加权 IoU,换算 +0.0 capture 点t=0.00,逐样本胜率 54.3%,七个场景四正三负。两个臂在统计上完全无法区分

我一度报告过「混合训练 +7.4 点」,那是错的——当时的对照组比混合臂少训了 2000 步,我把训练量的功劳记到了训练方式头上。补跑等算力对照才把两者拆开。

结论一:Stage-2 一直欠训

同样是纯真值条件,从 2000 步训到 4000 步,capture 从 38.5% → 45.8%+7.3 点t=2.33,逐样本胜 72/140)。

这个收益比整个项目里任何一次 Stage-1 改进都大。作为对照:六个 Stage-1 臂的 capture 全程只在 29–37% 之间摆动,跨度 8 点,而且和 Stage-1 自身精度排名毫无相关。半年来一直在 Stage-1 上做文章(objloss、轨迹监督、加密锚点、联合训练),而真正没被榨干的是 Stage-2 的训练量。

但继续训到累计 6000 步反而退回 43.3%——查下来是我自己造成的:延长训练时把 max_steps 从 2000 改成 4000,cosine 调度在续跑点把学习率从 5.4e-6 跳回 2.66e-5(涨 4.9 倍),等于一次热重启,把模型从好的解上震了出去。所以「训练量的上限在哪」目前仍未测出,正在用一条从头到尾恒定的连续调度重跑。

所以现在正在把它继续往下训(累计 6000 步),看收益在哪里饱和。每 2000 步只要约 2.3 GPU·小时——比调 Stage-1 便宜得多,回报也大得多。

目前最好的 Stage-2:实际画面

模型:纯真值条件训到累计 4000 步(本周最好的一版,封存集整体 capture 45.8% / 加权 IoU 0.4183)。 下面每个场景取它表现最好的一条,三列并排:GT 真值 · 4000 步 · 2000 步(续训前的起点)。 两版吃的是同一批 Stage-1 预测流条件同一组逐样本随机种子,唯一差别是多训的 2000 步。

为什么这里报加权 IoU 而不报 capture:capture 把加权 IoU 线性映射到「0% = 不喂光流、100% = 喂真值光流」,但它对新模型并不封顶——上面几条的加权 IoU 已经高过 oracle 的 0.6218,换算成 capture 会超过 100%,失去意义。整体分仍按 capture 报以便跨臂比较,单条一律报原值。

口径与可比性(重要)

哪些数能直接比,哪些不能

能比的:本页所有数字都是封存集 test_core 140 条、同一评测协议(29 帧 / 7fps)、同一 capture 刻度。A 组三行共用同一个 Stage-2;B 组四行共用同一批 joint 预测流条件和逐条相同的随机种子——所以 B 组的差异纯粹来自权重。

不能直接比的:更早的四个臂(joint 36.5% / phyco-only 36.0% / fix 34.9% / objloss 33.6%)是 n=137、另一批光流条件下测的,那批产物已随旧存储清空而不存在。本页 joint 一行的 38.5% 是这几天在同批条件下重测的值,与历史的 36.5% 不是同一个量。

这套评测分辨不出我们在追的效应

封存集是 7 个场景 × 20 条。样本嵌套在场景里,推断的正确单位是场景(n=7)而不是样本(n=140)。按场景聚类算,这套设计能以 80% 把握检出的最小效应约 17 个 capture 点,而本周所有效应都在 2–7 点之间。

后果:+7.3 点这个本周最大的发现,样本级 t=2.33 看着显著,按场景聚类后 t=1.58(p≈0.17)就不显著了。在把封存集从 7 个场景扩到 15–20 个之前,任何这个量级的结论都只能算线索。加场景比加样本有效得多。

capture 这把尺子本身有存疑之处

0% 和 100% 两个锚点(加权 IoU 0.2463 与 0.6218)是脚本里的硬编码常量,它们对应的原始评测产物已不存在,无法复核。另外混合臂在某个场景上算出 capture 116.9%(超过天花板),说明这把尺子对新臂并不封顶。对外更稳妥的说法是直接报加权 IoU:0.3567 / 0.3767 / 0.3907 / 0.4183 / 0.4184。