第10章 视频世界模型:从预测世界到零样本动作
原课程: Robots That Learn, UC Berkeley CS294-291, Spring 2026 本章基于 Lecture 6B: Video World Models 参考论文: Ye et al., “World Action Models are Zero-shot Policies,” arXiv 2026; Bharadhwaj et al., “Track2Act: Predicting Point Tracks from Internet Videos enables Generalizable Robot Manipulation,” arXiv 2024
一、本章概要
核心问题: 人类可以在从未见过的环境中仅凭肉眼观察就完成操作任务——我们看一眼目标状态,大脑中自然会浮现出”物体应如何移动”的画面,并据此指导双手的动作。机器人能否获取同样的能力?具体而言,能否利用互联网上丰富的被动视频数据(人类操作、机器人操作),学习一个能够预测未来视觉状态的”世界模型”,并从中直接导出可执行的动作?
两大技术路线: 本章精读的两篇论文代表了视频世界模型(Video World Model)的两个关键方向:
-
World Action Models (WAMs) | Ye et al., 2026: 将预训练的大规模视频扩散模型改造为机器人基础模型,通过联合去噪视频和动作,将动作学习转化为”逆动力学”问题——模型同时生成未来视频帧和对应的连续动作轨迹,在 14B 参数规模上实现了零样本任务泛化和跨具身迁移。
-
Track2Act | Bharadhwaj et al., 2024: 从互联网视频中学习预测点轨迹(Point Tracks),将 2D 预测转化为 3D 刚体变换,再结合少量具身数据学习残差策略,实现了对不同场景、不同物体的通用操作。
与前后章节的逻辑关系: 第9章(计算神经科学)从生物视角讨论了前向/逆向模型(Forward/Inverse Model)和小脑的预测控制功能——这正是本章视频世界模型的认知科学前身。本章构建的世界模型为第11章(强化学习)提供了环境模拟器基础,因为在世界模型内部进行”想象”比在真实环境中试错高效得多。第17章(长程规划)将讨论 VLA 模型(Vision-Language-Action),而本章的 WAM 正是 VLA 的自然继承者——从”看语言→预测动作”升级为”看语言→预测视频+动作”。
本章路线图: 第2节从第一性原理出发推导世界模型的数学基础(RSSM、变分下界、点轨迹损失函数);第3节精读两篇论文的方法论和实验结果;第4节给出 PyTorch 实现(RSSM 核心模块、世界模型 rollout);第5节提炼核心洞察;第6节提供练习与思考。
二、核心概念与数学基础
2.1 世界模型的直觉与形式化
什么是世界模型? 非正式地说,世界模型是一个能够预测环境未来状态的函数。给定时刻 \(t\) 的观测 \(\mathbf{o}_t\) 和动作 \(\mathbf{a}_t\),世界模型预测 \(t+1\) 时刻的观测 \(\hat{\mathbf{o}}_{t+1}\):
\[\hat{\mathbf{o}}_{t+1} = f_{\text{world}}(\mathbf{o}_t, \mathbf{a}_t)\]在认知神经科学中,这被称为前向模型(Forward Model)——小脑通过与大脑皮层的交互,持续预测运动的感官后果,从而实现快速、无意识的运动纠正(Kawato, 1999; 第9章)。在机器人学中,世界模型的核心价值在于:如果我们可以准确预测”如果我执行动作 \(\mathbf{a}\),世界会变成什么样”,那么最优动作就可以通过”内模拟”(mental simulation)得到。
世界模型的两种范式:
| 范式 | 代表工作 | 状态表示 | 学习方式 | 动作导出 |
|---|---|---|---|---|
| 潜在世界模型 | Dreamer (Hafner et al., 2019-2023) | 低维潜变量 \(\mathbf{z}_t\) | 重构+动力学自监督 | 需要显式搜索/规划 |
| 视频世界模型 (WAM) | DreamZero (Ye et al., 2026) | 视频像素或潜变量 | 预训练视频模型微调 | 联合预测动作,直接输出 |
| 点轨迹世界模型 | Track2Act (Bharadhwaj et al., 2024) | 2D 点轨迹 | 扩散模型的去噪 | 通过 PnP 优化导出 3D 变换 |
2.2 RSSM: 循环状态空间模型 (Recurrent State Space Model)
RSSM (Hafner et al., 2019, 2020) 是 Dreamer 系列世界模型的核心引擎,代表了潜在世界模型范式的数学精华。理解 RSSM 是理解”世界模型可以学到什么”的先决条件。
为什么需要 RSSM? 在 Dreamer 的世界模型中,我们希望同时满足三个需求:(1) 状态表示是低维压缩的(便于高效学习),(2) 状态表示能预测未来(包含动力学信息),(3) 状态表示能重构观测(包含感知信息)。RSSM 通过将潜状态分解为确定性分量和随机性分量,优雅地同时满足这三个需求。
模型定义: RSSM 的状态由两部分构成:
\[\mathbf{s}_t = (\mathbf{h}_t, \mathbf{z}_t)\]其中:
- \(\mathbf{h}_t\) 是确定性隐状态(deterministic hidden state),通过 GRU 循环更新,编码历史信息
- \(\mathbf{z}_t\) 是随机潜变量(stochastic latent variable),从分布中采样,捕获当前时刻的不确定性
RSSM 的核心由三组方程构成:
1. 确定性状态转移(Deterministic Path):
\[\mathbf{h}_t = f_{\text{GRU}}(\mathbf{h}_{t-1}, \mathbf{z}_{t-1}, \mathbf{a}_{t-1})\]其中 \(f_{\text{GRU}}\) 是一个 GRU 单元。上式意味着:当前确定性状态从上一时刻的确定性状态、上一时刻的随机状态和上一时刻的动作共同演化而来。
2. 随机状态先验(Stochastic Prior / Dynamics Model):
\[\mathbf{z}_t^{\text{prior}} \sim p_{\boldsymbol{\psi}}(\mathbf{z}_t \mid \mathbf{h}_t) = \mathcal{N}\big(\mu_{\boldsymbol{\psi}}(\mathbf{h}_t), \sigma_{\boldsymbol{\psi}}^2(\mathbf{h}_t)\big)\]先验 \(p_{\boldsymbol{\psi}}(\mathbf{z}_t \mid \mathbf{h}_t)\) 仅基于确定性状态 \(\mathbf{h}_t\)(即仅基于历史,不含当前观测),代表模型对未来的”猜测”。
3. 随机状态后验(Stochastic Posterior / Representation Model):
\[\mathbf{z}_t^{\text{post}} \sim q_{\boldsymbol{\phi}}(\mathbf{z}_t \mid \mathbf{h}_t, \mathbf{o}_t) = \mathcal{N}\big(\mu_{\boldsymbol{\phi}}(\mathbf{h}_t, \mathbf{o}_t), \sigma_{\boldsymbol{\phi}}^2(\mathbf{h}_t, \mathbf{o}_t)\big)\]后验 \(q_{\boldsymbol{\phi}}(\mathbf{z}_t \mid \mathbf{h}_t, \mathbf{o}_t)\) 额外利用了当前观测 \(\mathbf{o}_t\),代表模型在”看到当前画面”之后对状态的理解。
关键区别: 先验是”纯预测”——不依赖观测 \(\mathbf{o}_t\);后验是”有观测辅助的推断”。训练时用后验提供更准确的 latent state,测试时(无法获得观测)用先验做 rollout。先验与后验之间的 KL 散度约束了模型”仅凭历史猜中真实状态”的能力。
4. 观测解码器(Observation Decoder):
\[\hat{\mathbf{o}}_t \sim p_{\boldsymbol{\theta}}(\mathbf{o}_t \mid \mathbf{h}_t, \mathbf{z}_t)\]将潜状态 \((\mathbf{h}_t, \mathbf{z}_t)\) 解码为观测重构 \(\hat{\mathbf{o}}_t\)。
5. 奖励预测器(Reward Predictor):
\[\hat{r}_t \sim p_{\boldsymbol{\theta}}(r_t \mid \mathbf{h}_t, \mathbf{z}_t)\]从潜状态预测即时奖励,用于在世界模型的想象中评估策略。
RSSM 网络架构的完整数据流(一个时间步):
观测 o_t ──────────┐
├──> q_φ(z_t | h_t, o_t) ──> z_t^{post}
动作 a_{t-1} ─────┤
├──> f_GRU(h_{t-1}, z_{t-1}, a_{t-1}) ──> h_t
h_{t-1}, z_{t-1} ─┘
│
├──> p_ψ(z_t | h_t) ──> z_t^{prior}
├──> p_θ(o_t | h_t, z_t) ──> ô_t
└──> p_θ(r_t | h_t, z_t) ──> r̂_t
2.3 世界模型训练的变分下界 (Variational Bound)
RSSM 的训练目标是最大化观测序列的对数似然 \(\log p(\mathbf{o}_{1:T} \mid \mathbf{a}_{1:T})\)。直接优化这个目标在计算上是不可行的(需要对潜变量积分)。我们通过推导证据下界(Evidence Lower BOund, ELBO)来训练:
核心推导:
\[\begin{aligned} \log p(\mathbf{o}_{1:T} \mid \mathbf{a}_{1:T}) &= \log \int \prod_{t=1}^{T} p(\mathbf{z}_t \mid \mathbf{h}_t) \, p(\mathbf{o}_t \mid \mathbf{h}_t, \mathbf{z}_t) \, d\mathbf{z}_{1:T} \\ &= \log \mathbb{E}_{q(\mathbf{z}_{1:T} \mid \mathbf{o}_{1:T}, \mathbf{a}_{1:T})}\left[ \frac{\prod_{t} p(\mathbf{z}_t \mid \mathbf{h}_t) \, p(\mathbf{o}_t \mid \mathbf{h}_t, \mathbf{z}_t)}{\prod_{t} q(\mathbf{z}_t \mid \mathbf{h}_t, \mathbf{o}_t)} \right] \\ &\geq \mathbb{E}_{q}\left[ \sum_{t=1}^{T} \log p(\mathbf{o}_t \mid \mathbf{h}_t, \mathbf{z}_t) - \text{KL}\big(q(\mathbf{z}_t \mid \mathbf{h}_t, \mathbf{o}_t) \| p(\mathbf{z}_t \mid \mathbf{h}_t)\big) \right] \quad (\text{Jensen 不等式}) \end{aligned}\]最终得到 Dreamer 世界模型的训练损失函数:
\[\boxed{\mathcal{L}_{\text{world}} = \underbrace{\mathbb{E}_{q}\left[\sum_{t=1}^{T} -\log p(\mathbf{o}_t \mid \mathbf{h}_t, \mathbf{z}_t)\right]}_{\text{重构误差 (Reconstruction)}} + \underbrace{\sum_{t=1}^{T} \text{KL}\big(q(\mathbf{z}_t \mid \mathbf{h}_t, \mathbf{o}_t) \;\|\; p(\mathbf{z}_t \mid \mathbf{h}_t)\big)}_{\text{KL 正则化 (KL Regularization)}}}\]第一项 — 重构误差: 强迫模型从潜状态 \((\mathbf{h}_t, \mathbf{z}_t)\) 准确重构观测 \(\mathbf{o}_t\)。对图像观测,通常使用 MSE 或二元交叉熵损失。
第二项 — KL 正则化: 强迫后验 \(q(\mathbf{z}_t \mid \mathbf{h}_t, \mathbf{o}_t)\) 靠近先验 \(p(\mathbf{z}_t \mid \mathbf{h}_t)\)。这项的意义是:训练时有了观测信息,模型可以”作弊”——把后验打造成包含感知信息的高精度状态。但测试时没有观测,模型只能用先验做 rollout。KL 散度确保”不用观测时的猜测”不会太离谱,从而确保想象 rollouts 的可靠性。
为什么 RSSM 优于普通 VAE? 在标准 VAE 中,每个时刻的潜变量独立于历史。但在机器人序列中,当前状态的分布强烈依赖于过去的状态和动作。RSSM 通过 GRU 确定性路径 \(\mathbf{h}_t\) 显式建模了这个时序依赖,使得先验 \(p(\mathbf{z}_t \mid \mathbf{h}_t)\) 已经是一个有历史信息的合理猜测——而不只是高斯噪声。
2.4 WAM 的联合视频-动作去噪公式
DreamZero (Ye et al., 2026) 将世界模型的概念推向了新高度。与 Dreamer 在紧凑潜空间中学习动力学不同,WAM 直接操作在预训练视频扩散模型的潜空间中。
核心理念 (Eq. 1 in WAM paper):
\[\pi_{\boldsymbol{\theta}}(\mathbf{o}_{l:l+H}, \mathbf{a}_{l:l+H} \mid \mathbf{o}_{0:l}, \mathbf{c}, \mathbf{q}_l) = \underbrace{\pi(\mathbf{o}_{l:l+H} \mid \mathbf{o}_{0:l}, \mathbf{c}, \mathbf{q}_l)}_{\text{视频预测 (Video Prediction)}} \cdot \underbrace{\pi(\mathbf{a}_{l:l+H} \mid \mathbf{o}_{0:l+H}, \mathbf{q}_l)}_{\text{逆动力学 (Inverse Dynamics)}}\]这一定义揭示了 WAM 的核心洞察:将动作学习分解为两个子问题——(1) 预测未来视频帧(利用预训练视频模型的世界知识),(2) 从预测的视频中提取对应的动作(逆动力学模型)。由于预训练视频模型已经编码了丰富的物理动力学先验,WAM 只需要额外学习”从视频到动作的映射”即可。
Flow Matching 联合训练目标 (Eq. 3 in WAM paper):
设第 \(k\) 个 chunk 的干净 video latent 为 \(\mathbf{z}_k^1\),干净动作为 \(\mathbf{a}_k^1\)。在 timestep \(t_k\) 的带噪版本通过线性插值获得:
\[\mathbf{z}_k^{t_k} = t_k \mathbf{z}_k^1 + (1 - t_k)\mathbf{z}_k^0, \quad \mathbf{a}_k^{t_k} = t_k \mathbf{a}_k^1 + (1 - t_k)\mathbf{a}_k^0\]其中 \(\mathbf{z}_k^0, \mathbf{a}_k^0 \sim \mathcal{N}(\mathbf{0}, \mathbf{I})\)。模型 \(\mathbf{u}_{\boldsymbol{\theta}}\) 预测 joint velocity \(\mathbf{v}_k^{\text{pred}} = [\mathbf{z}_k^1, \mathbf{a}_k^1] - [\mathbf{z}_k^0, \mathbf{a}_k^0]\):
\[\boxed{\mathcal{L}(\boldsymbol{\theta}) = \mathbb{E}_{\mathbf{z}, \mathbf{a}, \{t_k\}}\left[\frac{1}{K}\sum_{k=1}^{K} w(t_k) \left\| \mathbf{u}_{\boldsymbol{\theta}}([\mathbf{z}_k^{t_k}, \mathbf{a}_k^{t_k}]; \mathcal{C}_k, \mathbf{c}, \mathbf{q}_k, t_k) - \mathbf{v}_k \right\|^2 \right]}\]其中 \(\mathcal{C}_k = \{(\mathbf{z}_j^1, \mathbf{a}_j^1)\}_{j=1}^{k-1}\) 是前序 chunk 的干净上下文(teacher forcing),\(\mathbf{c}\) 是语言指令,\(\mathbf{q}_k\) 是本体感知状态。
DreamZero-Flash 的去耦噪声调度 (Eq. 5 in WAM paper): 为了减少推理时的去噪步数,Flash 将视频和动作的 timestep 解耦:
\[t_k^{\text{video}} = 1 - \eta,\quad \eta \sim \text{Beta}(7, 1); \qquad t_k^{\text{action}} \sim \mathcal{U}(0, 1)\]这使视频偏置到高噪声状态(\(\mathbb{E}[t_k^{\text{video}}]=0.125\)),而动作 timestep 保持均匀分布。训练中模型学会了”从噪声视频中预测干净动作”,使得推理时只需 1 步去噪即可保持性能。
2.5 Track2Act 的点轨迹预测与刚体变换推断
Track2Act (Bharadhwaj et al., 2024) 采用了不同的世界模型视角:不预测完整视频,而是预测点的运动轨迹——这本质上是一种更紧凑、更高效的”世界状态”表示。
问题形式化: 给定初始图像 \(\mathbf{I}_0\)、目标图像 \(\mathcal{G}\) 和初始图像中的 \(p\) 个点 \(\mathbf{P}_0\),模型预测这些点在 \(H\) 个未来时间步的 2D 轨迹:
\[\boldsymbol{\tau} = V_{\boldsymbol{\theta}}(\mathbf{I}_0, \mathcal{G}, \mathbf{P}_0) = [\{ (x_t^i, y_t^i) \}_{i=1}^{p} ]_{t=1}^{H}\]扩散训练: Track2Act 使用 DiT (Diffusion Transformer) 架构。前向过程中,真实轨迹 \(\{\mathbf{P}_t\}_{t=1}^{H}\) 逐步加噪至 \(\mathcal{N}(\mathbf{0}, \mathbf{I})\);反向过程从噪声中重建轨迹,条件为初始图像 embedding \(\mathbf{z}_0\)、目标图像 embedding \(\mathbf{z}_g\) 和扩散步 embedding \(\mathbf{z}_k\)。
点轨迹评估指标: Track2Act 引入 \(\delta_t^x\) 指标衡量预测质量——在时刻 \(t\)、距离真实位置 \(x\) 像素阈值内的点的比例(以 Co-Tracker 输出为 ground-truth):
\[\Delta = \frac{1}{H}\sum_{t=1}^{H}\sum_{x=1}^{N} \delta_t^x\]其中 \(N=10\),\(\Delta \in [0,1]\),越高越好。在不同数据集上,Track2Act 达到 0.67-0.77 的 \(\Delta\) 值,远超 flow-based baseline (0.21-0.42) 和 video-based baseline (0.17-0.30)。
从点轨迹到刚体变换: 将点轨迹转化为可执行的机器人动作是整个 pipeline 的关键步骤。给定初始帧的 3D 点 \(\mathbf{P}_0^{\text{3D}} = \{(x_0^i, y_0^i, z_0^i)\}_{i=1}^{p}\)(通过深度相机获得)、预测的 2D 轨迹 \(\boldsymbol{\tau}_{\text{obj}}\) 和相机内参矩阵 \(\mathbf{K}\),求解每时刻的刚体变换 \(\mathbf{T}_t \in \mathbb{R}^{3 \times 4}\):
\[\mathbf{T}_t = \arg\min_{\mathbf{T}} \sum_{i=1}^{p} \left( \|x_t^i - u_t^i\| + \|y_t^i - v_t^i\| \right)\]其中 \((u_t^i, v_t^i, 1)^{\top} \simeq \mathbf{K} \mathbf{T}_t \mathbf{P}_0^{\text{3D}, i}\),即通过 PnP (Perspective-n-Point) 求解器找到使 3D 点的投影与预测 2D 轨迹最一致的 \(\mathbf{T}_t\)。
残差策略: 由于开环执行 \(\bar{\mathbf{a}}_t\) 存在累积误差,Track2Act 学习残差策略 \(\pi_{\text{res}}\):
\[\hat{\mathbf{a}}_t = \bar{\mathbf{a}}_t + \Delta\mathbf{a}_t, \quad \Delta\mathbf{a}_t = \pi_{\text{res}}(\mathbf{I}_t, \mathcal{G}, \boldsymbol{\tau}, [\bar{\mathbf{a}}_t]_{t=1}^{H})\]残差策略仅需约 400 条机器人遥操作轨迹即可训练,比全量 behavior cloning 方法少 3-4 个数量级的数据。
三、论文精读
3.1 DreamZero: World Action Models are Zero-shot Policies
动机与核心洞察 (Section 1, Introduction)
出处于 WAM paper, p.2: “VLAs successfully inherit linguistic priors to generalize across diverse language instructions… However, their generalization to novel environments and, more critically, to new motions or skills remains limited.”
Ye 等人指出了 VLA 模型的根本局限:从 VLM(Vision-Language Model)预训练骨架出发,虽然获得了强大的语义泛化能力(”把可乐罐移到 Taylor Swift 旁边”),但缺乏对物理运动的理解。VLA 学习的是从观测量到动作量的直接映射 \(f: \mathbf{o} \to \mathbf{a}\),这在数据分布内的任务上表现良好,但面对完全未见过的动作(如”解开鞋带”、”按电梯按钮”),VLA 束手无策——因为它从未在训练数据中见过这类动作的”状态-动作对”。
WAM 的核心洞察是:将动作学习从”状态-动作模仿”重新定义为”逆动力学”。由于预训练视频扩散模型已经编码了丰富的物理世界动力学先验(物体如何移动、如何碰撞、如何变形),WAM 只需学习”给定预测的未来视频,应该执行什么动作”。这是远比 \(f: \mathbf{o} \to \mathbf{a}\) 简单的问题——因为视频帧本身就是动作的最佳中间监督信号。
模型设计 (Section 3.1, Model Architecture)
出处于 WAM paper, p.6: “DreamZero jointly predicts video o_{l:l+H} and actions a_{l:l+H} conditioned on language instruction c, proprioceptive state q_l and visual observation including the current and the past history o_{0:l}.”
DreamZero 基于 Wan2.1-I2V-14B-480P (Team Wan, 2025) 这个 14B 参数的图像到视频扩散模型构建。关键设计决策包括:
1. 自回归架构 vs. 双向架构 (Appendix B)。WAM paper 详细论证了自回归架构的优势:
- 语言-视频-动作对齐: 双向扩散需要处理固定长度序列,往往需要视频下采样(subsampling),这会扭曲原生帧率,破坏视频和动作之间的精确时域对齐。自回归生成利用 KV-cache,在一次前向传播中支持任意长度上下文,保持原生帧率。
- 闭环推理: 执行动作后,真实观测帧替换生成的帧进入 KV-cache,消除了自回归生成的累积误差。这是 WAM 独有的优势——纯视频生成模型无法做到。
- 推理速度: KV-cache 使自回归推理比双向快 3-4 倍。
2. Chunk-wise Teacher Forcing (Section 3.1)。DreamZero 以 chunk 为单位进行训练,每个 chunk 包含 \(K\) 个 latent 帧对应一个动作水平(48 步动作,1.6 秒)。训练时,对每个 chunk \(k\) 的带噪 latent 做去噪,条件为前序 chunk 的干净 latent 和动作。这类似于语言模型中的 teacher forcing 训练。
3. 推理时的真实状态注入 (Algorithm 2, line 29-31)。这是 WAM 最精巧的设计之一。在闭环控制中,执行完一个 chunk 的动作后:
- 机器人运动到新位置,相机捕获新的真实观测 \(\mathbf{o}^{\text{real}}\)
- 编码后注入 KV-cache(替换生成的视频 latent)
- 丢弃生成的视频帧,保留真实观测作为下一轮的条件
这解决了自回归视频生成的核心问题——累积误差。由于每隔 1.6 秒就将真实观测注入,模型的”世界状态”不会因生成误差而漂移。
推理优化:从 5.7 秒到 150 毫秒 (Section 3.2)
出处于 WAM paper, Table 1: 累积推理加速。
WAM paper 的系统工程同样是卓越的贡献。将 14B 视频扩散模型从实验品变为 7Hz 实时控制器的优化链条:
| 优化类别 | 具体技术 | 加速比 |
|---|---|---|
| 系统级 | CFG 双卡并行 | 1.8x |
| 系统级 | DiT Caching (余弦相似度重用) | 5.4x |
| 实现级 | torch.compile + CUDA Graphs | 10.9x |
| 实现级 | Kernel/Scheduler 优化 | 14.8x |
| 实现级 | NVFP4 量化 (Blackwell) | 16.6x |
| 模型级 | DreamZero-Flash (去耦噪声调度) | 38x |
最关键的创新是 DreamZero-Flash 的去耦噪声调度。标准训练中,视频和动作共享 timestep(同时变干净或变噪声),但少步推理时动作需要在视频仍有噪声的条件下被预测干净。Flash 通过 \(\text{Beta}(7,1)\) 分布使视频偏置到高噪声状态,训练模型”在噪声视觉上下文中预测干净动作”——直接将训练分布与少步推理分布对齐。
实验结果的关键发现 (Section 5)
出处于 WAM paper, Figure 8, Figure 9, Table 2.
发现 1 — Seen Task Generalization (Figure 8): 在 AgiBot G1 上,DreamZero 达到 62.2% 的平均任务进度,而从头训练的 VLA(GR00T N1.6, \(\pi 0.5\))几乎为零。即使在数千小时跨具身数据上预训练的 VLA,也仅达到 27.4%。这 2 倍以上的提升说明:联合视频-动作建模对有效学习异构、非重复数据至关重要。
发现 2 — Unseen Task Generalization (Figure 9): 在 10 个完全未见过的任务上(解鞋带、摘帽子、搭积木、熨衣服等),DreamZero 达到 39.5% 平均任务进度,而训练数据中从未出现这些动作。定性观察揭示了一个关键现象:DreamZero 失败的模式几乎全是视频生成错误,而非动作提取错误——策略忠实地执行了视频预测的轨迹。这意味着 WAM 的性能直接绑定于视频生成质量——视频模型越好,策略越好。
发现 3 — Cross-Embodiment Transfer (Table 2): 仅用 20 分钟 YAM 机器人的视频数据(无动作标签),AgiBot 上未见任务的平均进度从 38.3% 提升至 55.4%。人工视频(12 分钟)也提升至 54.3%。这表明 WAM 可以通过纯视觉经验”学习新技能”——这为利用互联网上海量人类视频提供了路径。
发现 4 — Few-shot Embodiment Adaptation (Figure 12): 将 AgiBot 上训练好的 DreamZero 仅用 30 分钟 YAM 机器人的”玩耍”数据微调(55 条轨迹,11 个任务),适配后的策略不仅保留了语言跟随能力,还能泛化到训练中未出现的新物体(南瓜、泰迪熊、杯面)。
3.2 Track2Act: Predicting Point Tracks from Internet Videos
动机与核心洞察 (Section 1, Introduction)
出处于 Track2Act paper, p.2: “Our insight to develop an in-the-wild manipulation strategy that is also directly deployable is to factorize a manipulation policy into an interaction-plan that can leverage diverse large-scale video sources on the web… and a residual policy that requires a small amount of embodiment-specific robot interaction data.”
Track2Act 提出了一个精巧的三阶段因式分解策略:
- 阶段 1 — 交互计划预测: 从互联网视频学习预测”物体上各点的运动轨迹”(embodiment-agnostic)
- 阶段 2 — 刚体变换推断: 将 2D 点轨迹转化为 3D 刚体变换,导出开环末端执行器位姿
- 阶段 3 — 残差策略修正: 用少量具身数据进行闭环修正
为什么选择点轨迹? 作者在 Introduction 中论证了:预测完整 RGB 视频(Section 2, Related Works)过于复杂——纹理、光照等无关细节占据了大量模型容量。预测手-物体掩码(Bharadhwaj et al., 2024)过于粗糙——无法捕获精确的物体运动信息。而点轨迹恰好处于最优折衷:足够紧凑(仅需 ~400 个点的 2D 坐标),但又足够表达(能直接推导 3D 刚体变换)。
点轨迹预测的训练策略 (Section 3.2)
出处于 Track2Act paper, p.6-7: 设计为 DiT Transformer 架构的条件扩散模型。
训练数据构造: Track2Act 使用了极具开创性的数据策略——从 EpicKitchens(人类自我中心视频)、Something-Something-v2(人类动作短视频)、RT1 Data 和 BridgeData(机器人操作数据)中共获得约 400,000 个视频片段,每个片段 4-5 秒。关键步骤:
- 对每个片段随机选择 \(p \in [200, 400]\) 个点
- 运行 Co-Tracker (Karaev et al., 2023) 获得 ground-truth 点轨迹
- 初始帧作为条件 \(\mathbf{I}_0\),末帧作为目标 \(\mathcal{G}\)
模型架构: 24 个 DiT block,隐藏维度 1024,16 个注意力头。ResNet18 编码器提取初始图像和目标图像的 512 维 embedding。条件注入通过 adaLN (Adaptive Layer Normalization) 层实现——将初始图像 embedding、目标图像 embedding 和扩散步 embedding 相加后调制 DiT 各层。
关键训练细节: 模型不假设要跟踪哪些物体,不假设相机运动模式,不对训练视频做任何额外策划——仅确保其长度为 4-5 秒。这种”极简数据假设”是其泛化到真实机器人场景的前提。
从 2D 轨迹到 3D 刚体变换 (Section 3.3)
出处于 Track2Act paper, Algorithm 1 (p.6).
从预测的全体点轨迹中筛选出”移动中的物体上的点”(\(\boldsymbol{\tau}_{\text{obj}}\))后,通过以下优化问题推断每时刻的刚体变换 \(\mathbf{T}_t\):
\[\mathbf{T}_t = \arg\min_{\mathbf{T}} \sum_{i=1}^{p} \left( \|x_t^i - u_t^i\| + \|y_t^i - v_t^i\| \right)\]其中 \((u_t^i, v_t^i, 1)^{\top} \simeq \mathbf{K} \mathbf{T}_t \mathbf{P}_0^{\text{3D}, i}\)。
为什么这个优化不是欠定的? 因为同一个 \(\mathbf{T}_t\)(6 自由度,SE(3))必须解释 \(p\) 个点的运动——点越多,约束越强。在机器人实验场景中(单物体、固定相机),\(p\) 通常足够大使得优化良态。
得到末端执行器位姿的完整流程:
- 将末端执行器移至物体中心(启发式)
- 执行抓取
- 应用预测的刚体变换序列:\(\bar{\mathbf{a}}_t = \mathbf{T}_t \mathbf{e}_1\)
整个开环 pipeline 不需要任何具身数据,体现了 embodiment-agnostic interaction plan 的核心优势。
残差策略 (Section 3.4)
出处于 Track2Act paper, Eq. (1): \(\hat{\mathbf{a}}_t = \bar{\mathbf{a}}_t + \Delta\mathbf{a}_t\).
残差策略的设计哲学是”把最难的部分留给最擅长它的模型”:
- 点轨迹预测模型(从互联网视频学)负责”理解物理世界”,提供粗略但泛化的运动计划
- 残差策略(从 ~400 条具身轨迹学)负责”精细化执行”,修正接触点、抓取姿态等具身细节
残差策略的架构也是基于 DiT 的 Transformer(12 个 block,隐藏维度 512,8 个注意力头)。输入包括当前观测、预测的点轨迹和开环动作序列,预测未来 \(h=4\) 步的残差修正 \(\Delta\mathbf{a}_{t:t+h}\)(多步预测缓解 compounding errors)。
实验结果的关键发现 (Section 5)
出处于 Track2Act paper, Table 1, Table 2, Figure 6.
发现 1 — 点轨迹预测精度 (Table 1): Track2Act 在四个异构数据集上的 \(\Delta\) 指标为 0.67-0.77,远超 flow-based baseline (0.21-0.42) 和 video-based baseline (0.17-0.30)。不预测任何运动(恒等映射)的 baseline 仅得 0.03-0.36。
发现 2 — 泛化能力梯度 (Table 2): Track2Act 在四个泛化等级的测试中表现如下:
| 泛化等级 | 定义 | Ours (残差策略) | Ours (开环) | GC-BC | 最佳 Baseline |
|---|---|---|---|---|---|
| MG (Mild) | 已见物体新配置 | 70% | 35% | 60% | 70% (HO-Mask) |
| G (Standard) | 未见物体实例 | 60% | 25% | 20% | 40% (HO-Mask) |
| CG (Compositional) | 未见任务-物体组合 | 55% | 30% | 0% | 25% (HO-Mask) |
| TG (Type) | 完全未见物体/任务类型 | 40% | 25% | 0% | 20% (HO-Mask) |
两个关键结论:(1) 残差策略比纯开环执行在 MG 下提升了 2 倍(35%→70%);(2) 在高泛化等级(CG, TG)下,仅行为的 BC 和基于静态 affordance 的方法完全失效(0%),而 Track2Act 仍保持 40-55% 的成功率。
发现 3 — 点轨迹表达力胜于掩码和 affordance (Table 2)。Hand-Object Mask Conditioned BC 在 TG 下为 20%,Affordance-Conditioned BC 为 5%。这证明:静态 2D 掩码无法捕获”物体如何随时间改变状态”的精确信息——而这些信息正是可泛化操作所需的。
四、算法与代码实现
本节实现三个核心模块:(1) RSSM(循环状态空间模型),(2) 世界模型 rollout(Dreamer 风格的想象力训练),(3) 点轨迹预测的评估指标 \(\Delta\)。
4.1 RSSM 核心实现
"""
RSSM: Recurrent State Space Model
基于 Hafner et al., 2019/2020 的 Dreamer 系列世界模型
参考: Dreamer (Hafner et al., 2020), Eq. (1-4)
"""
import torch
import torch.nn as nn
import torch.nn.functional as F
from torch.distributions import Normal, kl_divergence as kl
from typing import Tuple
class RSSM(nn.Module):
"""
循环状态空间模型 (RSSM)
状态 s_t = (h_t, z_t)
- h_t: 确定性隐状态 (GRU 循环更新)
- z_t: 随机潜变量 (高斯分布)
包含四个子模块:
1. Dynamics Model p(z_t | h_t): 先验 (不含当前观测)
2. Representation Model q(z_t | h_t, o_t): 后验 (含当前观测)
3. GRU Cell: h_t = f(h_{t-1}, z_{t-1}, a_{t-1})
4. Observation Decoder: p(o_t | h_t, z_t)
"""
def __init__(
self,
action_dim: int = 6, # 动作维度 (如末端执行器位姿)
obs_dim: int = 1024, # 观测维度 (CNN encoder 输出)
hidden_dim: int = 200, # GRU 隐状态维度 h_t
stoch_dim: int = 30, # 随机潜变量维度 z_t
mlp_hidden: int = 200, # MLP 隐藏层维度
):
super().__init__()
# === 1. 确定性路径: GRU ===
# 输入: h_{t-1} (hidden_dim), z_{t-1} (stoch_dim), a_{t-1} (action_dim)
self.gru = nn.GRUCell(
input_size=stoch_dim + action_dim,
hidden_size=hidden_dim,
)
# === 2. 先验网络: p(z_t | h_t) ===
# 仅基于确定性隐状态 h_t 预测 z_t 的分布
self.prior_net = nn.Sequential(
nn.Linear(hidden_dim, mlp_hidden),
nn.ELU(),
nn.Linear(mlp_hidden, 2 * stoch_dim), # mu + log_sigma
)
# === 3. 后验网络: q(z_t | h_t, o_t) ===
# 基于 h_t 和当前观测 o_t 预测 z_t 的分布
self.post_net = nn.Sequential(
nn.Linear(hidden_dim + obs_dim, mlp_hidden),
nn.ELU(),
nn.Linear(mlp_hidden, 2 * stoch_dim), # mu + log_sigma
)
# === 4. 观测解码器: p(o_t | h_t, z_t) ===
self.obs_decoder = nn.Sequential(
nn.Linear(hidden_dim + stoch_dim, mlp_hidden),
nn.ELU(),
nn.Linear(mlp_hidden, obs_dim),
)
# === 5. 奖励预测器: p(r_t | h_t, z_t) ===
self.reward_predictor = nn.Sequential(
nn.Linear(hidden_dim + stoch_dim, mlp_hidden),
nn.ELU(),
nn.Linear(mlp_hidden, 1),
)
self.stoch_dim = stoch_dim
self.hidden_dim = hidden_dim
def _compute_distribution(
self,
x: torch.Tensor,
net: nn.Module,
) -> Normal:
"""
将 MLP 输出转换为正态分布 (重参数化技巧支撑)
返回: Normal(mean, std), 其中 std = softplus(log_sigma) + min_std
"""
raw = net(x)
mu, log_sigma = torch.chunk(raw, 2, dim=-1)
sigma = F.softplus(log_sigma) + 1e-4 # 保证正数
return Normal(mu, sigma)
def forward_prior(
self,
h: torch.Tensor,
) -> Tuple[Normal, torch.Tensor]:
"""
先验分布 p(z_t | h_t) — 用于测试时的想象力 rollout
Args:
h: (B, hidden_dim) 确定性隐状态
Returns:
prior_dist: Normal 分布
z_prior: (B, stoch_dim) 采样 (reparameterized sample)
"""
prior_dist = self._compute_distribution(h, self.prior_net)
z_prior = prior_dist.rsample() # 重参数化采样, 支持梯度传播
return prior_dist, z_prior
def forward_posterior(
self,
h: torch.Tensor,
o: torch.Tensor,
) -> Tuple[Normal, torch.Tensor]:
"""
后验分布 q(z_t | h_t, o_t) — 用于训练时的推断
Args:
h: (B, hidden_dim) 确定性隐状态
o: (B, obs_dim) 当前观测 (CNN encoder 输出)
Returns:
post_dist: Normal 分布
z_post: (B, stoch_dim) 采样
"""
h_o = torch.cat([h, o], dim=-1)
post_dist = self._compute_distribution(h_o, self.post_net)
z_post = post_dist.rsample()
return post_dist, z_post
def forward_step(
self,
prev_state: Tuple[torch.Tensor, torch.Tensor],
prev_action: torch.Tensor,
obs: torch.Tensor = None, # None 代表 imagination mode
) -> Tuple[torch.Tensor, torch.Tensor, dict]:
"""
单个时间步的前向传播
Args:
prev_state: (h_{t-1}, z_{t-1})
prev_action: a_{t-1}
obs: o_t — 训练时为真实观测, 想象时为 None
Returns:
h_t, z_t, info_dict
"""
h_prev, z_prev = prev_state
# Step 1: GRU 更新确定性隐状态
gru_input = torch.cat([z_prev, prev_action], dim=-1)
h = self.gru(gru_input, h_prev)
# Step 2: 随机状态推断
if obs is not None:
# 训练模式: 有观测, 用后验
post_dist, z = self.forward_posterior(h, obs)
prior_dist, _ = self.forward_prior(h)
info = {
'prior_dist': prior_dist,
'post_dist': post_dist,
'kl_loss': kl(post_dist, prior_dist).sum(dim=-1).mean(),
}
else:
# 想象模式: 无观测, 用先验
prior_dist, z = self.forward_prior(h)
info = {
'prior_dist': prior_dist,
'kl_loss': torch.tensor(0.0),
}
return h, z, info
def decode_obs(self, h: torch.Tensor, z: torch.Tensor) -> torch.Tensor:
"""p(o_t | h_t, z_t): 从潜状态重构观测"""
s = torch.cat([h, z], dim=-1)
return self.obs_decoder(s)
def predict_reward(self, h: torch.Tensor, z: torch.Tensor) -> torch.Tensor:
"""p(r_t | h_t, z_t): 从潜状态预测奖励"""
s = torch.cat([h, z], dim=-1)
return self.reward_predictor(s)
def get_initial_state(
self,
batch_size: int,
device: torch.device,
) -> Tuple[torch.Tensor, torch.Tensor]:
"""初始化状态 (全零)"""
h0 = torch.zeros(batch_size, self.hidden_dim, device=device)
z0 = torch.zeros(batch_size, self.stoch_dim, device=device)
return h0, z0
4.2 世界模型 Rollout (训练+想象力)
"""
世界模型 Rollout: 训练时用后验推断 + teacher forcing;
训练后在世界模型的想象 (imagination) 中学习策略。
"""
def world_model_loss(
rssm: RSSM,
obs_seq: torch.Tensor, # (B, T, obs_dim) 观测序列
action_seq: torch.Tensor, # (B, T, action_dim) 动作序列
) -> Tuple[torch.Tensor, dict]:
"""
计算 Dreamer 世界模型的训练损失
对应 RSSM 的 ELBO 损失 (Section 2.3):
L = reconstruction_loss + beta * KL_regularization
出处于 Dreamer (Hafner et al., 2020), Eq. (4-5)
"""
B, T, _ = obs_seq.shape
device = obs_seq.device
h, z = rssm.get_initial_state(B, device)
h = h.to(device)
z = z.to(device)
recon_losses = []
kl_losses = []
for t in range(T):
# t=0 时 prev_action 为零向量
a_prev = action_seq[:, t - 1] if t > 0 else torch.zeros(B, rssm.gru.input_size - rssm.stoch_dim, device=device)
o_t = obs_seq[:, t]
h, z, info = rssm.forward_step(
prev_state=(h, z),
prev_action=a_prev,
obs=o_t,
)
# 重构损失 (MSE)
o_hat = rssm.decode_obs(h, z)
recon_losses.append(F.mse_loss(o_hat, o_t))
# KL 正则化 (后验 vs 先验)
kl_losses.append(info['kl_loss'])
recon_loss = torch.stack(recon_losses).mean()
kl_loss = torch.stack(kl_losses).mean()
# beta: KL 平衡系数 (典型值: 0.1 ~ 1.0)
# 用于平衡"重构精度"和"先验可预测性"
beta = 0.5
total_loss = recon_loss + beta * kl_loss
return total_loss, {
'recon_loss': recon_loss.item(),
'kl_loss': kl_loss.item(),
'total_loss': total_loss.item(),
}
def imagination_rollout(
rssm: RSSM,
policy: nn.Module, # 在潜空间中学习的策略 π(a_t | h_t, z_t)
horizon: int = 50, # 想象水平
batch_size: int = 16, # 并行想象轨迹数
device: torch.device = torch.device('cuda'),
) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]:
"""
在世界模型的潜空间中进行想象力 rollout
用于 Dreamer 的 actor-critic 学习 (Hafner et al., 2020, Eq. 6-7)
Args:
rssm: 训练好的 RSSM 世界模型 (所有参数冻结)
policy: 在潜空间中学习的策略网络
horizon: 想象步数
batch_size: 并行轨迹数
Returns:
states: (B, horizon+1, hidden_dim+stoch_dim) 潜状态序列
actions: (B, horizon, action_dim) 动作序列
rewards: (B, horizon, 1) 预测奖励序列
"""
rssm.eval()
policy.eval()
h, z = rssm.get_initial_state(batch_size, device)
h, z = h.to(device), z.to(device)
states = []
actions = []
rewards = []
for t in range(horizon):
# 构建当前潜状态 s_t = [h_t; z_t]
s_t = torch.cat([h, z], dim=-1)
states.append(s_t)
# 策略采样动作
a_t = policy(s_t).rsample() if hasattr(policy(s_t), 'rsample') else policy(s_t)
actions.append(a_t)
# 世界模型前向一步 (想象模式: 无观测, 用先验)
h, z, _ = rssm.forward_step(
prev_state=(h, z),
prev_action=a_t,
obs=None, # 关键: 想象模式不注入观测!
)
# 预测奖励
r_t = rssm.predict_reward(h, z)
rewards.append(r_t)
# 附加最后状态
s_T = torch.cat([h, z], dim=-1)
states.append(s_T)
states = torch.stack(states, dim=1) # (B, H+1, state_dim)
actions = torch.stack(actions, dim=1) # (B, H, action_dim)
rewards = torch.stack(rewards, dim=1) # (B, H, 1)
return states, actions, rewards
4.3 点轨迹评估指标实现
"""
Track2Act 的 Δ 评估指标
出处于 Track2Act (Bharadhwaj et al., 2024), Section 4.1, p.9
Δ = (1/H) * Σ_{t=1}^{H} Σ_{x=1}^{N} δ_t^x
其中 δ_t^x = 在时刻 t 距离 ground-truth 小于 x 像素的点的比例
"""
def compute_delta_metric(
pred_tracks: torch.Tensor, # (H, P, 2) 预测的 2D 点轨迹
gt_tracks: torch.Tensor, # (H, P, 2) ground-truth 2D 点轨迹
max_threshold: int = 10, # N: 最大像素阈值
) -> float:
"""
计算 Track2Act 的 Δ 评估指标
Args:
pred_tracks: (H, P, 2) 预测的 (x, y) 点位置序列
H: 预测水平, P: 点数
gt_tracks: (H, P, 2) ground-truth (x, y) 点位置序列
max_threshold: 最大像素阈值 N (track2act 使用 10)
Returns:
delta: float, 范围 [0, 1], 越高越好
"""
H, P, _ = pred_tracks.shape
# 逐点计算 L2 距离 (像素)
# distance[t, p] = ||pred[t,p] - gt[t,p]||_2
distances = torch.norm(pred_tracks - gt_tracks, dim=-1) # (H, P)
delta_per_timestep = []
for t in range(H):
d_t = distances[t] # (P,)
# δ_t^x: 每个 x 阈值下满足条件的比例
delta_t_sum = 0.0
for x in range(1, max_threshold + 1):
frac_within_x = (d_t < x).float().mean().item()
delta_t_sum += frac_within_x
delta_per_timestep.append(delta_t_sum)
# Δ = 时间维度平均
delta = sum(delta_per_timestep) / H
return delta
# 使用示例
if __name__ == "__main__":
# 模拟数据
H, P = 50, 384 # Track2Act 典型: ~400 点, 50 步
pred = torch.randn(H, P, 2) * 5 + 5
gt = torch.randn(H, P, 2) * 5 + 5
delta = compute_delta_metric(pred, gt, max_threshold=10)
print(f"Track2Act Δ metric: {delta:.4f}")
# Track2Act 论文中 Ours 在 EpicKitchens 上达到 0.67
4.4 WAM Flow Matching 训练伪代码
"""
DreamZero Flow Matching 训练的核心循环伪代码
对应 WAM paper, Algorithm 1 (p.22, Appendix C)
出处于 DreamZero (Ye et al., 2026), Eq. (2-3)
"""
def dreamzero_training_step(model, batch, optimizer):
"""
单步训练循环
batch: {
'video': (B, M*K, C, H, W) — M 个 chunk, 每 chunk K latent 帧
'actions': (B, M, act_dim) — 每 chunk 对应的动作
'text': list[str] — 语言指令
'state': (B, M, state_dim) — 本体感知状态
}
M: number of chunks (default 4)
K: latent frames per chunk (default 2)
"""
B = batch['video'].shape[0]
device = batch['video'].device
total_loss = 0.0
# 逐 chunk 的 teacher forcing 训练
for k in range(batch['num_chunks']):
# 干净 latent 和动作
z_clean = batch['video_latents'][k] # (B, K, latent_dim)
a_clean = batch['actions'][k] # (B, act_dim)
# 前序 chunk 作为干净上下文 (teacher forcing)
if k > 0:
context = {
'z': batch['video_latents'][:k], # 前 k 个 chunk
'a': batch['actions'][:k],
}
else:
context = None
# 采样噪声 (Hafner-style flow matching)
z_noise = torch.randn_like(z_clean)
a_noise = torch.randn_like(a_clean)
# 采样 timestep
t_k = torch.rand(B, device=device)
# 线性插值 (Eq. 2)
z_noisy = t_k * z_clean + (1 - t_k) * z_noise
a_noisy = t_k * a_clean + (1 - t_k) * a_noise
# 目标 velocity: v_k = [z_clean, a_clean] - [z_noise, a_noise]
v_target_video = z_clean - z_noise
v_target_action = a_clean - a_noise
# 模型预测 velocity
model_input = torch.cat([z_noisy, a_noisy], dim=-1)
v_pred = model(model_input, context, text=batch['text'], state=batch['state'], t=t_k)
v_pred_video, v_pred_action = v_pred.split([z_clean.shape[-1], a_clean.shape[-1]], dim=-1)
# Flow Matching 损失 (Eq. 3)
loss_video = F.mse_loss(v_pred_video, v_target_video)
loss_action = F.mse_loss(v_pred_action, v_target_action)
loss = loss_video + loss_action
total_loss = total_loss + loss
total_loss = total_loss / batch['num_chunks']
optimizer.zero_grad()
total_loss.backward()
optimizer.step()
return total_loss.item()
五、核心 Takeaway 与延伸阅读
5.1 五个核心洞察
1. 视频预测是动作学习的最佳代理任务。 WAM paper (Section 6) 反复验证了一个根本发现:DreamZero 的失败几乎全部来自视频生成错误,而非动作提取错误。这意味着”机器人能力的上限 = 视频生成模型的上限”。随着视频生成模型(如 Sora、Wan、Veo)持续进步,WAM 的性能将自动提升——这是一个”免费午餐式”的 scaling law。正如论文所言:”Improving robotic capabilities reduces to improving video generation.”
2. 世界模型的表示粒度决定了泛化边界。 对比三个层次的世界模型表示——(a) RSSM 的低维潜变量(极度紧凑,但丢失了细粒度视觉信息),(b) Track2Act 的点轨迹(紧凑且有物理含义),(c) DreamZero 的全视频像素/潜变量(最丰富但有冗余)。Track2Act 在极少量具身数据(~400 条轨迹)下达到 40-55% 的类型泛化水平,而 DreamZero 在零样本下达到 39.5%。这揭示了一个设计原则:越丰富的世界表示需要越大的预训练来支撑,但也能解锁更强的零样本泛化。
3. 数据多样性胜过重复性(Task Diversity > Repetition)。 WAM paper (Table 4) 的消融实验直接对比了”500 小时多样化数据”与”500 小时重复数据”——多样化数据带来 50% 的 PnP Easy 任务进度,而重复性数据仅 33%。从 RSSM 的视角理解:逆动力学模型(从视频到动作的映射)需要在不同视觉上下文中学到鲁棒的状态-动作对应关系——重复数据提供的视觉变化远少于多样化数据。
4. “想象”是 RL 和世界模型的交汇点。 RSSM 在潜空间中进行的 imagination rollout(见 4.2 节代码)本质上是将 RL 的试错过程从真实世界迁移到世界模型的内部模拟。Dreamer v3 (Hafner et al., 2023) 证明了仅在世界模型的想象中训练策略就能在真实世界中泛化——这极大地降低了样本复杂度。WAM 虽然没有显式的潜空间想象,但其联合视频-动作生成在概念上等同于”一次性想象并执行”。
5. 跨具身迁移是视频世界模型的杀手级应用。 WAM paper 展示了仅用 30 分钟新机器人数据完成具身适配,Track2Act 通过完全无具身标签的网络视频学习交互计划。两者的共同洞察是:物理世界的基本动力学(重力、接触、刚体运动)是具身无关的——它们可以在任何视频中学到,然后根据目标具身的需求”翻译”为对应的动作。这为实现通用具身智能提供了最可扩展的路径:用互联网规模的数据学物理知识,用极少量具身数据做适配。
5.2 开放问题与未来方向
- 长程世界模型 (Long-horizon WAMs): 当前 DreamZero 的视觉记忆窗口仅为 6.6 秒(8 个 latent 帧),Track2Act 的预测水平约为 50 步。对于需要持续数分钟的多阶段任务(如”整理整个厨房”),如何扩展世界模型的时间跨度?
- WAM 的 Scaling Law: WAM paper 在 Table 4 中证明了 14B > 5B,但缺乏完整的规模定律分析。WAM 的规模定律与语言模型的幂律关系是否类似?数据量、模型大小和计算量如何最优分配?
- 精细操作精度的世界模型: DreamZero 在亚厘米精度任务上受限(如插钥匙),Track2Act 的残差策略偶尔会在抓取阶段失败。视频世界模型是否能学到比人类视觉更精细的空间分辨率?
- 世界模型内部的因果推理: 当前 WAM 学到的关联是统计性的(”物体 A 被推时,画面通常会这样变化”),而非因果性的(”因为力 F 作用在接触点 C,所以物体 B 会沿方向 D 移动”)。引入因果结构(如物理引擎约束)是否能提升世界模型的可泛化性和样本效率?
5.3 推荐延伸阅读
-
Hafner et al., “Mastering Diverse Domains through World Models,” 2023 (Dreamer v3): 证明了仅在世界模型想象中训练策略,可在 50+ Atari 游戏、Minecraft、DMLab 等任务上达到 SOTA。
-
Kim et al., “Video Action Models,” 2026: 与 DreamZero 同期出品的 WAM,在精细操作(亚毫米容差)上展示了令人鼓舞的结果。
-
Assran et al., “V-JEPA 2: Visual World Models for Zero-shot Robotics,” 2025: 另一种路线——在抽象潜空间而非像素空间中预测未来,62 小时机器人数据后即可零样本规划。
-
Hu et al., “GAIA-2: A Controllable Multi-View Generative World Model for Robotics,” 2025: 将 WAM 扩展到多视图生成,可用于机器人学中的视角不变世界建模。
六、练习与思考
基础题 (确保理解核心概念)
-
RSSM 的先验分布 \(p(\mathbf{z}_t \mid \mathbf{h}_t)\) 和后验分布 \(q(\mathbf{z}_t \mid \mathbf{h}_t, \mathbf{o}_t)\) 在训练和测试时分别如何使用?为什么需要两者的 KL 散度约束?
-
详细推导 RSSM 的证据下界(ELBO),并说明重构项和 KL 正则项各自的物理含义。如果 KL 系数 \(\beta\) 设为 0,世界模型会出现什么问题?
-
WAM (DreamZero) 在推理时为什么将真实观测注入 KV-cache 而不是使用生成的视频帧?如果连续 10 个 chunk 不注入真实观测(纯开环视频自回归),预测的视频和动作会出现什么现象?
进阶题 (深入理解与衔接)
-
对比 DreamZero 和 Track2Act 的世界表示粒度:(a) DreamZero 的全视频潜变量,(b) Track2Act 的点轨迹,(c) RSSM 的低维潜变量。在数据需求、泛化能力和计算开销三个维度上做比较。如果让 Track2Act 学习 DreamZero 的残差策略修正,pipeline 需要做哪些修改?
-
DreamZero-Flash 的去耦噪声调度(去耦后的 \(t_k^{\text{video}}\) 和 \(t_k^{\text{action}}\))为什么能使 4 步去噪减少到 1 步而保持性能?从”训练-推理分布匹配”的角度给出数学解释。
思考题 (开放问题)
-
世界模型的三大范式(RSSM 潜空间想象、视频世界模型、点轨迹世界模型)在”机器人如何学习新技能”的问题上给出了不同的答案。你能否设计一个统一的框架,将这三者融合?例如:用视频世界模型做粗粒度的长期规划,用 RSSM 做中期的想象 rollout,用点轨迹做精细的接触操作。画出示意图并讨论融合面临的挑战。
-
视频世界模型的最惊人之处在于”预训练视频扩散模型已经编码了物理世界知识”。但互联网视频中充斥着违反物理规律的内容(特效、慢动作、倒放、剪辑)。这些”不良数据”会如何影响 WAM 学到的世界模型?设计一个实验方案来测量这种影响,并提出可能的缓解策略。
下一章预习: 第11章将构建在视频世界模型之上,学习如何利用强化学习在”真实世界”和”世界模型的想象”中训练最优策略。你将看到世界模型如何将 RL 的样本效率提升若干个量级——从”数百万次真实交互”降低到”数千次真实交互 + 无限次想象交互”。