包含训练和部署两个阶段,训练阶段RSSM 在被"教",部署阶段,RSSM在实时用
**RSSM(Recurrent State-Space Model)** = 一种在潜空间里同时维护"记忆"和"当前感知"、并能基于它们预测未来的世界模型。
RSSM 训练了:(它包含什么)
动力学模型 + 先验网络 + 后验网络 + 观测模型 + 奖励模型训练的参数:
损失函数:(训练目标是什么)**总损失 = 重建误差(观测模型)
- 奖励误差(奖励模型)
- 单步KL(先验 vs 后验)
- overshooting KL(多步先验 vs 后验) ← 可选但重要**
部署时用的:
- 动力学模型 ✅
- 先验网络 ✅
- 奖励模型 ✅
- 后验网络 ❌(只在训练用)
- 观测模型 ❌(只在训练用)
学完之后,RSSM 就是一个可微的、潜空间里的"物理引擎"。
两个核心状态
| 符号 | 名字 | 性质 | 作用 | 类比 |
|---|---|---|---|---|
| ht | 确定性隐状态 | 确定性,由GRU维护 | 压缩"过去一切"成摘要 | 短期记忆 |
| zt | 随机潜变量 | 随机采样,从分布中采 | 从当前画面提取对决策有用的信息,处理不确定性 | 当前感知 |
每一步更新:
h_t = f(h_{t-1}, z_{t-1}, a_{t-1}) ← GRU,确定性的
z_t ~ p(z_t | h_t) ← 从分布采样,随机的
两个状态的区别
| ht | zt | |
|---|---|---|
| 记不记得过去 | ✅ 记得(GRU传递) | ❌ 不记,只看当前 |
| 确不确定 | 确定(固定输出) | 不确定(有分布) |
| 靠啥算出来 | 历史动作+历史状态 | 当前记忆 ht |
| 缺了会怎样 | 忘了之前发生了啥 | 不知道当前局面细节 |
两者配合 = 既有记忆,又能处理模糊信息。
先验 vs 后验
| 先验 | 后验 | |
|---|---|---|
| 看了当前画面没 | ❌ 没看 | ✅ 看了 |
| 输入 | 只靠记忆 ht | 记忆 + 上一状态 + 上一动作 + 当前画面 |
| 相当于 | 闭眼猜 | 睁眼确认 |
| 什么时候用 | 规划未来、部署、预测时 | 训练时、拿到真实观测时 |
| 准不准 | 大概对 | 更准确 |
训练目标:逼先验接近后验(用KL散度),让"闭眼猜"越来越准。
观测模型 & 奖励模型
观测模型 = 从潜状态反推画面的解码器。
输入:(h_t, z_t) → 输出:一张预测的图像 o_t
它的唯一用途:训练时帮 z_t 学到有用的信息。
有了 (ht,zt) 之后可以解码:
| 模型 | 输入 | 输出 | 用途 |
|---|---|---|---|
| 观测模型 | ht,zt | 预测像素 ot | 训练表征用,部署时不用 |
| 奖励模型 | ht,zt | 预测奖励 rt | 训练和规划都要用 |
部署时不需要生成画面,只需要奖励模型打分。
训练阶段 vs 部署阶段
训练阶段
1. 跟环境交互,收集 (o, a, r) 数据
2. 每一步:
a. 后验:用真实画面 o_t 得到准确的 z_t
b. 先验:只用 h_t 预测 z_t(不看画面)
c. 算 KL 散度:逼先验 ≈ 后验
d. 观测重建:逼 z_t 包含足够画面信息
e. 奖励预测:逼状态对控制有用
3. 反复更新参数
训练时既有后验又有先验,用KL逼它们接近。
部署阶段
1. 拿到当前画面 → 后验得到起点状态 (h_t, z_t)
2. 以这个状态为起点,用先验往前推(CEM规划)
3. 选最优动作序列的第一步执行
4. 环境反馈新画面 → 回到第1步
部署时:当前帧用后验,想未来用先验,全程不生成像素。
RSSM = 记忆(h) + 感知(z) + 闭眼猜(先验) vs 睁眼确认(后验) + 逼它俩一致(KL)