What Drives Success in Physical Planning with Joint-Embedding Predictive World Models?

Paper: arXiv:2512.24497 Code: facebookresearch/jepa-wms Code reference: main @ 13cf1d9c (2026-04-11)

1. Motivation (研究动机)

这篇论文要回答的不是“JEPA 能不能做 world model”这个泛问题,而是一个更工程化、也更容易被忽略的问题:当我们把 frozen visual encoder、action-conditioned predictor 和 latent-space planner 拼成一个 Joint-Embedding Predictive World Model(JEPA-WM)后,哪些设计选择真正决定 physical planning 的成功率?作者把这一类方法明确界定为:只在 embedding space 里预测未来状态,不重建像素、不预测 reward、不训练 value/policy head;规划时直接在动作序列空间里优化目标 embedding 距离。这个设定覆盖 DINO-WM、V-JEPA-2-AC、PLDM 等相近路线,但以往工作往往只给一个系统结果,没有系统拆开 encoder、predictor、rollout loss、context、proprioception、planner 等变量。

当前方法的第一个瓶颈是 planning success 与 rollout visual quality 并不等价。一个 latent predictor 可以在开放环 unroll 中看起来能生成合理的未来帧,但 planner 使用的是 embedding distance;如果 embedding 对末端执行器的精确位置、物体接触、墙的约束、速度方向不够敏感,优化器会找到视觉上“像目标”但物理上不可执行的动作。论文在 DROID 和 Robocasa 上特别强调这一点:可视化 decoder 只能作为诊断工具,不能证明 planner 找到的动作会接近真实专家动作。

第二个瓶颈是多步 planning 会把训练时的一步预测误差放大。JEPA-WM 的 predictor 在训练时常见的是 teacher forcing:用 ground-truth context 预测下一步 embedding;但在 planning 时,它必须把自己的预测再喂回去,递归 unroll 多个动作。若 predictor 在 latent state 上的 Lipschitz 常数 ,误差会随 horizon 指数放大。于是单纯降低 one-step validation loss 不一定能提高 success rate;训练需要让模型见过“部分 context 来自自己预测”的输入分布。

第三个瓶颈是 physical planning 的任务族差异很大。二维 Maze/Wall 的动力学简单、视觉域稳定、动作序列需要精确绕障;Metaworld 有长 horizon 和比较平滑的机械臂距离目标;DROID/Robocasa 则有真实图像域、物体接触、手爪闭合、相机视角和 domain gap。一个统一 recipe 可能在平均上合理,但论文真正有价值的地方在于区分 simulated navigation 与 real manipulation:前者偏好小模型、短 rollout、DINOv2-S;后者偏好更强 DINOv3-L、深 predictor、更长 rollout/context。

这个问题值得研究,因为它处在 model-based physical AI 的关键交界处:如果 latent world model 可以用无 reward 的轨迹数据学出足够可规划的动力学,那么新任务只需要给初始状态和目标状态,就可以通过 MPC/trajectory optimization 产生动作,而不必为每个任务训练策略或 reward model。相反,如果 planner 成功高度依赖隐藏实现细节,那么 JEPA-WM 的可复现和可迁移性就会被高估。本文的贡献是把这些隐藏变量变成可测的设计轴,并给出一组可落地的 recipe。

2. Idea (核心思想)

核心 insight:JEPA-WM 的成功不是由“预测未来 embedding”这个抽象目标单独决定,而是由三个耦合条件共同决定:embedding 必须保留可控制的细粒度物理信息,predictor 必须在 autoregressive rollout 分布上稳定,planner 必须能在 latent cost landscape 里找到可执行动作。换言之,representation、dynamics 和 optimizer 任一环节稍微错配,success rate 都会显著下降。

本文的关键创新不是提出一个全新的算法名,而是把 JEPA-WM formalize 成统一框架,并在同一评估协议下系统比较 design choices:visual encoder 选 DINOv2/DINOv3/V-JEPA/V-JEPA-2;predictor conditioning 选 feature/sequence/AdaLN;训练选 teacher forcing 或 multi-step rollout、不同 context length 和 proprioception;规划选 CEM/NG/GD/Adam 与 / cost。最后作者把这些 ablation 合成“simulated navigation”和“real manipulation”两套最佳 recipe。

