连续控制中的 World Model

一句话定位

连续控制任务中的世界模型需要处理高维连续动作空间、长期规划和多模态行为,问题比离散控制更复杂,需要专门的规划方法。

前置依赖

核心思想

连续控制对世界模型提出了特殊挑战:

  1. 动作空间连续:无法枚举所有动作,需要 gradient-based optimization 或 sampling
  2. 高精度要求:控制精度直接影响系统稳定性
  3. 时序依赖长:机器人控制通常需要长时序规划
  4. 多模态行为:同一状态可能存在多种合理控制策略

连续控制 vs 离散控制的对比:

维度离散控制连续控制
动作空间
规划方法枚举、树搜索优化、采样
世界模型精度要求中等
探索复杂度
典型任务游戏、棋类机器人、自动驾驶

模型结构图

┌─────────────────────────────────────────────────────────────┐
│           连续控制中的 World Model 架构                     │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   ┌─────────┐    ┌──────────────────┐    ┌─────────────┐  │
│   │ 观测 o  │───▶│  Encoder/Decoder  │───▶│ 潜在状态 z  │  │
│   └─────────┘    └──────────────────┘    └──────┬──────┘  │
│                                                  │         │
│   ┌──────────────────────────────────────────────▼──────┐  │
│   │                   World Model                        │  │
│   │   p(z'|z, a)  (连续动作输入)                       │  │
│   │   r = f(z, a)  (回报预测)                          │  │
│   └──────────────────────────────────────────────────────┘  │
│                          │                                   │
│                          ▼                                   │
│   ┌──────────────────────────────────────────────────────┐  │
│   │                   规划器                             │  │
│   │   CEM / iCEM / Model-predictive Planning             │  │
│   │   (处理连续动作空间)                                 │  │
│   └──────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘

数学推导

1. 连续动作空间的处理

连续动作的 CEM 规划:

与离散动作不同,连续动作需要采样连续的分布参数:

设每步动作为 ,轨迹为 ,其中每个 维向量。

动作分布(每步独立高斯):

CEM 更新(连续动作):

2. 为什么连续动作更难

挑战 1:探索空间指数级

  • 离散: 个动作, 条轨迹
  • 连续:无穷动作,搜索空间无界

挑战 2:局部最优陷阱

连续空间的局部最优更多,且更难逃出。

挑战 3:动作精度敏感

机器人控制中, 的动作误差可能导致任务失败。

3. TD-MPC 处理连续控制

TD-MPC (Temporal Difference Model Predictive Control) 是一种专门用于连续控制的 MBRL 方法。

核心思想:

将 TD learning 与 MPC 结合,在规划过程中同时考虑:

  1. 即时回报
  2. 未来价值 通过 value function 估计

动作评分函数:

规划目标:

其中 是价值引导权重。

4. iCEM (implicit CEM)

iCEM 是一种改进的 CEM,专门为连续控制设计:

与标准 CEM 的区别:

特性CEMiCEM
分布表示参数化高斯精英轨迹集合
优化方式显式分布更新隐式优化
局部最优容易陷入更鲁棒
收敛速度快(早期)慢但稳定

iCEM 算法:

def iCEM(world_model, s_0, H, K=64, M=8, N=10):
    """iCEM 连续控制规划"""
    # 初始化精英轨迹
    elite_trajs = [np.random.randn(H, action_dim) for _ in range(M)]
 
    for it in range(N):
        # 采样
        trajs = []
        for _ in range(K):
            # 混合采样:精英扰动 + 随机
            if len(elite_trajs) > 0:
                base = elite_trajs[np.random.randint(len(elite_trajs))]
                traj = base + np.random.randn(H, action_dim) * noise_std
            else:
                traj = np.random.randn(H, action_dim)
            trajs.append(traj)
 
        # 评估
        returns = []
        for traj in trajs:
            R = evaluate_trajectory(world_model, s_0, traj)
            returns.append(R)
 
        # 选择精英
        elite_indices = np.argsort(returns)[-M:]
        elite_trajs = [trajs[i] for i in elite_indices]
 
    # 返回第一个动作
    best_traj = elite_trajs[-1]
    return best_traj[0]

5. 连续控制任务的规划 horizon 选择

Horizon 与模型误差的关系:

设模型误差为 ,控制精度要求为

误差累积:

选择依据:

任务类型Horizon 典型值依据
快速响应1-5低延迟要求,模型误差优先
运动控制10-20平衡规划质量与误差
任务规划50+长时序目标,模型精度要求高

自适应 Horizon:

部分方法动态调整 horizon:

训练细节

连续控制的特殊训练挑战

挑战描述解决策略
动作精度高精度控制要求精细化模型训练,ensemble
多模态同一任务多种解法混合高斯策略,多峰分布
探索效率连续空间探索困难guided exploration, resampling
稳定训练连续控制不稳定target network, gradient clipping

训练数据收集策略

1. 随机策略 + 筛选:

  • 使用随机策略收集数据
  • 只保留高回报片段训练模型

2. 使用已训练策略引导:

  • 用当前策略收集数据
  • 平衡利用与探索

3. DADS/MI 等技能发现:

  • 先发现多模态技能
  • 再用各技能数据训练模型

模型架构选择

潜在空间维度:

任务复杂度潜在维度示例
简单10-502D locomotion
中等50-200机器人操作
复杂200-1000复杂操作、自动驾驶

Encoder/Decoder 设计:

  • 图像输入:CNN encoder + VAE decoder
  • 低维状态:MLP encoder +确定性/随机转换

推理/rollout/planning 过程

在线控制流程

class ContinuousController:
    def __init__(self, world_model, planner, actor=None):
        self.model = world_model
        self.planner = planner  # CEM / iCEM / TD-MPC
        self.actor = actor  # 如果用 actor-critic
 
    def step(self, obs):
        """每个控制周期调用一次"""
        # 编码观测
        z = self.model.encode(obs)
 
        # 规划(可选)
        if self.planner:
            a = self.planner.plan(z)
        else:
            # Actor 直接输出
            a = self.actor(z)
 
        return a
 
    def control_loop(self, env, max_steps=1000):
        """控制循环"""
        obs = env.reset()
        for t in range(max_steps):
            a = self.step(obs)
            obs, r, done, _ = env.step(a)
            if done:
                break

滚动 Horizon 控制

┌─────────────────────────────────────────────────────────┐
│              滚动 Horizon 控制                         │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  t=0:  [a_0, a_1, ..., a_{H-1}]  → 执行 a_0           │
│  t=1:  [a_1, a_2, ..., a_H]     → 执行 a_1           │
│  t=2:  [a_2, a_3, ..., a_{H+1}] → 执行 a_2           │
│  ...                                                   │
│                                                         │
│  每个时间步重新规划,应对环境变化                       │
└─────────────────────────────────────────────────────────┘

优点与局限

优点

  1. 高精度:连续控制可实现精细动作
  2. 自然映射:与世界模型无缝结合
  3. 实时控制:在线规划适合实时系统

局限

  1. 搜索困难:连续空间搜索复杂度高
  2. 模型精度要求高:控制精度依赖模型精度
  3. 局部最优:优化器容易陷入局部最优

与前后内容的衔接

可复现实现要点

import torch
import numpy as np
 
class ContinuousWorldModel:
    """连续控制的世界模型"""
    def __init__(self, obs_dim, action_dim, latent_dim=128):
        self obs_encoder = nn.Sequential(
            nn.Linear(obs_dim, 256),
            nn.ReLU(),
            nn.Linear(256, latent_dim)
        )
        # 转换器和奖励预测器
        self.transition = nn.Sequential(
            nn.Linear(latent_dim + action_dim, 256),
            nn.ReLU(),
            nn.Linear(256, latent_dim)
        )
        self.reward_net = nn.Sequential(
            nn.Linear(latent_dim + action_dim, 128),
            nn.ReLU(),
            nn.Linear(128, 1)
        )
 
    def predict(self, z, a):
        """预测下一状态和奖励"""
        za = torch.cat([z, a], dim=-1)
        z_next = z + self.transition(za)  # residual 预测
        r = self.reward_net(za)
        return z_next, r
 
class ContinuousCEMPlanner:
    """连续控制的 CEM 规划器"""
    def __init__(self, world_model, action_dim, action_bound,
                 horizon=10, n_samples=256, n_elite=16, n_iterations=5):
        self.model = world_model
        self.action_dim = action_dim
        self.action_bound = action_bound
        self.horizon = horizon
        self.n_samples = n_samples
        self.n_elite = n_elite
        self.n_iterations = n_iterations
 
    def plan(self, z):
        """规划连续动作"""
        # 初始化分布
        mu = np.zeros(self.horizon * self.action_dim)
        sigma = np.ones(self.horizon * self.action_dim)
 
        for _ in range(self.n_iterations):
            # 采样
            trajs = np.random.normal(mu, sigma, (self.n_samples, self.horizon, self.action_dim))
 
            # 裁剪到动作范围
            trajs = np.clip(trajs, -self.action_bound, self.action_bound)
 
            # 评估
            returns = self.evaluate_trajectories(z, trajs)
 
            # 选择精英
            elite_idx = np.argsort(returns)[-self.n_elite:]
            elite_trajs = trajs[elite_idx]
 
            # 更新分布
            mu = elite_trajs.mean(axis=(0, 1))
            sigma = elite_trajs.std(axis=(0, 1)) + 1e-6
 
        # 返回第一个动作
        best_traj = elite_trajs[-1]
        return best_traj[0]
 
    def evaluate_trajectories(self, z, trajs):
        """评估轨迹"""
        returns = []
        for traj in trajs:
            z_cur = z.clone()
            R = 0
            gamma = 1.0
            for h in range(self.horizon):
                a = traj[h]
                z_next, r = self.model.predict(z_cur, torch.tensor(a))
                R += gamma * r.item()
                z_cur = z_next
                gamma *= 0.99
            returns.append(R)
        return np.array(returns)

章节摘要

连续控制中的世界模型面临高维连续动作空间、高精度要求和长时序规划等挑战。与离散控制不同,连续控制需要使用 gradient-based 或 sampling-based 的规划方法。CEM/iCEM 和 TD-MPC 是两种主要的连续控制规划方法。前者通过优化动作序列分布,后者通过结合 TD learning 与 MPC 来处理连续动作。连续控制的成功关键在于世界模型的精度和规划 horizon 的合理选择。

关键词

continuous control, world model, TD-MPC, iCEM, continuous action space, CEM, robotics, motion control, trajectory optimization, continuous planning