世界模型:RSSM、Dreamer 与规划

世界模型:RSSM、Dreamer 与规划

Charles Lv7

世界模型的核心目标,是让智能体拥有一种“在脑中试错”的能力。
与其每次都在真实环境里撞墙、摔杯子、翻车,不如先学一个潜空间动力学,再在里面做想象、评估和规划。

这条路线是最经典的 WM 主线之一。
如果按训练来源划分,它属于“交互轨迹驱动的 latent dynamics / model-based RL 世界模型路线”:从观测、动作、奖励和终止信号中学习潜状态转移,再用 imagined rollout 服务规划或策略学习。它和 生成式模拟与视频世界模型 中的 LingBot-World 路线不同,后者是先继承视频生成先验,再补动作控制、长记忆和因果交互能力。

如果要看 DreamerV3 的单篇训练细节,包括 prediction / dynamics / representation 三类 world model loss、free bits、uniform mix、symlog 和 imagined actor-critic 更新,可以直接看 DreamerV3 论文专题讲解

如果前面的总览页讲的是“世界模型是什么”,那么这一页讲的是为什么 RSSM 成了经典状态表示,为什么 Dreamer 让世界模型真正和控制连上,以及经典潜空间 WM 和最近 WAM / VAM 路线到底是什么关系。

难点解释:世界模型不是会生成视频就够了

面向决策的世界模型要回答“如果我这样做,接下来会怎样”。它不仅要预测画面,还要保留会影响奖励、风险、终止和动作选择的信息。视觉上合理但对动作不敏感的未来,对规划帮助有限。

有趣例子:游戏存档与脑内演练

玩游戏前先存档,然后尝试不同路线,看哪条会掉血、哪条能拿奖励。世界模型就是把这种“先在脑中试几条路线”学成模型,减少真实环境里的试错成本。

Components of Dreamer

图源:Dream to Control,Figure 3。原论文图意:Dreamer 先从经验数据中把观测和动作编码到 compact latent states 并预测 reward;再在 latent space 中想象 trajectories,训练 action 和 value;最后用真实 episode history 编码当前状态并执行动作。

难点解释:Dreamer 的三步不是三篇独立算法

左边的 learn dynamics from experience 是世界模型训练,中间的 learn behavior in imagination 是把模型当成可微模拟器训练 actor-critic,右边的 act in the environment 是真实执行。核心闭环是:真实经验更新世界模型,世界模型产生 imagined rollout,imagined rollout 更新策略,策略再回到真实环境收集新经验。

1. 统一问题:从观测序列中恢复潜在世界

设环境真实状态为 sts_t,但智能体只能看到观测 xtx_t,执行动作 ata_t,获得奖励 rtr_t
世界模型希望学习

pθ(ztzt1,at1),pθ(xtzt),pθ(rtzt)p_\theta(z_t \mid z_{t-1}, a_{t-1}), \qquad p_\theta(x_t \mid z_t), \qquad p_\theta(r_t \mid z_t)

这里 ztz_t 是潜在状态,不一定和真实物理状态逐维对应,但它应该足够用于重建当前观测、预测未来演化、评估动作后果,并为策略或规划器提供紧凑状态。

可以把它想象成“环境的内部草图”。

1.1 为什么要学潜状态,而不是直接在像素上规划

因为高维观测太贵,也太不稳定。
如果直接在图像或视频上做多步预测和搜索,会很快遇到维度太高、短时细节占用太多建模容量、rollout 误差传播太快,以及决策真正关心的信息被纹理噪声淹没的问题。

潜状态路线的核心信念是

并不需要把世界按像素一比一记住,只需要把会影响未来动作选择的信息保留下来。

2. 为什么需要 RSSM

纯随机状态模型容易缺记忆,纯确定性 RNN 又难表达不确定性。
RSSM 的关键是把状态拆成确定性记忆 hth_t 和随机潜变量 ztz_t 两部分。

常见更新为

ht=fθ(ht1,zt1,at1)h_t = f_\theta(h_{t-1}, z_{t-1}, a_{t-1})

pθ(ztht)p_\theta(z_t \mid h_t)

看到当前观测后,再形成 posterior:

