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

Lesson 03 · 做梦

想象 rollout + Actor-Critic:为什么"做梦"能学到策略

世界模型只是"规则"。这一课讲 DreamerV3 怎么靠规则在脑中下无数盘棋、练出策略。

第 2 课的 RSSM 学会了"楼的热动力学"。但学会规则只是第一步——就像你背会了象棋规则,不等于会下棋。这一课讲 DreamerV3 的真正妙处:它用世界模型在脑中"做梦",在梦里下成千上万盘棋来练策略,几乎不碰真实的 EnergyPlus。这就是它比 PPO/SAC 省样本的根本原因,也是方案超参表里那个 imag_horizon(想象步数)在控制的东西。

核心机制:想象 rollout(在脑中前推 N 步)

想象 rollout(imagination rollout)就是让世界模型不碰真环境、纯靠想象往前推演。逻辑极简:

手里有一个起点状态 s_t(来自真实经验)。然后纯靠世界模型推演:

  s_t ──动作a_t──▶[世界模型]──▶ s_{t+1}, r_{t+1}   ← 第 1 步,纯想象
       ──动作a_{t+1}──▶[世界模型]──▶ s_{t+2}, r_{t+2}  ← 第 2 步
       ──动作a_{t+2}──▶[世界模型]──▶ s_{t+3}, r_{t+3}  ← 第 3 步
       ── ...... ──▶  s_{t+N}, r_{t+N}            ← 推 N 步

  这条 s_t → s_{t+1} → ... → s_{t+N} 就是"一条想象轨迹"。
  N 就是方案超参表里的 imag_horizon(HVAC 推荐值 20)。

为什么这能省样本

对比一下就懂了。这里的关键是:想象轨迹几乎不要钱——它只是神经网络做几次前向计算,而真实走一步要让 EnergyPlus 算半天热平衡。

无模型 RL vs DreamerV3:训练时数据从哪来
无模型 RL(PPO/SAC)DreamerV3
策略从哪学 真实环境里的每一步经验 想象轨迹里的大量经验
一条训练数据成本 贵:= 一次 EnergyPlus 仿真步 便宜:= 一次神经网络前向
需要的真实步数 几百万步 少得多(DreamerV3 的核心卖点)

打个比方:PPO/SAC 是"每学一个教训都得真去撞一次墙",DreamerV3 是"真撞过几次墙之后,在脑子里模拟撞一万次墙来总结教训"。HVAC 仿真一步很慢(方案风险 T6),所以这个差距对我们是能不能训得动的生死线。

在想象轨迹上训练策略:Actor-Critic

有了大量想象轨迹,接下来就是在上面"练棋"。DreamerV3 用的是 Actor-Critic(演员-评论家),两个角色分工明确:

两个角色

演员出招,评论家打分

Actor(演员 = 策略):给一个状态,输出控制动作(冷机功率、水泵频率……)。它就是我们要最终部署的那个"大脑"。

Critic(评论家 = 价值函数):给一个状态,估"从这个状态出发,按当前策略走,未来累计能拿多少奖励"。它不输出动作,只给 Actor 打分、指方向。

训练时,Actor 试着在想象轨迹上出招,Critic 评价"这步走得好不好",Actor 据此调整。整个过程都在世界模型里,不碰真环境。

对应到方案 [§6.2.4] 的映射表:Actor = 控制策略(输出冷机功率/水泵频率/AHU 风量)Critic = 价值评估(估当前策略的长期累积奖励)。第 5 课你会看到,推理时只用到 Actor——Critic 是训练时的"陪练",部署后不需要它。

把三步串起来:DreamerV3 的完整训练循环

  ┌─── ① 少量真实交互(在 EnergyPlus 里)────────────────┐
  │     智能体走几步,收集 (状态,动作,奖励,下状态) 存进回放缓冲 │
  └──────────────────────────┬─────────────────────────────┘
                             ▼
  ┌─── ② 训练世界模型(RSSM)──────────────────────────────┐
  │     用回放缓冲里的数据,更新 ②③④(编码/转移/解码/奖励头)    │
  │     (第 2 课)                                            │
  └──────────────────────────┬─────────────────────────────┘
                             ▼
  ┌─── ③ 想象 rollout + Actor-Critic(本课)───────────────┐
  │     用刚训好的世界模型,从真实状态出发想象 N 步轨迹          │
  │     在想象轨迹上训练 Actor(策略)和 Critic(价值)         │
  │     (几乎不碰真环境 ← 省样本的秘密)                       │
  └──────────────────────────┬─────────────────────────────┘
                             ▼
                    Actor 进步了一点 ──▶ 回到 ① 用更好的策略再走几步
                    (如此循环,直到收敛)

这三步循环,对应方案代码骨架里 dreamer.py 训练循环的主体([§2.1.4])。看懂这个循环,你就看懂了 DreamerV3 的全部"精神"——剩下都是工程细节。

方案超参表里的 imag_horizon,到底在控什么

方案 [§2.1.5] 把 imag_horizon 从默认 15 调成 HVAC 推荐 20。现在你能看懂这个改动了:

imag_horizon含义影响
太小(如 5) 每次只想象 5 步未来 短视:学不到"现在多制冷压住 2 小时后峰值"这类前瞻策略
方案选 20 每次想象 20 步未来 够覆盖 HVAC 的热惯性周期(方案说"热惯性大,延长想象步数")
太大(如 100) 每次想象 100 步未来 世界模型越往后推越不准(误差累积),想象轨迹尾部是噪声

这是一个典型权衡:想象步数 = 能前瞻多远 vs 模型预测有多准。HVAC 热惯性大,需要看得远一点,所以从 15 提到 20;但也不能太长,否则后半段想象就是瞎猜。同理,方案把 discount 从 0.997 微调到 0.99("更关注近期奖励,能耗即时性")——也是为了匹配 HVAC"即时能耗重要"的特点。

这一课的小收获

DreamerV3 用世界模型在脑中想象 rollout(前推 N 步,纯靠先验、不碰真环境),在想象轨迹上用 Actor-Critic 训练策略(Actor 出招、Critic 打分)。因为想象轨迹几乎不要钱,所以真实环境只要走很少几步——这是它省样本、能配 HVAC 慢仿真的根本原因。imag_horizon 控的是"前瞻多远",方案为 HVAC 的热惯性调到 20。

自测一下

DreamerV3 训练 Actor-Critic 时,那些训练数据(想象轨迹)主要来自?

卡住了就问我:"想象 rollout 越往后越不准"如果让你疑惑,可以问我"那世界模型为什么不训练得更准",我会解释这是模型容量与误差累积的固有问题——也是方案 §4 安全门控存在的根本理由(用真实约束兜底模型的预测偏差)。

参考来源 DreamerV3 论文(arXiv:2301.04104)—— Imagination / Actor-Critic 章节 · 调研报告 §6.2.4(Actor/Critic/想象 rollout 映射) · 方案文档 §2.1.4 / §2.1.5(超参表)