与 DINO-WM 或 V-JEPA-2-AC 的根本差别在于,本文不是只展示某个 frozen encoder + predictor 的单点能力,而是追问为什么它能 work。与 MuZero/PlaNet/Dreamer 这类显式 reward/value/policy world model 不同,JEPA-WM 不学习 reward 或 policy;与 goal-conditioned RL 不同,它也不直接学习 goal-conditioned policy,而是在 learned latent dynamics 上做 trajectory optimization。因此它更接近“无监督 latent dynamics + test-time planning”的路线,优势是任务定义简单,风险是 cost landscape、embedding geometry 与物理可达性之间没有理论保证。

3. Method (方法)

3.1 JEPA-WM 总体框架:训练 dynamics,测试时在 latent space 规划

Figure 1 解读:左侧是训练阶段,frozen visual encoder 把视频帧变成 token embedding,可选的 proprioceptive encoder 把关节/末端状态也变成 embedding,action encoder 编码动作,predictor 预测下一步 state embedding。右侧是 planning 阶段:给定当前观测 和目标观测 ,planner 采样或优化一批未来动作序列,在 predictor 中 unroll 后得到 imagined latent state,再用目标 embedding 距离 作为 cost,不断更新动作分布。

形式化地,训练时对 batch 中第 条轨迹,在过去窗口 与动作 上做一步预测: 论文实验中 采用 MSE;released code 在 app/vjepa_wm/video_wm.py::compute_loss 中支持 cosine/L1/L2/smooth-L1 的加权组合,而 final sweep YAML 对 MW/DROID 都设置 l2_loss_weight: 1.0、其他权重为 0,因此与论文 MSE 设定一致。视觉 encoder 在 predictor 训练中 frozen,jointly trained 的主要是 action encoder、可选 proprioceptive encoder 和 predictor。

Planning objective 对 horizon 的动作序列 最小化: 本文取 为 predictor 的最后一步 unrolling embedding。递归 unroll 写作: 直觉上,JEPA-WM 的有效性来自一个“抽象但仍可控”的 latent space:它丢掉像素级纹理和背景噪声,却要保留对象边界、末端位置、速度和接触状态。DINO 类 image encoder 的局部 token 更像 dense object/part segmentation,所以 planner 在 embedding distance 上能看到“物体离目标差多少”;proprioception 则补上视觉 token 难以量化的末端精确坐标。predictor 只要在这个空间里学到动作导致的局部变化,CEM 等 optimizer 就能把 latent distance 当作可优化的 surrogate cost。

3.2 设计轴一:planner 与 latent cost

Figure 3a–3b 解读:Figure 3a 比较 CEM、Nevergrad/NG、Adam、GD 以及 / cost。总体结论是 CEM 最稳,因此后续主实验固定它以减少变量;但 Metaworld 的 cost landscape 较平滑,Adam/GD 在部分 Metaworld 任务上很强。Figure 3b 展示 multi-step rollout loss:从纯 teacher forcing 到 2-step 会提升,但模拟环境继续加到 3/6-step 反而下降;DROID 这种真实复杂数据更受益于更长 rollout 的鲁棒性。

CEM 在 released code 中由 evals/simu_env_planning/planning/planning/planner.py::CEMPlanner 实现:每轮从 diagonal Gaussian 采样 条动作序列,unroll world model 得到 cost,选 个 elite,更新 mean/std,最后执行前 个动作。Nevergrad 版本 NevergradPlannerNGOpt 或指定 optimizer 在相同 budget 下反复 ask/tell;GD/Adam 版本直接把动作序列设成可微参数,用 latent objective backprop,但在 Wall/DROID 等非平滑或接触任务中容易陷入局部最优。

CEM 的核心更新为: Planning config 来自 released code 的环境级 YAML,而不是默认值:MW Reach-Wall CEM config evals/simu_env_planning/base_configs/mw/reach-wall_L2_cem_sourcexp_H6_nas3_ctxt2.yaml 使用 planner_name=cemiterations=15num_samples=300num_elites=10horizon=6num_act_stepped=3eval_episodes=48

