一句话定位
DreamerV2 是首个在 Atari 55 个游戏中达到人类级别表现的基于世界模型的强化学习算法,核心改进是将连续高斯隐变量替换为离散的 Categorical 分布,显著提升了表征能力。
前置依赖
- DreamerV1 (Hafner et al. 2019): 基于 RSSM 和隐空间想象的策略学习框架
- PlaNet (Hafner et al. 2019): RSSM 架构与 KL Balancing 机制
- SPR (Spinup Priors Representation): 离散表征的重要性先验工作
核心思想
DreamerV2 保留了 DreamerV1 的整体算法框架,核心改进在于将连续高斯隐变量替换为离散的 Categorical 分布。这一改变解决了两个关键问题:
- 多模态表征问题:连续高斯分布难以捕捉环境的多模态特性(如游戏中的多种策略选择)
- 信息压缩问题:离散分布可以更紧凑地表示丰富的语义信息
同时改进了 Actor-Critic 算法的价值目标计算,并引入了更稳定的 KL 权重调度机制。
模型结构图
输入图像 o_t
↓
┌─────────────┐ ┌─────────────────────────┐
│ Encoder │ → │ 离散隐变量 z_t ~ Cat(K) │
└─────────────┘ └─────────────────────────┘
↓
┌───────────────────────────────────────┐
│ RSSM (离散版) │
│ │
│ h_t = f_phi(h_{t-1}, a_{t-1}, z_t) │
│ p_phi(z_t | h_t) = Cat(cat_probs) │
│ q_phi(z_t | h_t, o_t) = Cat(post) │
└───────────────────────────────────────┘
↓
┌─────────────────────────────────────────┐
│ Actor-Critic 网络 │
│ │
│ π_theta(a_t | h_t) │
│ V_psi(h_t) │
└─────────────────────────────────────────┘
关键区别:隐变量从连续高斯变为离散 Categorical
数学推导
1. RSSM with Categorical Latent Variables
状态转移方程(不变):
先验分布(离散 Categorical):
其中
后验分布(推断):
观测重构分布:
2. KL Divergence for Categorical Distributions
对于两个 Categorical 分布
由于 DreamerV2 使用 KL balancing,需要分别计算先验-后验和后验-先验的 KL。
3. KL Balancing (PlaNet 继承)
原始 KL balancing(V1 风格):
DreamerV2 改进版: DreamerV2 将 KL 权重从固定值改为动态调度:
其中
4. Actor-Critic 改进
价值目标计算(改进):
而不是 V1 中的:
优势估计仍使用 GAE-
其中
Critic 损失保持不变:
Actor 梯度(Reparameterization):
由于
5. ELBO 损失函数(离散版)
形式与 V1 相同,但 KL 计算针对 Categorical 分布。
训练细节
离散隐变量设计
- 类别数 K = 32:即每个隐变量有 32 个可能的取值
- 这提供了
(理论上)的组合表征空间 - 实际使用:32 个独立的 Categorical 分布,每个独立采样
KL 权重调度
- 目标 KL:
(相对于后验与先验的 KL 比值) - 动态权重:根据实际 KL 比值调整
- 稳定训练:避免 KL 过大或过小导致的后验崩塌/先验失效
训练流程
-
阶段一:世界模型训练
- 使用收集的观测序列训练 RSSM
- Encoder + Decoder:VAE 重构损失
- Dynamics Prior + Posterior:KL balancing
- 优化器:Adam,lr =
-
阶段二:策略训练
- 在隐空间中展开
步想象轨迹 - 计算折扣回报和价值目标
- 更新 Actor 和 Critic
- 在隐空间中展开
关键超参数
| 参数 | 值 |
|---|---|
| 隐变量类别数 K | 32 |
| GRU hidden dim | 512 |
| imagination_horizon H | 20 |
| KL target | 1e-3 |
| actor_lr | 1e-4 |
| critic_lr | 1e-4 |
| discount γ | 0.99 |
| gae_lambda | 0.95 |
推理 / Rollout / Planning 过程
与 DreamerV1 类似,推理时:
- 观测编码到隐空间
- 使用策略网络输出动作
- 通过 RSSM 转移隐状态
- 无需 Decoder 或 Planning
在线规划能力:DreamerV2 虽然使用离散表征,但推理时仍是前向传递,无需 MPC 式的在线规划。
优点与局限
优点
- 更强的表征能力:离散 Categorical 能捕捉多模态环境
- Atari 基准的人类级表现:首个达到此水平的基于世界模型的方法
- 更稳定的训练:动态 KL 调度减少了训练不稳定性
- 组合表征:32 个独立类别提供了丰富的组合空间
局限
- 仍然依赖 KL balancing:调参仍然敏感
- 离散化的信息损失:某些连续信息难以用离散表征精确表达
- 计算开销增加:Categorical 采样比高斯采样略复杂
与前后内容的衔接
前身:DreamerV1
- 保留了 DreamerV1 的整体框架(RSSM + Actor-Critic + 隐空间想象)
- 核心改变:将连续高斯隐变量替换为 32 类离散 Categorical
- 改进了 KL 调度机制
后继:DreamerV3
- DreamerV3 将统一处理连续和离散动作
- 移除了 KL balancing(改用 Symmetric log loss)
- 引入 LayerNorm 和 skip connections
- 实现了真正的超参数统一(无需针对不同领域调参)
可复现实现要点
离散隐变量采样
# 使用 Gumbel-Softmax 进行可导采样
# during training: use Gumbel-softmax
logits = prior_network(h_t) # (B, K)
q = F.gumbel_softmax(logits, tau=1, hard=True)
# during eval: argmax
z_t = one_hot(F.softmax(logits, dim=-1).argmax(-1), K)关键超参数
| 参数 | 值 |
|---|---|
| K (类别数) | 32 |
| hidden_dim | 512 |
| imagination_horizon H | 20 |
| KL target | 1e-3 |
| actor_lr | 1e-4 |
| critic_lr | 1e-4 |
章节摘要
DreamerV2 在 DreamerV1 基础上进行了两项关键改进:一是将连续高斯隐变量替换为离散的 Categorical 分布(K=32),大幅提升了模型对多模态环境的表征能力,使其成为首个在 Atari 55 个游戏中达到人类级表现的基于世界模型的 RL 算法;二是引入了动态 KL 权重调度机制,使训练更加稳定。DreamerV2 展示了离散表征在世界模型中的巨大潜力,为后续的统一化方法奠定了基础。
关键词
DreamerV2、离散隐变量、Categorical 分布、RSSM、KL Balancing、Gumbel-Softmax、Atari、Actor-Critic、GAE-