理解世界与预测未来
一句话定位
问题:智能体如何通过观测数据理解世界的底层结构,并预测动作与状态变化之间的因果关系?
定位:第一章第二节,承接”世界模型的定义”,深入探讨”理解”与”预测”的协同关系,构成世界模型的核心理论支柱。
前置依赖
- 1-世界模型的定义:世界模型的基本架构(Encoder、Transition、Decoder、Reward)
- 1-观测压缩与状态抽象:理解从像素到状态的降维原理
- 2-隐状态与潜空间:隐状态的后验推断与变分方法
核心思想
理解世界不是简单地记住观测序列,而是发现观测背后的因果结构——什么导致什么,什么动作会产生什么结果。
预测未来不是盲目外推,而是基于已学到的世界模型进行因果推理——给定当前状态与动作,推理出最可能的后续状态与奖励。
两者的结合使得智能体能够:
- 在采取行动之前”想象”多种可能的结果
- 选择导致最大长期奖励的动作序列
- 在物理约束不允许试错的场景中安全地学习
这一思想与人类认知科学中的”心理模拟(mental simulation)“高度一致:我们并不总是需要实际尝试才能知道结果——我们可以”想”出结果。
模型结构图
理解-预测闭环系统
=================
┌─────────────────────────────────────────┐
│ 世界模型(World Model) │
│ │
┌───────┐ │ ┌─────────────┐ ┌───────────────┐ │
│ 观测 │────────▶│ │ Encoder │───▶│ 隐状态 s_t │ │
│ o_t │ │ │ q_φ(o→s) │ │ │ │
└───────┘ │ └─────────────┘ │ │ │
│ │ ┌─────────▼──┴───┐
│ │ │ Transition │
│ │ │ p(s'|s,a) │
│ │ └────────▲───────┘
│ │ │
│ │ ┌────────┴───────┐
│ └───▶│ Reward │
│ │ p(r|s,a) │
│ └────────┬───────┘
│ │
└────────────────────────────────┘
│
▼
┌────────────────────────────────┐
│ 策略网络 (Policy π) │
│ │
│ s_t ──────────▶ π(a_t|s_t) │
│ │
│ 策略输出动作 a_t │
└────────────────┬───────────────┘
│
▼
┌─────────────┐
│ 环境交互 │
│ 获得观测 │
└─────────────┘
Dreamer 的想象 rollout 架构
Dreamer Imagination Rollout
============================
真实观测 o_t
│
▼ encoder
隐状态 s_t
│
├──────────────────────────────────────────┐
│ 想象 horizon H 步: │
│ │
│ for k in range(H): │
│ a_k = policy(s_k) ← 梯度反传到策略 │
│ s_{k+1} = transition(s_k, a_k) │
│ r_k = reward(s_k, a_k) │
│ │
│ 累积奖励 R = Σ_{k=0}^{H} γ^k r_k │
│ 用 R 更新策略网络(GAE/REINFORCE) │
└──────────────────────────────────────────┘
│
▼
策略更新后,真实交互时选择动作 a_t
数学推导
1. 理解世界的数学本质
理解 = 发现将观测序列映射到低维状态的不变规律。
给定观测序列
这两个条件概率的物理含义:
:动作驱动的状态转移——给定当前状态与动作,预测下一状态 :状态的观测重构——给定状态,还原可观测的感知信息
理解的证据(Evidence):
最大化 evidence 等价于找到最优的
2. 预测未来的数学框架
预测 = 在隐状态空间中展开(rollout)未来轨迹。
给定当前状态
H步想象轨迹的联合概率:
预测奖励:
3. 价值函数与策略梯度
在想象空间中定义的价值函数:
其中
Dreamer 使用 learned critic
其中
策略梯度(使用传播的 critic):
其中
4. 模型预测控制(MPC)与规划
MPC 在每个时间步执行以下优化:
在隐空间中,MPC 的计算比在像素空间高效得多,因为:
- 隐状态维度
像素维度 - 转移模型
是确定性的(高斯分布均值)或单次前向传播
5. ELBO 与理解-预测的关系
回顾 ELBO:
- **第一项(重构)**衡量”理解”:隐状态
是否保留了重建观测所需的信息 - **第二项(KL)**衡量”预测一致性”:编码器推断的后验
与转移模型的预测先验 是否一致
这两个目标共同驱动世界模型学习既紧凑又可预测的隐状态空间。
训练细节
数据构造
理解-预测的训练数据来源于环境交互轨迹:
或等价的观测序列:
训练数据的采样策略:
- 在线采样(Online):智能体实时与环境交互,收集新轨迹
- 离线批量(Offline):从预先收集的数据集中采样
- 优先回放(Prioritized Replay):优先采样”高误差”状态(转移预测与实际不符)
输入输出(IO)
| 模块 | 输入 | 输出 | 维度 |
|---|---|---|---|
| Encoder | |||
| Transition | |||
| Reward | |||
| Policy | |||
| Critic |
损失计算
世界模型损失:
策略损失:
Critic损失:
优化器配置
- 世界模型优化器:Adam,lr=
,梯度裁剪 - 策略优化器:Adam,lr=
,或使用 Trust Region Policy Optimization (TRPO) - Critic优化器:Adam,lr=
,target network 更新 - 批次大小:64-256,序列长度
到
训练流程(Dreamer 算法)
# Dreamer 训练循环
for step in range(N_steps):
# 1. 收集轨迹数据(真实交互)
for t in range(T_env):
a_t = policy(s_t) # s_t from encoder
o_t, r_t = env.step(a_t)
s_t = encoder(o_t)
buffer.append((s_t, a_t, r_t))
# 2. 世界模型训练(从 buffer 采样)
for _ in range(N_wm_updates):
batch = buffer.sample()
s_t = encoder(o_t) # or use stored states
# 状态转移
s_next = transition(s_t, a_t)
# 重构 + 奖励 + KL
loss_wm = L_recon + L_reward + β * L_kl
optimizer_wm.step()
# 3. 策略训练(imagination rollout)
s_0 = buffer.sample_last_states(batch_size)
for k in range(H): # imagination horizon
a_k = policy(s_k) # 梯度传到策略
s_{k+1} = transition(s_k, a_k) # 纯前向,无梯度到世界模型
r_k = reward(s_k, a_k)
# 累积回报,反传更新策略
optimizer_policy.step()模块训练顺序
- World Model (Encoder + Transition + Decoder + Reward):优先训练,确保隐空间有意义
- Critic (Value Network):在世界模型收敛后训练 critic
- Policy:最后训练策略,使用 imagination rollout 的回报更新
推理/Rollout/规划过程
Imagination Rollout(想象 rollout)
Dreamer 的核心创新在于:在隐空间中而非真实环境中进行长期规划。
# Imagination Rollout 详细过程
def imagine_rollout(s_0, policy, world_model, H, gamma):
"""
s_0: 初始隐状态(来自encoder)
policy: 策略网络
world_model: 转移模型 + 奖励模型
H: 想象步数
gamma: 折扣因子
"""
s = s_0
rewards = []
for k in range(H):
# 策略根据当前隐状态选择动作
a = policy(s) # a ~ π(·|s)
# 世界模型预测下一状态(无噪声/确定性)
# 使用先验 p(s'|s,a) 而非后验 q(s'|o)
s_next = world_model.transition(s, a)
# 世界模型预测奖励
r = world_model.reward(s, a)
rewards.append(r)
s = s_next
# 计算折扣回报
returns = discounted_sum(rewards, gamma)
return returns, states, actions
规划与控制
MPC(模型预测控制) 的隐空间版本:
# 隐空间 MPC
def mpc_plan(s_0, world_model, policy, H=15, n_sAMPLES=1000):
best_return = -inf
best_action = None
for _ in range(n_sAMPLES):
# 采样动作序列(可以用CEM优化)
actions = sample_action_sequence()
# 在隐空间中 rollout
s = s_0
total_return = 0
for t in range(H):
a = actions[t]
s_next = world_model.transition(s, a)
r = world_model.reward(s, a)
total_return += gamma**t * r
s = s_next
if total_return > best_return:
best_return = total_return
best_action = actions[0] # 只执行第一个动作
return best_actionTrain/Inference 一致性
训练与推理的关键差异:
| 阶段 | 状态来源 | 分布 |
|---|---|---|
| 训练 | Encoder: | 真实观测后验 |
| 推理 | 想象: | 转移先验 |
一致性机制:
ELBO 中的 KL 正则项
- 真实观测编码产生的
与转移预测产生的 具有相同的分布特性 - 策略在真实状态上学到的行为,在想象 rollout 中依然有效
优点与局限
优点
- sample efficiency:imagination rollout 允许策略在不接触真实环境的情况下学习,大幅减少环境交互次数
- 安全探索:在隐空间中试错不会造成物理损害,适用于机器人、医疗等安全关键场景
- 长时 horizon:像素级规划无法处理的长序列决策,在隐空间变得可行
- 因果理解:通过学习
,模型捕获了动作与状态变化的因果关系,而非表面的相关性 - 多任务迁移:隐状态表示对视觉变化鲁棒,同一世界模型可用于不同任务
失败模式
- 模型误差累积:想象 rollout 中每一步的预测误差会被放大,最终偏离真实轨迹
- 缓解:使用 short imagination horizon(如 H=15),或 KL 正则约束先验-后验差距
- 奖励模型过拟合:奖励预测
可能学习到虚假的”奖励 hacking”模式 - 复合误差:状态转移误差 × 奖励预测误差 × 策略误差,三者叠加导致策略失效
- 分布外(OOD):当智能体进入从未见过的状态区域时,世界模型失效
- 随机性建模不足:真实环境中的随机性(stochasticity)难以被确定性模型完全捕获
训练瓶颈
- 梯度传播:imagination horizon 较长时,策略梯度方差大,收敛慢
- 缓解:使用 GAE(Generalized Advantage Estimation)降低方差
- 世界模型与策略的耦合训练:两者相互影响,可能陷入局部最优
- 缓解:使用 iterative RL(DreamerV3 的 EMA 更新)
- 隐空间坍缩:
退化为先验 ,失去表示能力- 缓解:使用 KL 权重调度(前期小,后期大)
与前后内容的衔接
继承自
- 1-世界模型的定义:世界模型的基础架构(编码器、转移、奖励、重构)
- 变分推断与 ELBO 理论:理解与预测的数学统一框架
- 强化学习基础:MDP、价值函数、策略梯度的理论
解决
- 像素级 RL 的维度灾难:通过隐状态压缩使长期规划成为可能
- sample inefficiency:imagination rollout 大幅减少真实交互需求
- 探索-利用的矛盾:在隐空间中安全探索,不冒物理风险
引向
- 1-观测压缩与状态抽象:更深入的观测压缩方法
- 1-MPC与CEM:基于世界模型的规划算法详解
- 1-Dreamer:Dreamer 算法的完整实现与训练细节
可复现实现要点
最小模块
# 实现"理解-预测"闭环的最小模块
class WorldModel:
def __init__(self):
self.encoder = CNN(input_dim=3, latent_dim=32) # 观测→隐状态
self.transition = MLP(latent_dim+action_dim, hidden=256, output=latent_dim)
self.reward = MLP(latent_dim+action_dim, hidden=128, output=1)
self.decoder = CNNDecoder(latent_dim, output_dim=3) # 重构(可选)
class Policy:
def __init__(self):
self.actor = MLP(latent_dim, hidden=256, output=action_dim)
class ImaginaryRollout:
def __init__(self, world_model, policy):
# 在隐空间中想象H步
pass
def compute_returns(self, s_0):
s = s_0
for k in range(H):
a = self.policy(s)
s = self.world_model.transition(s, a)
r = self.world_model.reward(s, a)
return cumulative_return常见bug
- imagination 中使用后验而非先验:推理时应使用
而非 ,否则无法进行真正的”想象” - 梯度泄漏:imagination rollout 中不小心反向传播到世界模型,导致策略过度依赖模型误差
- 价值函数过度估计:critic 未充分训练时,策略会利用价值函数的误差
- 折扣因子设置:
太小导致短视, 太大导致训练不稳定(通常 ) - 动作空间离散化:连续动作空间需要正确归一化到
章节摘要
- 理解世界的本质是发现将高维观测映射到低维状态的不变因果规律,即学习
与 。 - 预测未来是在隐状态空间中通过想象 rollout 展开未来轨迹,计算累积奖励以指导策略优化。
- ELBO统一了理解(重构项)与预测(KL正则项)的目标,确保隐状态既紧凑又可预测。
- Dreamer的核心创新是在隐空间中做想象 rollout,策略可以在不接触真实环境的情况下学习。
- 价值函数
在隐状态空间定义,通过 TD-learning 从想象轨迹中学习。 - 策略梯度通过反传 critic 的优势估计,实现端到端的策略优化。
- 训练-推理一致性由 KL 正则项保证,确保真实状态与想象状态具有相似的分布特性。
- 复合误差累积(转移误差 × 奖励误差 × 策略误差)是世界模型规划的主要失败模式,需要通过短 horizon 和 KL 约束缓解。
- 因果结构而非表面相关性是理解世界的关键,这要求模型捕获动作与状态变化的真实因果依赖。
- 世界模型的sample efficiency来源于 imagination rollout,使得策略可以在”梦境”中学习,无需真实交互。
关键词
理解世界、预测未来、因果结构、状态转移、想象 rollout、模型预测控制、策略梯度、价值函数、ELBO、KL 正则、sample efficiency、奖励预测、世界模型规划、隐空间推理、转移先验、后验推断、Dreamer、折扣因子、优势估计、TD-learning