DROID config evals/simu_env_planning/base_configs/droid/droid_L2_cem_sourcedset_H3_nas3_maxnorm01_ctxt2_gH3.yaml 使用 horizon=3num_act_stepped=3max_norms=[0.1,0.75]eval_episodes=64alpha=0。论文表 10 还给出统一规划超参:PointMaze/Push-T/Wall 使用 ;Metaworld 使用

Robocasa 使用 ;DROID 使用

Figure 10 解读:这组 appendix 图解释了为什么 differentiable 不等于容易优化。GD 在 Wall task 中会找到局部低 cost:例如贴近墙/障碍边界但无法通过门,或者 cost 曲线下降后停在错误 basin。latent objective 对动作是可微的,但几何约束和碰撞带来的非凸结构会让梯度方向短视;采样式 CEM 反而能维持动作分布探索。

3.3 设计轴二:multi-step rollout loss 与 error propagation

训练时除了一步 teacher forcing,作者加入 -step rollout loss: 其中 ,并且 。实现上,app/vjepa_wm/train.py 从 YAML 的 model.rollout_cfg 读取 rollout_stepstrain_rollout_prefixesrollout_stop_gradientctxt_window_train_rollout;先计算 one-step predictor loss,再在 rollout_steps>1 时调用 VideoWM.rollout 追加 sequential 或 parallel rollout loss。released code 默认采用 sequential、random prefix、TBPTT detach,即 rollout_stop_gradient: true

Figure 8 解读:左图是论文最终偏好的 “Last-gradient-only” sequential rollout:随机选择 ground-truth prefix,把 predictor 的最新预测拼到 context 中继续预测,只对新增预测步计算 loss,并通过 TBPTT 截断历史梯度。右图是 “All-gradients” 变体,会把更多非冗余预测任务纳入 loss。作者的 ablation 发现 all-gradients 并不优于 last-gradient-only;关键不是多算 loss,而是让 predictor 在训练时接触“ground-truth embedding + self-predicted embedding”的混合 context。

appendix 给出的误差传播解释是这篇论文很重要的直觉。如果简化为 ,并假设 对 state input 是 -Lipschitz,one-step residual 上界为 ,则 horizon 的误差满足: 因此 multi-step loss 有一个 trade-off:增大 通常会牺牲 ground-truth input 上的一步精度 ,但可能降低 autoregressive 分布上的有效 Lipschitz 常数 。模拟环境中简单动力学使精度项更重要,所以 2-step 后继续加 rollout 会损伤;DROID 中真实视觉和接触更复杂,降低 compounding error 更有价值。

论文公式与 released code 实现差异:论文 Table 1 和正文把 real manipulation 的推荐 rollout steps 写成 6,并在结果解释中说 DROID 的 optimal tradeoff shifting to ;但当前 facebookresearch/jepa-wmsconfigs/vjepa_wm/droid_final_sweep/droid_4fpcs_fps4_r256_dv3vitl_asp1_pred_AdaLN_depth12_noprop_repro_2roll_4n.yaml 中训练项是 rollout_cfg.rollout_steps: 2,虽然 evaluation diagnostics 里有 data_traj_eval_rollout_steps: 6。因此本笔记把论文结论与 released config 分开记录:论文推荐 real manipulation 更长 rollout,但开源 final DROID launch YAML 并没有提供训练 6-step 的最终配置。

3.4 设计轴三:proprioception、context length 与 encoder choice

Figure 4a–4b 解读:Figure 4a 显示加入 proprioceptive input 基本一致提升。视觉 embedding 能表达场景和对象,但 patch token 对末端坐标、关节角等连续量存在量化和遮挡问题;proprioception 为 planner 提供 metric state。Figure 4b 显示 DINO 系 encoder 优于 V-JEPA/V-JEPA-2 encoder,作者认为原因是 DINO 的细粒度 object segmentation 更适合操作和导航所需的空间 token;DINOv3-L 在 DROID/Robocasa 这类更真实视觉域上尤其有优势。

