AI世界模型:从视频预测到具身规划的新范式 引言为什么预测下一帧突然成了香饽饽2024 年以来世界模型World Model这个词在 AI 圈的热度直线上升。Sora 的演示视频让人们看到模型对物理规律的隐式理解Figure、特斯拉 Optimus 等机器人项目又把在脑子里先演练一遍再动手的规划方式推到了台前。世界模型的想法其实不新。2018 年 Ha 和 Schmidhuber 的论文《World Models》就提出智能体不需要直接在真实环境里试错可以先学一个环境的压缩模型在模型里做梦训练策略。变化的只是算力和数据规模——当视频生成模型足够强做梦的质量终于够用了。这篇文章梳理世界模型的技术脉络它到底在学什么、主流架构怎么选、具身智能里怎么用以及工程落地时容易踩的坑。世界模型到底在学什么一个世界模型要解决的核心问题是给定当前状态 $s_t$ 和动作 $a_t$预测下一个状态 $s_{t1}$ 和奖励 $r_t$。难点在于状态的表示。直接在像素空间做预测比如视频生成模型逐帧生成的好处是信息无损坏处是计算昂贵而且像素级的误差会在多步展开时迅速累积。另一类做法是在潜空间latent space里做预测先用编码器把观测压缩成低维向量动力学模型只在潜空间滚动。Dreamer 系列的 RSSMRecurrent State-Space Model就是这条路线的代表——把确定性部分GRU 隐状态和随机性部分高斯潜变量拆开既保证多步预测稳定又保留了环境的不确定性。规划层则分两派。一派用学到的模型做想象 rollout在想象轨迹上训 actor-criticDreamerV3 的玩法另一派把模型和 MCTS 结合像 MuZero 那样边搜索边规划。前者样本效率高后者决策质量高但更贵。主流架构对比| 方案 | 状态表示 | 规划方式 | 优势 | 短板 | | --- | --- | --- | --- | --- | | DreamerV3 (RSSM) | 潜空间 | 想象 rollout actor-critic | 样本效率高150 任务通用 | 长时程任务仍会漂移 | | MuZero | 隐状态无重建约束 | MCTS 树搜索 | 决策质量顶级 | 训练昂贵难迁移到连续控制 | | Genie / 视频生成式 | 像素/离散 token | 尚未闭环 | 可从无标注视频学动作空间 | 推理慢难做实时规划 | | TD-MPC2 | 潜空间 值函数 | MPC轨迹采样优化 | 连续动作表现强训练稳 | 模型 rollout 长度有限 |一个值得注意的趋势是无重建约束MuZero 和 TD-MPC2 都不强迫模型重建像素只要求预测的值和奖励准确。这让模型把注意力放在对决策有用的信息上背景里的云怎么飘根本无所谓。代码示例极简潜空间世界模型下面是一个基于 PyTorch 的简化版训练骨架展示编码器 潜空间动力学 解码器的核心结构import torch import torch.nn as nn class LatentWorldModel(nn.Module): def __init__(self, obs_dim3*64*64, latent_dim64, act_dim6): super().__init__() self.encoder nn.Sequential( nn.Linear(obs_dim, 256), nn.ELU(), nn.Linear(256, latent_dim), ) # 动力学模型: p(z_{t1} | z_t, a_t) self.dynamics nn.Sequential( nn.Linear(latent_dim act_dim, 256), nn.ELU(), nn.Linear(256, 2 * latent_dim), # 输出均值和 log_std ) self.reward_head nn.Linear(latent_dim, 1) self.decoder nn.Sequential( nn.Linear(latent_dim, 256), nn.ELU(), nn.Linear(256, obs_dim), ) def forward(self, obs, act): z self.encoder(obs) params self.dynamics(torch.cat([z, act], dim-1)) mean, log_std params.chunk(2, dim-1) z_next mean torch.randn_like(mean) * log_std.exp() return { z_next: z_next, reward: self.reward_head(z_next), recon: self.decoder(z), kl: -0.5 * (1 2*log_std - mean.pow(2) - (2*log_std).exp()).sum(-1).mean(), } # 训练目标 重建损失 奖励损失 KL 正则 # loss mse(recon, obs) mse(reward, r_true) 1e-4 * kl实战里动力学模型通常会换成 GRU 随机潜变量的 RSSM 结构多步展开时用 KL balancing 防止后验崩塌。这个骨架够用来理解数据流观测进编码器动力学模型在潜空间滚动解码器只负责提供训练信号。具身智能真正的试金石机器人控制把世界模型的短板暴露得最彻