World Model、Planning 与 MPC
学习环境动力学并滚动规划未来动作。
学习目标
- 用有限时域预测比较计划,只执行首个动作后依据新观察重新规划。
- 独立复核“两步规划为何先执行看似不最优的动作”的输入、计算和解释。
- 计划长度与一次实际执行的动作数不同。
为什么重要
用有限时域预测比较计划,只执行首个动作后依据新观察重新规划。
学习前需要掌握
背景与问题
机器人推箱子时,可以用模型预测若干动作序列的后果,选择眼前较好的计划。但执行第一步后,摩擦和碰撞可能使箱子偏离预测,继续盲目执行整串动作会放大误差。
概念定义
世界模型预测环境未来,可能在物理状态、观察或潜在空间中建模。模型预测控制 MPC 在当前信息下搜索有限时域动作序列,只执行首个动作,然后更新状态估计并重规划。世界模型是预测工具,MPC 是使用模型的决策过程。
直观理解
导航先规划一段路线,开过一个路口后根据实际位置和新路况再算。重新规划能纠正部分预测误差,但如果地图系统性错误,反复算错也不会自动变正确。
核心原理
计划目标可累加预测奖励并加末端价值,还需满足动作和状态约束。有限时域太短会看不到先付成本后获收益的机会,末端价值可缓解短视,但自身也有估计误差。
模型在真实数据分布上准确,不保证在优化器搜索的所有动作序列上准确;规划可能主动利用模型漏洞。限制预测长度、惩罚模型不确定性或使用模型集合都需要独立验证。
每步重规划增加计算成本,真实执行还受延迟和状态估计质量影响。不能把模拟 rollout 数量当作真实环境样本效率,也不能仅以模型单步均方误差代替闭环控制评价。
数学表达
有限时域模型规划
预测状态由世界模型递推,MPC 通常只执行求得序列的首个动作。
变量含义
H规划时域ŝ、r̂模型预测状态与奖励
计算步骤
- 1序列 [0,1] 的代价为 (0−2)²+(1−2)²=5。
- 2序列 [1,1] 的代价为 (1−2)²+(2−2)²=1,是最小值。
- 3MPC 只执行第一个 1,收到真实新状态后再规划。
代码对应位置
示例 1两步规划为何先执行看似不最优的动作:最优两步计划为 [1,1],但本轮实际只执行首动作 1。
变量解释
| 变量 | 含义 |
|---|---|
H | 规划时域 |
ŝ、r̂ | 模型预测状态与奖励 |
完整数值示例
两步规划为何先执行看似不最优的动作
已知条件
- 确定模型 x′=x+a,x0=0,目标位置 2,动作只能取 0 或 1。
- 两步成本为每步后位置误差平方之和。
计算步骤
- 序列 [0,1] 的代价为 (0−2)²+(1−2)²=5。
- 序列 [1,1] 的代价为 (1−2)²+(2−2)²=1,是最小值。
- MPC 只执行第一个 1,收到真实新状态后再规划。
计算结果
最优两步计划为 [1,1],但本轮实际只执行首动作 1。
处理前后对比
- 计划长度与一次实际执行的动作数不同。
- 示例模型恰好正确,真实任务还需考虑模型误差和观测噪声。
计算与实现步骤
- 学习模型
- 采样候选计划
- 预测回报
- 执行首步
- 重规划
代码实现
示例 1
两步规划为何先执行看似不最优的动作
example_01.py用途:最优两步计划为 [1,1],但本轮实际只执行首动作 1。
from itertools import product
costs = {}
for actions in product([0, 1], repeat=2):
x, cost = 0, 0
for action in actions:
x += action
cost += (x - 2) ** 2
costs[actions] = cost
best = min(costs, key=costs.get)
print(f"plan={best}, cost={costs[best]}, execute_first={best[0]}")代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
最优两步计划为 [1,1],但本轮实际只执行首动作 1。
Step 1 · 1–10 行
导入当前步骤需要的数值计算、预处理、模型或评价工具。依赖集中写在代码开头,便于复现。
from itertools import product
costs = {}
for actions in product([0, 1], repeat=2):
x, cost = 0, 0
for action in actions:
x += action
cost += (x - 2) ** 2
costs[actions] = cost
best = min(costs, key=costs.get)
print(f"plan={best}, cost={costs[best]}, execute_first={best[0]}")预期输出或运行结果
plan=(1, 1), cost=1, execute_first=1
常见错误 · 3 条
- 执行整串预测动作却仍称每步重规划。
- 短 horizon 没有末端价值,漏掉延迟收益。
- 规划器反复搜索数据外区域,利用模型错误。
实际应用
- 序贯决策
- 控制与资源分配
常见错误
- 执行整串预测动作却仍称每步重规划。
- 短 horizon 没有末端价值,漏掉延迟收益。
- 规划器反复搜索数据外区域,利用模型错误。
扩展内容说明
本页数值均为解释机制的构造案例,不能解读为真实训练或基准性能。定义和适用条件参见 Chua 等:Deep Reinforcement Learning in a Handful of Trials using Probabilistic Dynamics Models。
算法属性与数据边界
失败模式、风险与性能
失败模式
- 执行整串预测动作却仍称每步重规划。
- 短 horizon 没有末端价值,漏掉延迟收益。
- 规划器反复搜索数据外区域,利用模型错误。
风险
- 奖励函数与真实目标不一致会诱发奖励黑客。
- 部署策略的行动权限必须由环境和应用层约束。
性能考虑
- 样本效率、墙钟时间和显存占用需要分别报告。
- 应使用多个随机种子、置信区间和固定评测策略。
常见问题
每步重规划能消除模型误差吗?
能利用新观察纠正部分偏离,但系统性模型错误、隐藏状态和控制延迟仍会影响闭环结果,需要按真实任务验证。
网页是否会训练模型?
不会。所有图表使用固定种子或解析公式在浏览器本地计算,不执行页面中的示例代码。
推荐学习资料
参考库不会生成虚假资源或无效外部链接。