训练 context 与 planning context 的关系是另一条重要规则:必须让 ,否则 planner 让 predictor 执行训练中没见过的 context 长度。作者在所有实验中选择 ,因为两帧足以推断速度且计算更省。训练 太长也会减少可用训练 slice;DROID 在 保留 99.2% 视频,在 保留 96.4%,到 只保留 86%,这会抵消长 context 的潜在优势。

Figure 5a–5b 解读:Figure 5a 对比 feature conditioning、sequence conditioning、AdaLN、AdaLN-zero 以及 sincos/RoPE。AdaLN+RoPE 平均最强,因为 action embedding 不是只在输入层拼接一次,而是在每个 Transformer block 中通过 scale/shift 调制 hidden state,减少 action information 在深层中消失的风险。Figure 5b 对比训练最大 context length,支持“足够看速度,但不要过长”的经验结论。

3.5 设计轴四:predictor capacity、data scaling 与真实操作

Figure 6a–6b 解读:模拟环境上,扩大 encoder 到 ViT-B/ViT-L 或加深 predictor 并不提高 success,2D navigation 甚至 3-layer/6-layer 已经足够。DROID/Robocasa 上则相反,更大的 encoder 和更深 predictor 持续带来收益,说明真实图像、接触和物体交互的动态复杂度更高,capacity 才成为瓶颈。

Figure 7a–7b 解读:作者把训练数据缩放到 2%、10%、50%、100%,固定训练 iteration 数。总体上数据越多 success 越高,说明 latent dynamics 仍明显受数据覆盖度限制。论文特别指出 DROID 和 Wall 上本文方法相对 baseline 的优势更明显,Push-T/Metaworld 也可能继续受益于更多 diversity,但 domain gap 让 DROID→Robocasa 的 scaling 不完全单调。

3.6 质性验证:counterfactual actions 与 zero-shot Robocasa

Figure 2 解读:这是一个非常有用的 sanity check:从同一初始帧出发,手工指定“open and move up”或“close and move up”两组 counterfactual actions。V-JEPA-2-AC、DINO-WM 和本文最佳模型都 unroll 5 个 model actions。本文模型在“闭合手爪并上移”时更能表现杯子被带起,而不是只生成看似平滑的手臂运动;这说明 action-conditioned latent dynamics 捕捉到了对象交互,而不只是 camera-space motion。

Figure 12 解读:DROID 训练的 JEPA-WM zero-shot 到 Robocasa Reach。上排是模型对 action plan 的视觉 decoding,下排是 simulator ground truth。图中能看到模型能在目标附近生成合理的手臂接近轨迹,但对交互/抓取仍有不稳定处;这对应论文对 Pick task 低成功率的解释:末端执行器位置稍有误估,对小物体抓取就非常致命。

Figure 13 解读:Place task 需要从 segment 3 开始把物体放到目标区域,planner cost 是 goal embedding distance。图中左侧显示 episode state/目标,右侧展示 agent/goal 轨迹或视频,说明同一个 DROID-trained model 可以通过 latent planning 迁移到定制 Robocasa 场景,但成功率仍明显低于短 reach 类任务。

Figure 14 解读:这张纵向图展示真实 Franka 轨迹上的 action unrolling:每对行的上方是模型视觉 decoding,下方是真实 trajectory。它的作用不是作为 success metric,而是帮助判断 latent predictor 是否跟随动作产生合理视觉变化。论文同时提醒,即便 decoding 看起来合理,planner 输出 action 与 ground-truth action 的 error 仍可能偏大。

3.7 Source-grounded pseudocode

下面伪代码按 released code 的结构抽象,而不是直接照论文公式改写。