qϕ(ztht,xt)q_\phi(z_t \mid h_t, x_t)

这里的直觉很强:hth_t 负责“历史记忆”,例如车之前是在左转还是右转;ztz_t 负责“当前不确定性”,例如前方遮挡后到底有没有行人。

2.1 一个更完整的生成-推断视角

可以把 RSSM 看成两条链:

先验链

给定历史和动作,预测“接下来可能在什么状态”:

pθ(ztht).p_\theta(z_t \mid h_t).

后验链

在真的看到观测 xtx_t 后,再纠正这个估计:

qϕ(ztht,xt).q_\phi(z_t \mid h_t, x_t).

这很像人类开车时的心理过程:先根据上一秒和自己的动作预期前方会是什么,真看到新画面后,再把这个预期修正一下。

3. 一个生动例子:雾天开车

自动驾驶在雾天看到前方一团模糊白影时,单帧图像不足以判断那是一辆车尾、一块路牌,还是一团雾反光。

这时:

确定性状态 hth_t 会利用过去几帧的运动趋势,随机状态 ztz_t 会保留“前方目标类型”的不确定性。

这正是 RSSM 比单纯图像编码更强的地方。

4. 训练目标:序列 ELBO

通常以变分下界训练世界模型。若略去常数项,一个常见目标为:

Lwm=t=1TEqϕ(ztht,xt)[logpθ(xtht,zt)logpθ(rtht,zt)logpθ(ctht,zt)]+βt=1TDKL(qϕ(ztht,xt)    pθ(ztht))\mathcal{L}_{\text{wm}} = \sum_{t=1}^{T} \mathbb{E}_{q_\phi(z_t \mid h_t, x_t)} \left[ -\log p_\theta(x_t \mid h_t, z_t) -\log p_\theta(r_t \mid h_t, z_t) -\log p_\theta(c_t \mid h_t, z_t) \right] + \beta \sum_{t=1}^{T} D_{\text{KL}}\left( q_\phi(z_t \mid h_t, x_t) \;\|\; p_\theta(z_t \mid h_t) \right)

其中 ctc_t 常表示 continue 或 discount 信号,用于预测 episode 是否终止。

这个式子可以这样理解:重建项要求潜状态保留足够信息,奖励项要求潜状态对决策有用,KL 项要求 posterior 不要偏离 prior 太多,使模型能在没有真实观测时继续 rollout。

4.1 为什么 continue / done 头很重要

很多初学者只盯着观测重建和奖励预测,但 episode 终止或任务失败信号也非常关键。
如果模型不知道“这条 imagined 轨迹其实已经撞墙或任务结束了”,规划器就会在一个错误的未来里继续优化。

Dreamer algorithm 原论文图

图源:Dream to Control,Algorithm 1。原论文图意:Dreamer 交替执行真实环境交互、world model 更新、imagined rollout、actor/value 更新和真实动作执行。

图解:算法框里最重要的是两条数据流

第一条是真实经验流:环境 episode 进入 replay buffer,用来更新 representation、transition、reward 和 continue。第二条是想象经验流:从真实历史编码出的 latent state 出发,在模型里 rollout,再训练 actor/value。Dreamer 的精髓不是某个单独 loss,而是真实数据和 imagined data 之间的交替更新。

5. 为什么 KL 项很关键

如果没有 KL 约束,posterior 可能高度依赖当前观测 xtx_t,变成“只有看见真图才会推理”。
那一旦进入 imagined rollout,没有真实观测可用,模型立刻失效。

KL 项强迫 prior 和 posterior 靠近:

pθ(ztht)qϕ(ztht,xt)p_\theta(z_t \mid h_t) \approx q_\phi(z_t \mid h_t, x_t)

这样做的结果是:即使没有真实图像,模型也能凭过去状态和动作在潜空间里继续往前推。

5.1 KL 太强和太弱都会出问题

太弱

posterior 依赖真实观测太重,imagined rollout 失真。

太强

模型会为了满足 prior/posterior 一致性而牺牲表达能力,导致潜状态信息量不足。

这也是很多实现里要调 KL 权重、free bits、KL balancing 和 latent 类型。

