课程首页· 术语表· 第 2 课 / 共 5 课

Lesson 02 · 发动机

世界模型(RSSM):把一栋楼"压缩"进潜在状态

第 1 课说 DreamerV3 "先学一个世界模型"。这一课拆开它——到底学的是什么。

第 1 课把 DreamerV3 的核心概括成"先学规则,再在脑中下棋"。这一课讲的就是那个"规则"——世界模型。它的学名叫 RSSM(Recurrent State-Space Model,循环状态空间模型)。方案 [§6.2.4] 那张"DreamerV3 组件 → HVAC 对应"的映射表,左边四行全是它。看懂 RSSM,你就拿到了读懂整篇方案的钥匙。

世界模型到底"学"什么

一句话:学一个函数,能在脑中预测"楼"的下一步。给它当前的楼状态 + 你要做的控制动作,它告诉你下一刻楼会变成什么样、会耗多少能。

真实的楼(或 EnergyPlus 仿真)每次都算很慢:
    室温 25°C ──把冷机调到 60%──▶ [物理引擎算半天] ──▶ 室温 24.3°C,耗电 8kW

世界模型学到的,是一个"快得多"的替身:
    室温 25°C ──把冷机调到 60%──▶ [世界模型一眨眼] ──▶ 室温 24.3°C,耗电 8kW(预测值)

注意:世界模型不需要知道物理方程(这是它和白箱 MPC 的本质区别)。它是纯数据驱动的——从我们收集的真实/仿真数据里,直接学出"状态怎么演化"。这正是调研报告 [§3.3.3] 说的"不需要白箱物理方程,适合 SaaS 平台快速复制到不同建筑"。

RSSM:四个零件

但"学一个预测函数"有工程难点:HVAC 状态是一大堆数(几十个传感器读数),直接在这些原始数字上建模又慢又难。DreamerV3 的办法是先把它"压缩"成一个紧凑的潜在状态,再在潜在状态上做预测。这套机制就是 RSSM,它有四个零件:

                          ┌─────────────────────────────────┐
   传感器观测 o_t          │          RSSM 世界模型            │
   (室温/水温/CO₂/...)  ──▶│                                   │
                          │   ① 编码器  o_t ──▶ 潜在状态 s_t  │
                          │                  (几十维,紧凑)     │
                          │            ┌──────────┴──────────┐ │
                          │            ▼                     ▼ │
                          │   ② 转移模型(先验)      ③ 解码器    │
                          │   "给 s_t 和动作 a_t,    从 s_t     │
                          │    下一状态 s_{t+1}"     还原回 o_t  │
                          │            │                     │ │
                          │            ▼                       │
                          │   潜在状态 s_{t+1}                  │
                          │            │                        │
                          │            ▼                        │
                          │   ④ 奖励头:从 s_t 预测奖励 r_t      │
                          └─────────────────────────────────┘
RSSM 四个零件 + HVAC 里的含义(对照方案 [§6.2.4])
零件学名干嘛的HVAC 含义
① 编码器 Encoder 把一堆传感器读数压缩成几十维的潜在状态 把室温/水温/CO₂/室外温…… 压成一个紧凑向量
② 转移模型 Transition / 先验 预测:给当前状态 + 动作,下一步状态是什么 建筑热动力学(室温怎么随控制变化)
③ 解码器 Decoder 从潜在状态还原回原始观测(自监督约束) 确保压缩没丢物理信息
④ 奖励头 Reward head 从状态预测奖励(能耗 + 舒适度) 预测这步会耗多少电、舒不舒适

为什么要有"编码 + 解码"这一进一出

这是新人最容易卡的一点:既然目标是预测下一步,为什么要先把观测压成潜在状态、又费劲地还原回去?

直觉

压缩是为了抓住"要点",过滤掉噪声

原始传感器读数里有大量冗余(同一房间的两个温度计读数几乎一样、室外温和湿度高度相关)。编码器把它们压成一个紧凑的潜在状态,相当于"提炼要点"。在要点上做预测,比在一堆噪声数字上做预测,又快又准。

解码器(把潜在状态还原回原始观测)是一个"考试"——它逼着编码器不能偷懒:如果你压缩出来的潜在状态还原不出原始读数,说明你把信息丢了,得回炉重炼。这一进一出是个自监督约束,保证潜在状态"信息够用"。

"先验"和"后验":做梦时和醒来时

RSSM 里"转移模型"常被叫成先验,它还有一个搭档叫后验。这一对名字看着吓人,其实是两个使用时机:

先验(transition)后验(posterior)
什么时候用 做梦时(想象未来,没有新观测) 醒来时(真有新传感器读数进来)
凭谁预测下一状态 只凭当前状态 + 动作 凭当前状态 + 动作 + 新观测(用观测修正)
HVAC 类比 "我猜开大冷机后室温会降 0.7°C" "温度计说实际降了 0.8°C,那我修正一下对楼的理解"

关键认识:想象 rollout(第 3 课)时没有新观测,所以只能用先验一步步往前推;真实交互时每步都有新读数,所以用后验来"对齐现实"。训练时让两者尽量一致(KL 散度约束),这样模型"做梦"和"现实"才不会脱节——这正是后面安全门控要监控"预测误差"的原因(方案 [§4.3])。

训练它需要什么数据

世界模型是从数据里学出来的,所以方案 §3 花了整章讲数据采集。对 RSSM,它需要的就是最朴素的转移数据——一段段时间序列:

从 TimescaleDB 抽出的、按时间排好的状态序列(方案 §2.4):

  时刻 t:   室温25  水温7  CO₂600  室外32  ──动作: 冷机60%──▶
  时刻 t+1: 室温24.3 水温6.8 CO₂580 室外32  ──动作: 冷机65%──▶
  时刻 t+2: 室温23.5 水温6.6 CO₂560 室外31  ──动作: ...   ──▶
  ...

  RSSM 从这种序列里学会:"给我 (状态, 动作),下一步状态大概是啥"

方案把它存成 HDF5 格式([§2.4.3]),因为 DreamerV3 的数据加载器原生吃这个格式。这也是方案 §6 阶段 1 要花 6 周搞数据 ETL + 质量处理的原因——世界模型再聪明,数据脏了它就学歪(方案风险 T3)。

这一课的小收获

DreamerV3 的"世界模型"学名叫 RSSM,它把一栋楼压缩成紧凑的潜在状态,再学会"给状态+动作,预测下一步状态 + 奖励"。它有四个零件:编码器(压缩)、转移模型/先验(做梦时预测)、解码器(还原,约束不丢信息)、奖励头(预测能耗舒适度)。它纯数据驱动、不靠物理方程,所以能从 TimescaleDB 的历史时序数据里直接学出来。

自测一下

RSSM 里"解码器"(把潜在状态还原回原始观测)的主要作用是?

卡住了就问我:"先验/后验"如果让你绕晕,正常——它俩的差别只在"有没有新观测"。可以问我"训练时到底是先用哪个、再用哪个",我会用第 3 课的想象 rollout 流程把这条线串给你。

参考来源 DreamerV3 论文(arXiv:2301.04104)—— RSSM 章节 · 调研报告 §3.3.2(RSSM 架构图)/ §6.2.4(HVAC 映射) · 方案文档 §2.4(数据)/ §6 阶段1