import torch
import torch.nn.functional as F
 
 
def train_jepa_wm_step(world_model, batch, cfg, optimizer):
    obs = batch["obs"]              # visual and optional proprioception
    actions = batch["actions"]      # normalized except DROID-compatible runs
    optimizer.zero_grad()
 
    video_z, prop_z, act_z = world_model.encode(obs, actions)
    pred_video_z, _, pred_prop_z = world_model.forward_pred(video_z, act_z, prop_z)
 
    # final YAMLs set l2_loss_weight=1.0 and other weights=0.0
    losses = world_model.compute_loss(
        pred_video_z, pred_prop_z, video_z, prop_z, shift=1
    )
    total_loss = losses["loss"] / (cfg.rollout_steps + 1)
 
    if cfg.rollout_steps > 1:
        # released training code uses random prefix + sequential rollout by default
        t = torch.randint(video_z.shape[1] - cfg.rollout_steps, size=(1,)).item()
        rollout_losses, rollout_loss, _, _ = world_model.rollout(
            video_features=video_z,
            pred_video_features=pred_video_z,
            proprio_features=prop_z,
            pred_proprio_features=pred_prop_z,
            action_features=act_z,
            rollout_steps=cfg.rollout_steps - 1,
            rollout_stop_gradient=True,
            ctxt_window=cfg.ctxt_window_train_rollout,
            mode="sequential",
            t=t,
        )
        total_loss = total_loss + rollout_loss
 
    total_loss.backward()
    torch.nn.utils.clip_grad_norm_(world_model.parameters(), cfg.clip_grad)
    optimizer.step()
    return total_loss.item()
class EncPredWM(torch.nn.Module):
    def unroll(self, z_context, act_suffix):
        # z_context: TensorDict with visual/proprio or visual-only tensor
        T, B, A = act_suffix.shape
        vid_feats, prop_feats = expand_context_to_batch(z_context, B)
        act_feats_suffix = self.model.encode_act(act_suffix.permute(1, 0, 2))
 
        for h in range(T):
            current_act = act_feats_suffix[:, h:h + 1]
            act_feats = current_act if h == 0 else torch.cat([act_feats, current_act], dim=1)
            pred_video, _, pred_prop = self.model.forward_pred(
                vid_feats[:, -self.ctxt_window:],
                act_feats[:, -self.ctxt_window:],
                prop_feats[:, -self.ctxt_window:] if prop_feats is not None else None,
            )
            vid_feats = torch.cat([vid_feats, pred_video[:, -1:]], dim=1)
            if prop_feats is not None:
                prop_feats = torch.cat([prop_feats, pred_prop[:, -1:]], dim=1)
 
        return pack_like_input(vid_feats, prop_feats, z_context)
def cem_plan(unroll, objective, z_init, horizon, action_dim, num_samples, num_elites, iterations):
    mean = torch.zeros(horizon, action_dim, device=z_init.device)
    std = torch.ones_like(mean)
 
    for _ in range(iterations):
        actions = mean[:, None, :] + std[:, None, :] * torch.randn(
            horizon, num_samples, action_dim, device=z_init.device
        )
        actions[:, 0, :] = mean  # evaluate current mean as one candidate
        predicted = unroll(z_init, act_suffix=actions)
        costs = objective(predicted, actions)
        elite_idx = torch.topk(-costs, k=num_elites).indices
        elite_actions = actions[:, elite_idx]
        mean = elite_actions.mean(dim=1)
        std = elite_actions.std(dim=1)
 
    return mean  # execute first m actions in MPC/eval loop
def latent_goal_cost(encodings, target_enc, alpha=0.1, kind="l2", sum_all_diffs=False):
    if kind == "l2":
        diff_visual = (target_enc["visual"] - encodings["visual"]).pow(2).mean(dim=tuple(range(2, encodings["visual"].ndim)))
        diff_prop = (target_enc["proprio"] - encodings["proprio"]).pow(2).mean(dim=tuple(range(2, encodings["proprio"].ndim)))
    else:
        diff_visual = (target_enc["visual"] - encodings["visual"]).abs().mean(dim=tuple(range(2, encodings["visual"].ndim)))
        diff_prop = (target_enc["proprio"] - encodings["proprio"]).abs().mean(dim=tuple(range(2, encodings["proprio"].ndim)))
 
    diff = diff_visual + alpha * diff_prop
    return diff.sum(0) if sum_all_diffs else diff[-1]

Code reference: main @ 13cf1d9c (2026-04-11) — pseudocode and mapping based on this commit

Paper ConceptSource FileKey Class/Function
JEPA-WM training loop and rollout-loss schedulingapp/vjepa_wm/train.pymain, world_model.compute_loss, world_model.rollout calls
latent world model wrapperapp/vjepa_wm/video_wm.pyVideoWM.encode, forward_pred, compute_loss, rollout
action-conditioned ViT predictorsrc/models/ac_predictor.pyVisionTransformerPredictorAC, vit_ac_predictor
planning-time unroll / decoding interfaceapp/vjepa_wm/modelcustom/simu_env_planning/vit_enc_preds.pyEncPredWM.unroll, encode, decode_unroll
CEM / NG / GD / Adam plannersevals/simu_env_planning/planning/planning/planner.pyCEMPlanner, NevergradPlanner, GradientDescentPlanner, AdamPlanner
latent goal objectiveevals/simu_env_planning/planning/planning/objectives.pyReprTargetDistMPCObjective, ReprTargetDistL1MPCObjective
planner selection and MPC agentevals/simu_env_planning/planning/gc_agent.pyGC_Agent.__init__, plan, act
simulated/robot planning evaluationevals/simu_env_planning/eval.pymain, init_module
main simulated optimal training configconfigs/vjepa_wm/mw_final_sweep/mw_4f_fsk5_ask1_r224_pred_AdaLN_ftprop_depth6_repro_2roll_save.yamlrollout_cfg, optimizer, eval configs
main DROID released training configconfigs/vjepa_wm/droid_final_sweep/droid_4fpcs_fps4_r256_dv3vitl_asp1_pred_AdaLN_depth12_noprop_repro_2roll_4n.yamlDINOv3-L/AdaLN depth-12, DROID eval configs

4. Experimental Setup (实验设置)

数据集与任务规模

论文使用模拟和真实机器人数据共同评估。训练/验证按 trajectory level 做 90%/10% split;非 DROID 数据会切成长度 的 trajectory slices,DROID 为了与 V-JEPA-2-AC 对齐,在 dataloader 时动态采样。

Dataset / environmentDataset sizeTrajectory lengthEvaluation tasks
PointMaze2,000 trajectories100随机 initial/goal 的二维 force-actuated navigation
Push-T18,500 trajectories100–300pusher ball 推 T-block 到目标 pose
Wall1,920 trajectories50两房间/一门的二维绕障 navigation
Metaworld12,600 trajectories10042 个任务数据,主表报告 MW-R / MW-RW
DROID8,000 trajectories20–50真实 Franka 数据;另采 16 个 lab videos 做 offline action-score eval
Robocasano finetuningcustom segmentsDROID-trained model zero-shot 到 Reach / Place 等 custom tasks

Metaworld 数据由 TD-MPC2 online agents 收集,42 个任务每个 seed/task 保留前 100 episodes 来避免数据中过多 expert-only 轨迹。Robocasa 不是训练集:作者从 teleoperated trajectories 划出 Reach/Pick/Place/Reach-Pick/Reach-Pick-Place 等 segment task,重点报告 Rc-R 和 Rc-Pl。DROID eval 的 Action Score 定义为:若 Action Error ,score 为 ,否则为 0。

Baselines、metrics 与统计

Baselines 是 DINO-WM(表中 DWM)和 V-JEPA-2-AC(表中 VJ2AC)。V-JEPA-2-AC 数字来自作者修复 2-step rollout loss bug 后 retrain 的模型;公开 checkpoint 在本文 DROID 协议上 action score 明显更低。主要 metric 是 success rate;DROID 使用 Action Score 作为 offline proxy;额外跟踪 embedding rollout error、proprioceptive decoding error、visual decoder LPIPS/action visualization 等 diagnostics。最终模型用 3 个 random seeds 估计 variability;大多数环境每个 epoch 评估 episodes,DROID 为 64,Robocasa 为 32,并对最后若干 epoch 取平均以减少训练曲线噪声。

训练配置与硬件

论文表 4/5 给出的通用训练配置:、frameskip (WM-V 同样 ,resolution 256)、resolution 224(WM/WM-L)、learning rate 、weight decay 从 cosine 到 、AdamW clip_grad=1、dtype bfloat16、accelerator H100 80G。WM 的 patch_size=14pred_depth=6pred_embed_dim=384enc_embed_dim=384;WM-L/WM-V 使用 pred_embed_dim=1024enc_embed_dim=1024

