课程进度 课程大纲 已发布 48/48 课
第 0 部分——阅读指南:我们究竟要学什么?
第 1 部分——世界模型:智能体内部的沙盒
第 2 部分——把图像变成状态:LeWM 架构
第 3 部分——防止模型作弊:预测损失与 SIGReg
第 4 部分——让模型行动起来:在潜在空间中规划
第 5 部分——工程复现:从论文到可运行系统
第 6 部分——LeWM 究竟学到了什么?
第 7 部分——为什么“预测准确”仍可能“规划很差”
第 8 部分——从复现者到研究者
附录
先看全景
- 查看历史正在接近还是正在分离?
- 保持接触在哪里、以什么方式碰到?
- 想象滑动、旋转,还是丢失接触?
- 规划选择受数据支持的推动方式。

一个小故事
推动钢琴中心附近,它可能平移;推动角落附近,它可能旋转。一张照片可能无法显示搬运者正在接近、保持接触,还是正在分离。
PushT 把这个故事变成一项模拟任务。蓝色智能体可以推、却不能拉一个 T 形物块,使其到达目标姿态。只有位置还不够:朝向、接触侧、接近方向,以及是否能够实施下一次有效推动都很重要。模拟回合成功,只能证明在这个设置和预算下能够控制——并不能证明掌握通用刚体物理,或拥有安全的机器人技能。
真正规则
论文报告 20,000 个专家回合,平均每个回合 196 个环境步,并训练 10 个 epoch。“专家”不代表覆盖了每一种有用接触模式。应从冻结产物建立一份支持范围图谱:接触位置、接近方向、物块位置与角度、动作幅度与方向、接触持续时间与丢失接触,以及回合边界。“稀疏”表示“记录证据很少”,而不是“物理上不可能”。
采用回合互斥的数据划分。记录产物版本和哈希、解压或转换、加载器、图像预处理、动作/状态归一化、history、frame skip 和动作宽度。冻结训练 YAML 指定 pusht_expert_train.lance;官方公开版本 655cd44 包含压缩 HDF5,而 README 和评估路径也描述 HDF5。
应区分四种复现目标:
- 检查点能够载入,并产生有限输出;
- 检查点能够运行锁定的评估;
- 新模型能够完成训练并进入该评估;
- 多个训练随机种子能够产生预先定义的统计结果。
论文卡片使用 history 3、10 个 epoch,并在没有另行说明时使用 SIGReg 权重 0.1。冻结代码也使用 history 3,但最多训练 100 个 epoch,权重为 0.09。这里检查的官方检查点版本是 22b330c。
可能骗过我们的把戏
构造两段短历史,它们的最后一帧几乎相同。一段中,推动者刚刚向内接触,并开始造成旋转;另一段中,它正在滑过物块并与之分离。为二者施加相同的下一动作。
如果完整历史产生符合实际的不同预测,说明近期视觉上下文有帮助。如果预测不同却与真实结果不符,则动力学错误。如果滚动展开有用,CEM 却选择了糟糕接触,应检查代价或搜索。故意把两段历史都替换为最后一帧,则是在测试可观测性的缺失。
应分类第一次分歧,而不只是最终图像:没有接触、从错误一侧接触、平移/旋转混淆、丢失接触、虚假进度、利用支持范围漏洞,或代价失败。解码器可以生成貌似合理的画面,却隐藏角度误差;探针可以解码角度,却不能证明预测器或代价会使用角度。
预言机代价加学习动力学测试排序;预言机动力学加学习代价测试滚动展开;两个预言机与同一个有限 CEM 预算结合,则测试搜索和动作参数化。这些是使用特权信息的教程诊断工具,不是可部署的 LeWM 基准。
实验凭据
目标并非任意选择。协议从记录轨迹中选取起点,并把 25 个环境步之后的状态作为目标,同时给出 50 步动作预算。规划使用五个模型动作块,每个块包含五个环境动作,并在重规划前执行五个块。CEM 使用 300 个候选、30 个精英、30 轮优化和初始方差 1。因此一份计划横跨 25 个环境步——冻结执行间隔也同样长。
LeWM v3 在相同的 50 条轨迹上报告了三个训练随机种子:
| 方法 | 作者报告的 PushT 成功率 |
|---|---|
| LeWM | 96.0 ± 2.83 |
| DINO-WM | 92.0 ± 1.63 |
| PLDM | 78.0 ± 5.0 |
在该协议下,它们分别相差 4 和 18 个百分点,而不是普遍的百分比改进。图注把随附数值称为“variance”;只有 ± 记号本身,不足以把它改称 SD、SE 或 CI。成功率还应与位置和朝向误差、重叠度或任务指标、最近接近与反转、动作/重规划次数、带硬件信息的耗时记录及首次失败共同报告。
DINO-WM 使用预训练 DINOv2 编码器;原始 LeWM 则在任务轨迹上端到端训练视觉编码器。应始终明确显示预训练与模态来源。
快速检查
- 为什么两张相似的 PushT 图像可能需要不同的下一步预测?
- 支持范围图谱中的稀疏单元格意味着什么?
- 为什么
96.0 ± 2.83必须始终与确切协议绑定?