理解世界与预测未来

一句话定位

问题:智能体如何通过观测数据理解世界的底层结构,并预测动作与状态变化之间的因果关系?

定位:第一章第二节,承接”世界模型的定义”,深入探讨”理解”与”预测”的协同关系,构成世界模型的核心理论支柱。


前置依赖


核心思想

理解世界不是简单地记住观测序列,而是发现观测背后的因果结构——什么导致什么,什么动作会产生什么结果。

预测未来不是盲目外推,而是基于已学到的世界模型进行因果推理——给定当前状态与动作,推理出最可能的后续状态与奖励。

两者的结合使得智能体能够:

  • 在采取行动之前”想象”多种可能的结果
  • 选择导致最大长期奖励的动作序列
  • 在物理约束不允许试错的场景中安全地学习

这一思想与人类认知科学中的”心理模拟(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)未来轨迹。

给定当前状态 与策略 ,想象 rollout 产生:

H步想象轨迹的联合概率

预测奖励

3. 价值函数与策略梯度

在想象空间中定义的价值函数

其中 是折扣因子。

Dreamer 使用 learned critic 来估计价值,并通过 TD-learning 更新:

其中 步回报目标。

策略梯度(使用传播的 critic):

其中 是 优势估计(advantage)。

4. 模型预测控制(MPC)与规划

MPC 在每个时间步执行以下优化:

在隐空间中,MPC 的计算比在像素空间高效得多,因为:

  • 隐状态维度 像素维度
  • 转移模型 是确定性的(高斯分布均值)或单次前向传播

5. ELBO 与理解-预测的关系

回顾 ELBO:

  • **第一项(重构)**衡量”理解”:隐状态 是否保留了重建观测所需的信息
  • **第二项(KL)**衡量”预测一致性”:编码器推断的后验 与转移模型的预测先验 是否一致

这两个目标共同驱动世界模型学习既紧凑又可预测的隐状态空间。


训练细节

数据构造

理解-预测的训练数据来源于环境交互轨迹

或等价的观测序列:

训练数据的采样策略

  1. 在线采样(Online):智能体实时与环境交互,收集新轨迹
  2. 离线批量(Offline):从预先收集的数据集中采样
  3. 优先回放(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()

模块训练顺序

  1. World Model (Encoder + Transition + Decoder + Reward):优先训练,确保隐空间有意义
  2. Critic (Value Network):在世界模型收敛后训练 critic
  3. 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_action

Train/Inference 一致性

训练与推理的关键差异:

阶段状态来源分布
训练Encoder:真实观测后验
推理想象:转移先验

一致性机制

ELBO 中的 KL 正则项 强制两个分布接近,使得:

  • 真实观测编码产生的 与转移预测产生的 具有相同的分布特性
  • 策略在真实状态上学到的行为,在想象 rollout 中依然有效

优点与局限

优点

  1. sample efficiency:imagination rollout 允许策略在不接触真实环境的情况下学习,大幅减少环境交互次数
  2. 安全探索:在隐空间中试错不会造成物理损害,适用于机器人、医疗等安全关键场景
  3. 长时 horizon:像素级规划无法处理的长序列决策,在隐空间变得可行
  4. 因果理解:通过学习 ,模型捕获了动作与状态变化的因果关系,而非表面的相关性
  5. 多任务迁移:隐状态表示对视觉变化鲁棒,同一世界模型可用于不同任务

失败模式

  1. 模型误差累积:想象 rollout 中每一步的预测误差会被放大,最终偏离真实轨迹
    • 缓解:使用 short imagination horizon(如 H=15),或 KL 正则约束先验-后验差距
  2. 奖励模型过拟合:奖励预测 可能学习到虚假的”奖励 hacking”模式
  3. 复合误差:状态转移误差 × 奖励预测误差 × 策略误差,三者叠加导致策略失效
  4. 分布外(OOD):当智能体进入从未见过的状态区域时,世界模型失效
  5. 随机性建模不足:真实环境中的随机性(stochasticity)难以被确定性模型完全捕获

训练瓶颈

  1. 梯度传播:imagination horizon 较长时,策略梯度方差大,收敛慢
    • 缓解:使用 GAE(Generalized Advantage Estimation)降低方差
  2. 世界模型与策略的耦合训练:两者相互影响,可能陷入局部最优
    • 缓解:使用 iterative RL(DreamerV3 的 EMA 更新)
  3. 隐空间坍缩 退化为先验 ,失去表示能力
    • 缓解:使用 KL 权重调度(前期小,后期大)

与前后内容的衔接

继承自

  • 1-世界模型的定义:世界模型的基础架构(编码器、转移、奖励、重构)
  • 变分推断与 ELBO 理论:理解与预测的数学统一框架
  • 强化学习基础:MDP、价值函数、策略梯度的理论

解决

  • 像素级 RL 的维度灾难:通过隐状态压缩使长期规划成为可能
  • sample inefficiency:imagination rollout 大幅减少真实交互需求
  • 探索-利用的矛盾:在隐空间中安全探索,不冒物理风险

引向


可复现实现要点

最小模块

# 实现"理解-预测"闭环的最小模块
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

  1. imagination 中使用后验而非先验:推理时应使用 而非 ,否则无法进行真正的”想象”
  2. 梯度泄漏:imagination rollout 中不小心反向传播到世界模型,导致策略过度依赖模型误差
  3. 价值函数过度估计:critic 未充分训练时,策略会利用价值函数的误差
  4. 折扣因子设置 太小导致短视, 太大导致训练不稳定(通常
  5. 动作空间离散化:连续动作空间需要正确归一化到

章节摘要

  1. 理解世界的本质是发现将高维观测映射到低维状态的不变因果规律,即学习
  2. 预测未来是在隐状态空间中通过想象 rollout 展开未来轨迹,计算累积奖励以指导策略优化。
  3. ELBO统一了理解(重构项)与预测(KL正则项)的目标,确保隐状态既紧凑又可预测。
  4. Dreamer的核心创新是在隐空间中做想象 rollout,策略可以在不接触真实环境的情况下学习。
  5. 价值函数 在隐状态空间定义,通过 TD-learning 从想象轨迹中学习。
  6. 策略梯度通过反传 critic 的优势估计,实现端到端的策略优化。
  7. 训练-推理一致性由 KL 正则项保证,确保真实状态与想象状态具有相似的分布特性。
  8. 复合误差累积(转移误差 × 奖励误差 × 策略误差)是世界模型规划的主要失败模式,需要通过短 horizon 和 KL 约束缓解。
  9. 因果结构而非表面相关性是理解世界的关键,这要求模型捕获动作与状态变化的真实因果依赖。
  10. 世界模型的sample efficiency来源于 imagination rollout,使得策略可以在”梦境”中学习,无需真实交互。

关键词

理解世界、预测未来、因果结构、状态转移、想象 rollout、模型预测控制、策略梯度、价值函数、ELBO、KL 正则、sample efficiency、奖励预测、世界模型规划、隐空间推理、转移先验、后验推断、Dreamer、折扣因子、优势估计、TD-learning