环境级训练配置来自实际 launch YAML:Metaworld optimal-style config mw_4f_fsk5_ask1_r224_pred_AdaLN_ftprop_depth6_repro_2roll_save.yamlframeskip=5action_skip=1action_conditioning=tokenproprio_encoding=featurepred_depth=6pred_embed_dim=384rollout_steps=2ctxt_window_train_rollout=3clip_grad=1num_epochs=50start/ref/final_lr=5e-4alpha=0.1

DROID released final config droid_4fpcs_fps4_r256_dv3vitl_asp1_pred_AdaLN_depth12_noprop_repro_2roll_4n.yamlframeskip=1action_conditioning=tokenproprio_encoding=nonepred_depth=12pred_embed_dim=1024iterations_per_epoch=300num_epochs=315eval_episodes=64alpha=0ctxt_window=2

论文表 5 的 batch/epoch:Metaworld 与 Push-T batch size 256、Maze/Wall/DROID batch size 128;Metaworld/Push-T/Maze/Wall 训练 50 epochs,DROID 训练 315 epochs;action dimension 分别是 20/10/10/10/7,proprio dimension 分别是 4/4/4/4/7。

5. Experimental Results (实验结果)

主结果:best JEPA-WM 大多数环境超过 DINO-WM 和 V-JEPA-2-AC

ModelMazeWallPush-TMW-RMW-RWRc-RRc-PlDROID
DWM81.6 (3.4)64.1 (4.6)66.0 (4.7)44.8 (8.9)35.1 (9.4)19.1 (13.4)21.7 (7.2)39.4 (2.1)
VJ2AC16.2 (8.3)33.1 (7.2)42.9 (2.5)
Ours83.9 (2.3)78.8 (3.9)70.2 (2.8)58.2 (9.3)41.6 (10.0)25.4 (16.6)30.7 (8.0)48.2 (1.8)

主表使用 CEM planning。本文模型在 Maze、Wall、Push-T、MW-R、MW-RW、Rc-R、DROID 上都是最高;Rc-Pl 上 VJ2AC 的 33.1 (7.2) 高于 Ours 的 30.7 (8.0)。相对 DWM,提升最明显的是 Wall:78.8 vs 64.1;MW-R:58.2 vs 44.8;DROID:48.2 vs 39.4。作者把这个提升归因于综合 recipe,而不是单一模块:DINO/DINOv3 encoder 的局部 object token、AdaLN/RoPE predictor、多步 rollout、proprioception 和 CEM planning 都各有贡献。

Planner ablation:CEM 最稳,NG 是低调参替代,GD/Adam 只适合平滑任务

Table 11 展示所有 planner configurations。CEM 下 Ours 为 Maze 83.9、Wall 78.8、Push-T 70.2、MW-R 58.2、MW-RW 41.6、Rc-R 25.4、Rc-Pl 30.7、DROID 48.2。CEM 下 Ours 仍在多数环境强:Maze 79.7、Push-T 63.4、MW-R 55.1、MW-RW 40.8、DROID 47.2,但 Wall 降到 46.7,说明 对精确 goal matching 更有利。NG 下 Ours 在 Maze/Wall/Push-T/DROID 仍优于 DWM,但绝对值较低:72.7、35.4、48.0、39.9;Robocasa Reach/Place 反而达到 30.5/36.9,是该表中 Ours 的 Robocasa 最好配置。GD/Adam 在 Metaworld 上很强,例如 DWM + GD 的 MW-R/MW-RW 为 62.2/50.0,但在 DROID 全部为 0.0,说明真实操作的 latent cost landscape 不适合直接梯度下降。

组件 ablation 的主要结论

第一,multi-step rollout 有任务依赖的 optimum。模拟任务从 1-step 到 2-step 提升,但 3/6-step 可能因 one-step accuracy 下降而变差;DROID 则更需要 rollout robustness。第二,proprioception 对可用任务几乎一致有益,尤其是 Metaworld 这类末端距离要求精确的长 horizon 控制;但 DROID→Robocasa zero-shot 中 proprioception 空间不对齐,所以论文对 Robocasa 设置 并不使用 proprio distance。

