Model-based RL 讲了模型怎样被规划器(planner)利用、误差怎样累积。真动手时,第一个问题往往更朴素:这个模型到底该输出什么?下一时刻的全部状态、下一帧图像,还是只要能算对奖励(reward)和价值?模型该预测什么,取决于你打算拿它做什么;省掉的那部分信息,换任务时可能就补不回来。
一个推箱子小任务
下面所有选择都用同一个自拟环境,数字都能手算,不代表任何真实实验。
一条 8 格的轨道,格子编号 0–7。手在 $h$,箱子在 $b$,手在箱子左边。每步手向左或向右走一格($a=-1$ 或 $+1$),撞到左墙就原地不动。手向右走进箱子所在的格子时,箱子被推着一起右移一格。箱子进入格 6 的那一步得 1 分,回合(episode)结束。
相机拍到 24 个像素:一行 8 个像素亮出手的位置,一行 8 个像素亮出箱子的位置,另有 8 个“窗外的云”像素,每步各自以一半概率亮或灭,和任务毫无关系。
真实状态只有两个整数 $(h,b)$;智能体看到的却是 24 个像素。同一个环境,可以让模型学 4 种不同的东西。
预测下一状态:两个数,规则里有“接触”
最直接的模型输入 $(h,b,a)$,输出 $(h',b')$。真实规则是:$h'$ 等于 $h+a$(不越过左墙);只有当 $a=+1$ 且 $h+1=b$ 时,$b'=b+1$,否则 $b'=b$。
模型要输出的只有两个数,有了它,可以枚举动作序列做 MPC,可以像 Dyna 那样生成额外的 transition,也可以在奖励改变时直接重新打分。难点在“接触”:箱子只在手贴着它时才动。这是一条不连续的规则。如果训练数据里手大多离箱子很远,网络可能把“贴着才推”学成“靠近一点就推一点”,预测出半格半格的位置。
预测下一帧:连云也一起学
如果没有 $(h,b)$,只有像素,可以让模型直接预测下一帧的 24 个像素。Oh 等(2015)就在 Atari 上做过以动作为条件的下一帧预测,并报告这些预测对控制有用。
问题在于损失怎么分配。每个云像素以一半概率为 0 或 1,平方误差最优的预测是 0.5,期望误差 $0.25$。8 个云像素加起来:
$$ 8\times0.25=2 . $$
这是每帧都去不掉的误差。再看把箱子放错一格:箱子那一行有两个像素错了,误差是 $1^2+1^2=2$。在像素平方误差里,“把箱子放错一格”和“猜不准窗外的云”罚得一样多,可只有前者会让规划出错。预测 0.5 的灰色云图也是一张真实世界里从不出现的“平均帧”,这和 Model-based 那篇讲的“把两条路平均成墙”是同一个问题。
真实图像里,无关像素往往比这个例子多得多,而决定成败的物体可能只占几十个像素。观测(observation)模型的好处是不需要人先定义状态,预测结果也能直接看;代价是容量和计算都花在大量与决策无关的细节上,滚动一步也更慢。
预测潜在状态:压缩以后在小空间里滚动
折中做法是先用编码器(encoder)把 24 个像素压成一个小向量 $z$,再学 $z'=g(z,a)$ 和奖励预测;需要时再解码回图像。PlaNet(Hafner 等,2018)从图像学潜在动力学,并在潜在空间里做规划;World Models(Ha & Schmidhuber,2018)展示了智能体可以完全在模型生成的“梦”里训练,再转回真实环境。后来的 Dreamer(Hafner 等,2019)只在潜在空间里想象轨迹(trajectory),把学到的价值的梯度沿想象轨迹反传来学行为,详见世界模型系列的 Dreamer 一篇。

在潜在空间里滚动很快,但 $z$ 里留下什么,由训练目标决定。如果要求从 $z$ 重建当前帧,$z$ 就得记住当前这 8 个云像素,尽管下一步的云根本无法预测;如果只要求预测奖励,$z$ 又可能丢掉以后换任务才用得上的信息。规划那篇已经提醒过:重建图像好看,不代表控制需要的信息还在。
只预测奖励、价值和策略:MuZero 式的价值等价
再走一步:模型根本不必预测状态或图像。MuZero(Schrittwieser 等,2019)的模型由 3 部分组成:表示函数把历史观测编码成隐藏状态(hidden state),动力学函数根据隐藏状态和动作给出下一个隐藏状态和即时奖励,预测函数从隐藏状态输出策略(policy)和价值。论文明确说,隐藏状态不需要能重建观测,“nor is there any requirement for the hidden state to match the unknown, true state …”,即也不要求它对应环境未知的真实状态(§1)。
在推箱子里,这意味着什么?箱子被推之前不动,被推之后总贴在手的右边,所以箱子进格 6 的那一刻,正好是手第一次走到格 5 的那一刻。只要箱子还在手右边、没到终点,不论执行哪串动作,奖励出现的时间只取决于 $h$,与 $b$ 无关。 例如 $(h,b)=(1,3)$ 和 $(1,4)$:一直向右走,两者都在第 4 步拿到 1 分;先退一步再一直向右,两者都在第 6 步拿到。
所以只为这个奖励训练的模型,完全可以把这两个状态映成同一个隐藏状态,也可以忽略所有云像素。训练信号里没有任何东西要求它区分。Grimm 等(2020)把这种思路叫价值等价:如果两个模型对一组策略和函数给出相同的 Bellman 更新,它们就是价值等价的;纳入的策略和函数越多,满足条件的模型越少,最后只剩完全刻画环境的模型。
现在换一个任务:每推一次箱子扣 0.1 分,其余不变(不打折扣)。一直向右走,$(1,3)$ 要推 3 次,回报(return) $1-0.3=0.7$;$(1,4)$ 只推 2 次,回报 $0.8$。状态模型的转移没变,换一个打分函数重新规划即可;价值等价模型的奖励头和价值头都为旧任务训练,隐藏状态里可能根本没有 $b$,必须收集新任务的数据再训练。
转移怎么表示:MLP、图网络、局部线性
决定了预测什么,还要决定用什么函数来表示转移。
| 表示 | 在推箱子里怎么写 | 好处 | 局限 |
|---|---|---|---|
| MLP | 把 $(h,b,a)$ 拼成向量,输出 $(\Delta h,\Delta b)$ | 通用,不需要先验结构 | 接触规则要从数据里学;换成两个箱子要重新设计输入 |
| 图网络 | 手和箱子各是一个节点,相对位置放在边上 | 同一个边函数用于每一对物体,加第二个箱子不用改结构 | 要先把场景切成物体 |
| 局部线性 | 不接触时 $h'=h+a,\ b'=b$;接触时换另一组线性关系 | 可以接 LQR、iLQR 这类求解器 | 只在接触模式不变的一段轨迹附近成立 |
图网络的例子来自 Sanchez-Gonzalez 等(2018):把刚体当节点、关节当边,学到的节点函数和边函数在各部件之间共享。论文报告,这样的模型能零样本推广到连杆数不同的系统。
局部线性模型的代表用法是 Levine & Abbeel(2014):在轨迹附近拟合随时间变化的线性动力学,不去学一个全局模型,再用这些局部解指导神经网络策略。它省掉了全局建模,但推箱子这类“接触一下规则就变”的场景,正是局部线性最容易出错的地方。
不一定要参数化:回放、转移图、高斯过程、符号规则
模型也不必是一个神经网络。
回放(replay)或情景记忆(episodic memory)。 把见过的 $(s,a,r,s')$ 全部存下来,查询时直接查表。推箱子里手在箱子左边、箱子在终点左边的状态只有 15 个,乘 2 个动作是 30 种组合;几百条随机交互就能全部覆盖,这时查表模型在这个确定性环境里就是精确的。没见过的组合,它什么也答不出。van Hasselt 等(2019)认为经验回放和基于模型的方法有共同特点,并据此推测:如果模型只用来从见过的状态生成 transition,基于回放的算法应当不差;他们在 Atari 上报告,基于回放的算法在数据效率上超过了先前使用参数化模型的结果。
转移图。 把见过的状态当节点、见过的转移当边,规划就成了最短路问题:从 $(1,3)$ 出发,到“箱子在 6”最少要走 4 条边。Search on the Replay Buffer(Eysenbach 等,2019)用回放里的观测当节点,用目标条件价值函数估计边的距离,再用图搜索找出一串子目标。错误的捷径边会被最短路算法优先使用。
高斯过程。 数据很少时,它同时给出预测均值和方差(variance),离数据越远方差越大。PILCO(Deisenroth & Rasmussen,2011)用高斯过程预测状态变化量,把模型不确定性带进长时程预测,并解析计算策略梯度(policy gradient);论文报告在一台真实的 cart-pole 上,总共约 17.5 秒交互就学会了起摆和平衡。代价是精确推断的计算量随数据点数立方增长(Rasmussen & Williams,第 2 章);常用的平滑核也会把推箱子的接触跳变抹成一段斜坡。
符号规则。 像 STRIPS(Fikes & Nilsson,1971)那样写算子:“向右推”的前提是手在 $x$、箱子在 $x+1$、$x+2$ 为空,效果是手到 $x+1$、箱子到 $x+2$。规则写对了,对任意位置、任意个箱子都精确,几乎不需要数据。难处是:符号得有人给,或者另外学出来;箱子打滑这类噪声、摩擦这类连续量也很难写进去。
确定性还是随机
推箱子的状态转移是确定的,云是随机的。如果箱子有 20% 的概率打滑不动,$b'$ 就成了一个分布,点预测会落在两种结果之间。怎样预测分布、怎样区分偶然和认知不确定性(epistemic uncertainty),Model-based 那篇已经展开,这里不重复。值得一提的是,MuZero 原论文的动力学函数是确定性的,论文把随机转移的扩展留作后续工作。
放在一起看
下表是定性的经验取舍,不是测量结果;具体好坏取决于任务、模型大小和数据量。
| 模型 | 数据效率 | 不确定性 | 规模 | 适合的规划方式 | 典型失败 |
|---|---|---|---|---|---|
| 状态 MLP(可做 ensemble) | 中,需要见过接触附近的数据 | 单个网络没有,ensemble 给近似 | 需要已有低维状态 | MPC / CEM、Dyna、可微时用梯度 | 不连续处被抹平,规划器利用外推误差 |
| 图网络 | 结构合适时较高 | 同上 | 随物体数增长 | 同上,可换物体数 | 物体切分错,或关系没覆盖到 |
| 局部线性 | 在轨迹附近很高 | 常配噪声协方差 | 只覆盖一段轨迹 | LQR / iLQR 类 | 接触模式一变就失效 |
| 观测模型 | 低,要学全部像素 | 需要显式建模 | 像素越多越慢 | 像素空间里的采样规划 | 损失花在无关细节,平均成模糊帧 |
| 潜在状态(带重建) | 中 | 可用随机潜在变量 | 滚动快 | 潜在空间 CEM、想象中训练 | 丢掉控制需要的信息,或保留太多无关信息 |
| 价值等价(MuZero 式) | 取决于奖励多密 | 原论文为确定性 | 可配大规模搜索 | 树搜索 | 换任务要重训;隐藏状态难检查 |
| 回放 / 情景记忆 | 只覆盖见过的 | 没有 | 内存随数据线性增长 | Dyna 式重放 | 答不出没见过的状态动作 |
| 转移图 | 只覆盖见过的 | 边距离可能估错 | 节点多时搜索变贵 | 图搜索、子目标 | 错误捷径边被优先使用 |
| 高斯过程 | 小数据时高 | 后验方差 | 精确推断随数据量立方增长 | 解析梯度的策略搜索 | 平滑核抹平跳变,数据多了算不动 |
| 符号规则 | 规则正确时几乎不需要数据 | 通常没有 | 物体多也能处理 | 经典符号规划 | 符号从哪来,噪声和连续量难表达 |
怎么选一个起点
先问部署时要用模型做什么。只想多生成训练数据,回放加一个短 rollout 的状态模型可能就够了;要在每步搜索,就得考虑滚动速度和误差累积;奖励会常换,就保留能重新打分的状态模型,而不是只学价值;只有像素、状态又难以手工定义,才需要观测模型或潜在状态模型。
截至 2026 年 10 月,用大规模视频或交互数据训练的学习型世界模型,能在多大程度上替代手工建模或按任务训练的模型,仍是快速变化的方向;哪种潜在表示最适合控制也还没有定论。这部分放在本站的世界模型系列里跟踪,这里只讲已经比较稳定的取舍。
接着读:规划和学习怎样互相喂。回到 Model-based 总览,或看规划与 LQR。
本页术语 14
- 规划器 planner
- 利用模型比较未来动作序列,再选择当前要执行的动作
- 奖励 reward
- RL 里指导策略更新的标量信号
- 回合 episode
- 从初始状态开始的一次交互过程;采样片段结束不一定代表任务真正结束
- 观测 observation
- 智能体实际收到的信息,可能只是环境完整状态的一部分
- 编码器 encoder
- 把原始输入压成向量的那一半模型
- 轨迹 trajectory
- 与环境交互得到的一串状态、动作和奖励;采样时也可能只保存其中一段
- 隐藏状态 hidden state
- 这里指环境中未直接观测到的真实状态;不要与 RNN 内部的隐藏表示混为一谈
- 策略 policy
- 给定状态,规定怎样选动作;可以输出一个动作,也可以输出动作的概率分布
- 回报 return
- 从某一步开始,把后续奖励按约定累加;有折扣时还要乘上相应的折扣权重
- 回放 replay
- 用固定输入重新执行一段数据或模型链路,检查结果是否一致
- 情景记忆 episodic memory
- 对具体事件及其时间、情境的记录
- 方差 variance
- 估计量的波动幅度;重要性加权最容易在这里爆炸
- 策略梯度 policy gradient
- 通过改变动作的概率来提高期望回报;不要求环境本身可微
- 认知不确定性 epistemic uncertainty
- 数据或模型知识不足造成的不确定性,可通过新证据减少,但估计并不自动可靠