Value-based Planning

一句话定位

Value-based Planning 通过在潜在空间中进行价值迭代,利用世界模型学习状态表示和转移规律,直接优化价值函数以指导行动选择。

前置依赖

  • 强化学习基础(Value iteration、Bellman 方程、Q-learning)
  • 世界模型基础(RSSM、VAE-based model)
  • 1-Model-based RL总览
  • 3-MCTS - MCTS 树搜索方法

核心思想

Value-based Planning 的核心思想是将世界模型与价值函数结合,在潜在空间中进行规划。与显式搜索轨迹的 MPC/MCTS 不同,value-based planning 隐式地通过价值函数进行规划:

两种范式对比:

范式搜索方式代表方法
显式规划枚举/优化轨迹MPC (CEM), MCTS
隐式规划通过价值函数Value iteration, Q-planning

隐式规划的本质:

给定当前状态 ,价值函数 直接评估每个动作的长期回报,因此:

这本身就是一种”规划”——不需要显式 rollout 轨迹,只需查询价值函数。

模型结构图

┌─────────────────────────────────────────────────────────────┐
│              Value-based Planning 框架                      │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   ┌──────────────┐    ┌──────────────┐    ┌──────────────┐ │
│   │   Encoder    │───▶│  World Model │───▶│ Value Function│ │
│   │  q(s|z)      │    │  p(s'|s,a)   │    │  V(s), Q(s,a) │ │
│   └──────────────┘    └──────────────┘    └──────────────┘ │
│                                                             │
│         ┌─────────────────────────────────────┐             │
│         │         潜在空间中的价值迭代         │             │
│         │                                     │             │
│         │  Q(s,a) = r + γ·E[V(s')]            │             │
│         │  V(s) = max_a Q(s,a)               │             │
│         │  其中 s' ~ p(s'|s,a)                │             │
│         └─────────────────────────────────────┘             │
└─────────────────────────────────────────────────────────────┘

数学推导

1. 潜在空间中的价值迭代

设世界模型为 ,其中 是潜在状态。价值函数定义为:

Bellman 方程(潜在空间形式):

最优价值函数:

2. 价值函数如何指导搜索

给定当前潜在状态 ,通过以下过程进行规划:

Step 1: 价值评估

对于每个候选动作 ,计算其 Q 值:

Step 2: 动作选择

Step 3: 状态转移

执行 后,世界模型预测下一状态 ,重复上述过程。

搜索的隐式性:

与 CEM 需要采样大量轨迹不同,价值函数提供了一种”立即查询”式的规划:

  • CEM 需要 次模型调用(采样 ,horizon ,迭代
  • Value-based planning 只需要 次模型调用(每步一次价值查询)

3. 与 Model-based RL 的关系

Value-based Planning 是 MBRL 的一个子类,核心区别在于如何利用模型

MBRL 子类模型使用方式规划方式
Dyna-style模型生成假数据增强 replay buffer间接(通过 Q-learning)
Value-based模型用于价值传播直接(
Policy-based模型用于 policy gradient直接(
Trajectory-based模型用于轨迹优化直接(CEM/MCTS)

Dyna-Q 框架:

# Dyna-Q 的伪代码
while not converged:
    # 与环境交互
    a = epsilon_greedy(Q, s)
    s' = env.step(a)
    buffer.add((s, a, r, s'))
 
    # 直接学习
    Q.update(s, a, r, s')
 
    # 模型学习
    model.fit(buffer)
 
    # 假数据学习(n 步)
    for _ in range(n):
        s_fake = random_sample(buffer)
        a_fake = random_action()
        s'_fake = model.predict(s_fake, a_fake)
        Q.update(s_fake, a_fake, r_fake, s'_fake)

4. 模型预测与价值传播的耦合

设价值函数参数化为 ,世界模型为

组合 loss:

其中:

梯度流向:

其中 ,需要通过重参数化或似然比估计梯度。

5. Latent Variable Models 中的 Planning

对于 stochastic 世界模型(如 VAE):

其中 是 stochastic latent。

Value Iteration with stochastic model:

对于高维 ,需要通过采样或变分近似。

训练细节

训练流程

阶段 1: 世界模型训练

  • 用 VAE/RSSM 学习观测重建和状态转移
  • 优化 ELBO:

阶段 2: 价值函数训练

  • 使用 Dreamer 风格的 reccurent rollout
  • 从 latent 序列计算 value target

阶段 3: 联合训练(可选)

  • 通过 policy gradient 端到端优化

Value Target 的计算

设 horizon ,折扣

Monte Carlo target:

TD target(1-step):

TD target(n-step):

训练中的挑战

挑战描述解决思路
复合误差模型误差 + 价值误差叠加early stopping, ensemble
** bootstrapping**用不稳定目标训练target network, polyak averaging
表示学习潜在空间是否保留价值相关信息auxiliary losses, contrastive learning

推理/rollout/planning 过程

推理流程

class ValueBasedPlanner:
    def __init__(self, encoder, world_model, value_function):
        self.encoder = encoder
        self.model = world_model
        self.V = value_function
 
    def plan(self, obs):
        """给定观测,返回动作"""
        # 编码到潜在空间
        z = self.encoder(obs)
 
        # 评估每个动作的 Q 值
        Q_values = []
        for a in self.action_space:
            # 一步 lookahead
            z_next = self.model.predict(z, a)
            q = self.model.reward(z, a) + self.gamma * self.V(z_next)
            Q_values.append(q)
 
        # 选择最优动作
        best_idx = np.argmax(Q_values)
        return self.action_space[best_idx]

多步 Planning

单步 等价于 1-step planning。通过递归展开可以进行多步 planning:

K-step planning:

这与 expectimax 树类似,但通过价值函数压缩了搜索空间。

与 MCTS 的对比

特性Value-basedMCTS
搜索结构隐式(通过 V)显式树
计算量小(O(H·A))大(O(N·log N))
内存大(存树)
适用场景快速决策复杂博弈

优点与局限

优点

  1. 计算效率:无需采样大量轨迹
  2. 表示紧凑:价值函数压缩了状态信息
  3. 可迁移:价值函数可迁移到新任务
  4. 适合 continuous control:可通过 gradient-based optimization on Q

局限

  1. 价值函数表达力:需要合适的函数近似
  2. ** bootstrapping 误差**:TD learning 的经典问题
  3. 探索不足:max Q 可能导致 exploitation
  4. 难以处理多模态策略:单一价值函数难以表示多峰分布

与前后内容的衔接

  • 前置3-MCTS - 树搜索方法
  • 后置5-actor-critic与imagination - 结合 actor-critic 的想象增强方法
  • 关联:价值函数是 Dreamer、IRIS 等方法的基石

可复现实现要点

import torch
import torch.nn as nn
 
class ValueBasedPlanner(nn.Module):
    def __init__(self, encoder, world_model, q_network):
        super().__init__()
        self.encoder = encoder  # obs -> z
        self.world_model = world_model  # (z, a) -> z_next, r
        self.Q = q_network  # z -> R
 
    def forward(self, obs, action):
        """计算 Q(z, a)"""
        z = self.encoder(obs)
        z_next, r = self.world_model(z, action)
        q = r + self.gamma * self.Q(z_next)
        return q
 
    def plan(self, obs):
        """贪婪选择最优动作"""
        z = self.encoder(obs)
        q_values = []
        for a in range(self.action_dim):
            z_next, r = self.world_model(z, torch.tensor([[a]]))
            q = r + self.gamma * self.Q(z_next)
            q_values.append(q)
        return torch.argmax(torch.stack(q_values))

关键实现要素:

  1. Encoder 输出稳定潜在表示
  2. World model 需要是 deterministic 或 reparameterized stochastic
  3. Q 网络需要 target network 稳定训练
  4. Exploration 通过 epsilon-greedy 或 entropy bonus 实现

章节摘要

Value-based Planning 将世界模型与价值函数结合,在潜在空间中进行隐式规划。通过 Bellman 方程,价值函数能够在潜在空间中进行迭代传播,从而指导动作选择。与显式规划的 MPC/MCTS 相比,value-based planning 计算效率更高,适用于需要快速响应的场景。核心挑战在于 bootstrapping 误差累积和价值函数的表示学习。后续章节将介绍如何将价值规划与 actor-critic 框架结合,实现更强大的 imagination-based 方法。

关键词

value-based planning, value iteration, Q-learning, latent space planning, world model, Bellman equation, TD learning, Dyna-Q, implicit planning, bootstrapping, target network, representation learning