6. 离散 latent 与连续 latent

RSSM 经典上既可以用连续 latent,也可以用离散 latent。

6.1 连续 latent

优点是数学上更自然,便于高斯 prior / posterior,优化相对平滑;风险是多模态未来有时表达不够尖锐,容易学到“平均化”状态。

6.2 离散 latent

优点是更适合表示多模态分支,在一些任务上 imagined rollout 更清晰,也更容易和 token 化方法对接;风险是训练技巧更多,量化、采样和梯度近似更复杂。

7. Dreamer:在潜空间里学策略

世界模型学好后,Dreamer 不在真实环境中大规模采样,而是在潜空间里“想象未来”。

给定当前潜状态 ztz_t,策略产生动作:

atπψ(atht,zt)a_t \sim \pi_\psi(a_t \mid h_t, z_t)

然后世界模型推进

ht+1,zt+1pθ(ht+1,zt+1ht,zt,at)h_{t+1}, z_{t+1} \sim p_\theta(h_{t+1}, z_{t+1} \mid h_t, z_t, a_t)

累计 imagined reward:

J(ψ)=E[k=0H1γkrt+k]J(\psi)=\mathbb{E}\left[\sum_{k=0}^{H-1}\gamma^k r_{t+k}\right]

并据此更新策略和价值函数。

一个直观比喻

这很像围棋选手先在脑中推演几手,而不是每次都真的把棋子落下。
不同的是,Dreamer 的“脑内棋盘”不是手工规则,而是神经网络学出来的潜空间动力学。

8. Actor-Critic 在潜空间里怎么做

Dreamer 通常同时学习价值函数:

Vη(ht,zt)V_\eta(h_t, z_t)

并用 imagined trajectory 估计回报,例如 λ\lambda-return:

Vtλ=rt+γ((1λ)Vη(st+1)+λVt+1λ)V_t^\lambda = r_t + \gamma\left((1-\lambda)V_\eta(s_{t+1}) + \lambda V_{t+1}^\lambda\right)

这里为了简化记号,可把 sts_t 理解为潜状态对 (ht,zt)(h_t,z_t) 的组合表示。

策略优化目标大致为

maxψEπψ,pθ[Vtλ]\max_\psi \mathbb{E}_{\pi_\psi, p_\theta}\left[V_t^\lambda\right]

这带来两个现实收益:与真实环境交互更省样本,也可以在同一个 learned model 上尝试不同策略。

8.1 Dreamer 真正回答了什么

它回答的不是“世界模型能不能预测未来”,而是:

这个未来预测能不能被直接拿来更新策略。

这正是世界模型和普通生成模型路线的关键分界点。

9. 例子:仓储机器人拐弯避箱

机器人要从货架间穿行,当前前方两米处有一个临时放置的纸箱。
若没有世界模型,它可能必须真的试着左右偏一下,看看会不会擦碰。
有世界模型后,它可以在潜空间里先预测直行会不会撞上、向左是否会卡在转角、向右是否会占用来车通道。

然后再选择最优动作。

10. 规划与策略并不相同

世界模型有两种主要用法

10.1 学策略

让策略网络直接在 imagined rollout 上优化。
优点是推理快,像端到端控制器。

10.2 做在线规划

给定当前潜状态,显式搜索未来动作序列:

at:t+H1=argmaxat:t+H1E[k=0H1γkrt+k]a_{t:t+H-1}^\star = \arg\max_{a_{t:t+H-1}} \mathbb{E}\left[\sum_{k=0}^{H-1}\gamma^k r_{t+k}\right]

这更像 MPC
优点是适应新场景更灵活,缺点是在线优化慢。

一个例子:无人机穿门

如果环境每次都不同,只训练固定策略可能不够。这时更合理的是让世界模型先预测不同动作序列的未来轨迹,规划器选出最有希望穿过门框且不撞边缘的动作,只执行前一小段后再重新规划。

11. Dreamer、WAM、VAM 的关系

这条经典路线是最典型的 WM
它的结构通常是 world model 学潜状态,policy 在潜状态上学,动作生成和世界预测仍然分层。