第三,encoder choice 强影响 success:DINOv2-S 是 simulated navigation 的最佳推荐,DINOv3-L 是 real manipulation 的最佳推荐;V-JEPA/V-JEPA-2 video encoders 在本文 frozen-encoder setting 下不如 DINO,可能因为 object boundary/part segmentation 不够细。第四,predictor architecture 上 AdaLN+RoPE 平均最稳,但 feature vs sequence conditioning 在不同任务上有差异;

appendix 的 equalized action ratio 实验显示 sequence conditioning 对 DROID/Robocasa/Metaworld 更好,feature conditioning 对 Wall 更好。

论文推荐 recipe 总结如下:simulated navigation 选 DINOv2-S、AdaLN+RoPE、predictor depth 6、2-step rollout、、用 proprioception、CEM + ;real manipulation 选 DINOv3-L、AdaLN+RoPE、predictor depth 12、论文推荐 6-step rollout、、CEM + ,但 released DROID final config 如上所述仍是 training rollout_steps=2

质性结果和数据 scaling

Figure 15 解读:这些 DINO-WM validation open-loop rollouts 覆盖 Reach、Reach-Wall、Bin-Picking,每个展示 18 个 model actions(对应 simulator 中 90 elementary actions)。它说明 latent predictor 可以通过 decoder 给出较长 horizon 的可视化,但也体现了“看起来合理”和“planner 成功”之间的差异:评价仍要看 success/action score。

Figure 16 解读:上排是 NG planner 输出 action plan 后的 visual decoding,下排是 simulator 按同一动作执行后的真实结果。模型预测中物体似乎被拿起,但 simulator 中实际动作可能没有完成抓取;这类 mismatch 是 latent planning 在 contact-rich manipulation 中的主要风险。

Figure 19 解读:顶部是 epoch 1,底部是训练末期;左侧是 horizon-1 plan 的 visual decoding,右侧是 planner action(蓝)与 ground-truth action(橙)对比。训练末期的视觉 decoding 更稳定,但 action 曲线仍可能偏离,说明 decoder-based qualitative inspection 不能替代 action error 或 success metric。

数据 scaling 的结论是:所有数据集/方法总体随数据量增加而提高;本文方法在 DROID 和 Wall 这种数据仍不饱和的环境中优势更明显;Push-T/Metaworld 也可能继续受益于更多 diversity,但 current setup 下优势不如 DROID/Wall 清楚。DROID→Robocasa 的 scaling 由于 domain gap 更复杂,数据增加未必单调转化为 zero-shot success。

限制与结论

作者明确指出 JEPA-WM 当前是 deterministic predictor:MSE 会学习多模态未来的 conditional mean,而真实物理环境可能存在 aleatoric uncertainty。本文 benchmark 的 deterministic dynamics、latent abstraction 和 closed-loop MPC 能部分缓解这个问题,但在更开放的环境中需要 stochastic extension,例如 latent variable injection 或 latent-space diffusion。另一个实践限制是 planner hyperparameters 非常敏感,尤其 CEM 的 会显著影响 success;NG 调参少但平均不如 CEM 稳。最后,真实操作中的 domain gap 仍明显:DROID-trained model 能 zero-shot 到 Robocasa 的 Reach/Place,但 Pick 类任务因末端/物体位置误差很难。

总体结论:这篇论文把 JEPA-WM 从“看起来可以 unroll 的 latent predictor”推进到“哪些设计选择能让它真的用于 physical planning”的系统性答案。最可复用的经验是:选择细粒度 DINO-style frozen encoder;用 AdaLN/RoPE 让 action conditioning 贯穿 predictor;训练时用适量 multi-step rollout 对抗 autoregressive distribution shift;规划时优先 CEM ,并根据任务复杂度缩放 model capacity 与 data。对于 Physical AI/VLA & World-Action Models 方向,它提供的是一份设计手册式 benchmark,而不是单一模型宣传。