规划、控制与评估¶
世界模型真正有用的地方,不是“能预测未来”,而是“能帮助智能体选择动作”。这一页关注世界模型如何接到规划、控制和评估闭环里。
1. 从预测到决策¶
世界模型给出未来预测:
规划器要选动作:
直觉上就是:在脑内试很多种动作序列,选未来回报最大的那条。
1.1 一个具体例子¶
假设机器人末端在一条线上移动,状态是位置 \(x_t\),动作是速度 \(a_t\):
目标是移动到 \(x_{\text{goal}}\),奖励可以设计为:
规划器会尝试多条动作序列:
它会选择预测回报最高的序列 B,并只执行第一个动作。下一步重新观察,再重新规划。
2. MPC:每次只执行第一步¶
MPC(Model Predictive Control)的流程:
好处:
- 可以随时修正模型误差。
- 对扰动更鲁棒。
- 不需要一次规划完整任务。
缺点:
- 每一步都要搜索,计算量大。
- 搜索 horizon 太短会短视,太长又会被模型误差污染。
2.1 MPC 伪代码¶
for t in range(max_steps):
state = observe()
best_return = -float("inf")
best_sequence = None
for sequence in sample_action_sequences(num_candidates, horizon):
imagined_state = state
total_return = 0.0
for k, action in enumerate(sequence):
imagined_state, reward = world_model(imagined_state, action)
total_return += (gamma ** k) * reward
if total_return > best_return:
best_return = total_return
best_sequence = sequence
execute(best_sequence[0])
这就是随机 shooting MPC。CEM 是它的升级版:不是一直随机采样,而是不断把采样分布往好动作附近收缩。
2.2 Horizon 怎么选?¶
| Horizon | 结果 |
|---|---|
| 太短 | 看不到远期收益,动作短视 |
| 太长 | 模型误差累积,规划结果不可信 |
| 中等 + 频繁重规划 | 实践中最稳 |
机器人里常用短 horizon,因为真实环境每一步都能重新观察,没必要一次预测太远。
3. CEM:采样式动作搜索¶
CEM(Cross-Entropy Method)是 PlaNet 常用的动作搜索方法。
流程:
- 初始化动作序列分布,例如高斯分布。
- 采样很多条候选动作序列。
- 用世界模型 rollout 每条序列。
- 计算预测回报。
- 选 top-k 精英样本。
- 用精英样本更新分布均值和方差。
- 重复几轮,执行最好序列的第一个动作。
graph LR
A[采样动作序列] --> B[模型 rollout]
B --> C[计算回报]
C --> D[保留精英样本]
D --> E[更新采样分布]
E --> A
适合连续动作控制,但高维动作或长 horizon 时会变贵。
3.1 CEM 的数学形式¶
假设动作序列长度是 \(H\),动作维度是 \(d\)。维护一个高斯分布:
每轮采样 \(N\) 条候选序列,计算回报,选 top \(K\) 条精英样本:
更新采样分布:
重复几轮后,分布会集中到高回报动作附近。
3.2 CEM 伪代码¶
mu = zeros(horizon, action_dim)
std = ones(horizon, action_dim)
for iteration in range(num_iterations):
candidates = sample_normal(mu, std, num_candidates)
returns = []
for sequence in candidates:
returns.append(rollout_return(world_model, state, sequence))
elites = top_k(candidates, returns, k=num_elites)
mu = mean(elites)
std = stddev(elites)
execute(mu[0])
3.3 CEM 常见参数¶
| 参数 | 含义 | 调大后 |
|---|---|---|
horizon |
规划步数 | 看得远,但误差更大 |
num_candidates |
候选序列数 | 搜索更充分,但更慢 |
num_elites |
精英样本数 | 太小容易早熟,太大收敛慢 |
num_iterations |
CEM 迭代轮数 | 更精细,但耗时 |
action_std |
初始探索范围 | 太小探索不够,太大动作乱 |
4. MCTS:树搜索¶
MCTS(Monte Carlo Tree Search)适合离散动作、规则清晰或可模拟环境,例如棋类、游戏和部分离散控制任务。
它会反复:
- 选择有潜力的节点。
- 扩展新动作。
- 模拟未来。
- 回传价值。
如果世界模型能快速模拟环境,就可以把 MCTS 用在学来的模型上。
4.1 UCB 选择公式¶
MCTS 常用 UCB 在“利用”和“探索”之间平衡:
其中:
- \(Q(s,a)\):这个动作过去平均表现多好。
- \(N(s)\):状态被访问多少次。
- \(N(s,a)\):这个动作被试过多少次。
- \(c\):探索系数。
访问少但可能有潜力的动作会被继续探索。
4.2 什么时候选 MCTS?¶
| 场景 | 适合程度 |
|---|---|
| 棋类、离散游戏 | 很适合 |
| 离散动作机器人任务 | 可以尝试 |
| 高维连续控制 | 通常不如 CEM/MPC |
| 有 policy/value prior | 可以像 AlphaZero 那样增强搜索 |
5. 想象 rollout 训练策略¶
Dreamer 类方法不一定每一步都做在线搜索,而是在世界模型中生成 imagined rollout:
优点:
- 执行时快。
- 可以从少量真实数据中获得大量训练信号。
- 适合高维连续控制。
风险:
- 如果世界模型错误,actor 会学会利用模型漏洞。
- 需要不断用真实数据校正模型。
6. 价值函数如何帮规划?¶
纯 rollout 只能看有限 horizon。如果 horizon 太短,智能体可能看不到远期收益。
解决办法:在 rollout 末端加价值函数:
这样即使只模拟 15 步,也能估计更远未来。
TD-MPC 这类方法就强调用价值函数指导 latent planning。
7. 不确定性与保守规划¶
世界模型会错。规划器必须避免“钻模型漏洞”:
常见方法:
- ensemble:多个模型投票,分歧大说明不确定。
- 惩罚不确定性:高不确定动作降低分数。
- 短 horizon + 频繁重规划。
- 用真实数据不断校正。
- 加入安全约束和动作限幅。
7.1 Ensemble 不确定性¶
训练 \(M\) 个世界模型:
如果它们预测差异很大:
说明这个状态-动作组合不确定。
规划时可以惩罚不确定性:
这样模型会更倾向选择自己有把握的动作。
7.2 Model Exploitation¶
model exploitation 指策略利用模型错误获得虚假高奖励:
解决思路:
- 不让规划器使用过大的动作。
- 惩罚不确定状态。
- 缩短 horizon。
- 用真实环境数据修正模型。
- 对危险区域加硬约束,而不是只靠奖励。
8. 世界模型评估¶
8.1 预测指标¶
| 指标 | 说明 |
|---|---|
| MSE/MAE | 状态或像素误差 |
| NLL | 概率预测质量 |
| FVD/LPIPS | 视频生成质量 |
| latent consistency | 表征预测是否稳定 |
这些指标有用,但不能单独说明控制效果。
预测指标的陷阱
像素 MSE 低可能只是背景预测准;真正影响控制的小物体、接触点、速度可能仍然错。世界模型必须同时看预测指标和控制指标。
8.2 控制指标¶
| 指标 | 说明 |
|---|---|
| episode return | RL 任务总回报 |
| success rate | 任务成功率 |
| sample efficiency | 需要多少真实交互 |
| safety violation | 碰撞、越界、危险动作 |
| robustness | 干扰和分布外场景下表现 |
8.3 交互式模拟指标¶
| 指标 | 说明 |
|---|---|
| controllability | 动作是否能控制未来 |
| consistency | 场景是否长期一致 |
| counterfactual validity | 反事实未来是否合理 |
| closed-loop usefulness | 训练出的 agent 能否迁移到真实/目标环境 |
8.4 推荐评估流程¶
- One-step prediction:先看单步预测是否合理。
- Open-loop rollout:从真实初始状态出发,连续预测多步,但不纠正。
- Closed-loop MPC:每步真实观测后重新规划。
- Disturbance test:中途扰动物体或状态,看模型能否恢复。
- OOD test:换初始位置、物体、光照或动力学参数。
这能区分三种能力:
| 能力 | 测什么 |
|---|---|
| 短期动力学 | one-step |
| 长期一致性 | open-loop rollout |
| 实际决策可用性 | closed-loop control |
9. 什么时候用世界模型?¶
适合:
- 真实交互成本高。
- 需要规划多步后果。
- 需要生成危险或稀有场景。
- 观测高维,但任务有明确动态结构。
- 想做数据效率高的机器人/RL。
不适合一上来就用:
- 状态低维且环境很简单,model-free 已足够。
- 奖励很容易直接优化。
- 模型误差代价极高且无法安全约束。
- 没有足够数据学习动力学。
10. 实机/真实系统安全¶
如果世界模型用于机器人或自动驾驶,一定要有外层安全:
- 动作限幅。
- 速度/加速度限制。
- 碰撞检测。
- 不确定性阈值。
- 人工接管。
- 仿真和离线评估。
- 小步执行,频繁重规划。
世界模型可以帮智能体想象未来,但不应该成为唯一安全边界。