而最近的 WAM / VAM 路线开始尝试打破这条分层:

  • WAM 更倾向于把动作和未来世界一起建模;
  • VAM 更倾向于把视频先验和动作建模绑得更紧。

11.1 为什么经典 Dreamer 仍然重要

因为它给出了最干净的一条基线:world model 是什么,imagined rollout 怎么用,world 和 policy 怎样解耦。

没有这条基线,后面的统一模型很容易显得只是“更大更复杂”,而很难判断它到底多解决了什么问题。

12. RSSM / Dreamer 最怕什么

12.1 视觉上像,动力学上错

一个视频预测模型可能生成得很逼真,但物理规律错了。
例如杯子被推一下后,视频看着很像真视频,但杯子的位移速度和摩擦关系完全不对。

对控制来说,这是致命问题。
世界模型不是做“好看视频”,而是做“决策可用模拟”。

12.2 长时滚动误差累积

如果单步误差为 ϵ\epsilon,多步 rollout 后误差常会快速放大:

z^t+kzt+k with k\|\hat{z}_{t+k} - z_{t+k}\| \uparrow \text{ with } k

因此很多世界模型在 520 步内很有用,再长就开始漂。

12.3 奖励预测不准

有时观测重建很好,但奖励模型很差。
例如机器人在桌面上移动积木,世界模型看起来能重建积木位置,却无法准确判断“是否已经对齐目标区域”。
这会导致策略优化方向错掉。

12.4 分布外动作

训练数据里从没出现过“高速急转弯”,但规划器在潜空间搜索时可能提出这种动作。
这时世界模型的预测常不可信。

13. 三个具体应用场景

13.1 游戏智能体

这是最经典场景。
游戏像素输入高维,但规则相对稳定,很适合先学潜空间,再在潜空间里想象未来。

13.2 自动驾驶

世界模型可用于预测周围车辆未来轨迹、模拟不同驾驶决策的结果、评估潜在风险。

但这里对罕见事件和安全边界要求极高,因此不能只依赖“平均意义上的预测对”。

13.3 机器人操作

世界模型可以帮助判断夹爪是否即将碰撞杯沿、拉抽屉时是否会卡住、推箱后是否会挡住下一步抓取路径。

14. 一个实用判断框架

如果你在看一篇 RSSM / Dreamer 风格论文,最值得追问的是:潜状态到底保留了什么,imagined rollout 能稳定多长,奖励和终止信号是否真的可读,world model 对策略到底提供了什么增益,以及这种增益来自更好的世界预测,还是只是更强的策略训练技巧。

15. 小结

RSSM 提供了经典世界模型的状态骨架:记忆加不确定性。
Dreamer 则把这套骨架真正用于控制:先在潜空间里想象,再用想象轨迹优化策略。
它们共同构成了最经典的 WM 主线,也是理解后续 WAM / VAM 路线时最重要的参照系。

快速代码示例

1
2
3
4
5
6
7
8
9
10
def dreamer_actor_update(world_model, actor, z, h, horizon=15):
# 在 imagined rollout 上优化策略(示意)
traj = []
for _ in range(horizon):
a = actor(z, h)
z, h = world_model.prior_step(z, h, a)
r = world_model.reward_head(z, h)
traj.append(r)
loss = -sum(traj) / len(traj) # maximize imagined return
return loss

这段代码抽象了 Dreamer 的 actor 更新思路:不在真实环境里采样,而是在世界模型的隐空间 rollout 上估计长期回报并优化策略。好处是样本效率高,但前提是动力学与奖励头的偏差要可控。

工程收束

RSSM / Dreamer 的价值不只在重建画面,而在 belief state、latent rollout、planner 接口、reward readout 和不确定性是否能共同支撑规划。验收时要拆分表征、动力学和规划评测,保留反事实测试,让不确定性进入回退逻辑;世界模型一旦被策略使用,视频质量就不能替代闭环效果。

  • Title: 世界模型:RSSM、Dreamer 与规划
  • Author: Charles
  • Created at : 2026-05-07 09:00:00
  • Updated at : 2026-05-07 09:00:00
  • Link: https://charles2530.github.io/2026/05/07/ai-files-world-models-rssm-dreamer-and-planning/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments