PlaNet论文笔记
learning latent dynamics for planning from pixels
引言以及摘要部分
潜在空间规划 (Planning in latent spaces):通过学习动力学模型并在其潜在空间中高效规划,我们解决了 DeepMind 控制套件中的各种任务。 环状态空间模型 (Recurrent state space model):我们设计了一个同时包含确定性和随机性组件的潜在动力学模型。实验表明,同时具备这两个组件对于实现高水平的规划性能至关重要。
潜在过冲 (Latent overshooting):我们将标准变分界限(variational bound)进行了推广,以包含多步预测。仅使用潜在空间中的项产生了一个快速正则化器,它可以改善长期预测,并且与任何潜在序列模型兼容。
本文提出了一种深度规划网络(Deep Planning Network,PlaNet),它是一种纯模型驱动(model-based)的智能体。PlaNet能够从图像中学习环境动力学,并在潜在空间(latent space)中进行快速在线规划,从而选择动作。
潜在空间规划(Latent Space Planning)
PlaNet 通过使用规划迭代地收集数据,并利用收集到的数据训练动力学模型来实现通过规划来解决未知环境的问题。
问题设定
定义离散时间步 t、隐藏状态 st、图像观测 ot、连续动作向量 at 和标量奖励 rt,它们遵循以下随机动力学 :
- 转移函数 (Transition function): st∼p(st∣st−1,at−1)
- 观测函数 (Observation function): ot∼p(ot∣st)
- 奖励函数 (Reward function): rt∼p(rt∣st)
- 策略 (Policy): at∼p(at∣o≤t,a<t)
基于模型的规划
PlaNet 从以前经历过的回合(episodes)中学习转移模型 p(st∣st−1,at−1)、观测模型 p(ot∣st) 和奖励模型 p(rt∣st),还学习了一个编码器 q(st∣o≤t,a<t),以便使用滤波(filtering)技术从历史记录中推断出当前隐藏状态的近似信念(belief,即:当前潜在状态的概率分布)。
使用模型预测控制,使智能体能够根据新的观测结果调整其计划,这意味着在每个时间步都会重新规划。
经验收集
由于智能体最初可能无法访问环境的所有部分,所以需要迭代地收集新经验并改进动力学模型。可以参考 算法1 。
规划算法
使用交叉熵方法在模型下搜索最佳动作序列,选择这种算法是因为它具有鲁棒性,并且当给定用于规划的真实动力学时,它成功解决了所有考虑的任务。
为了在学习到的模型下评估候选动作序列,我们从当前状态信念开始采样一条状态轨迹,并对沿着该序列预测的平均奖励进行求和
算法 1:深度规划网络 (PlaNet)
输入:
| 变量/参数 | 说明 | 变量/参数 | 说明 |
|---|---|---|---|
| R | 动作重复次数 (Action repeat) | p(st∣st−1,at−1) | 转移模型 (Transition model) |
| S | 种子回合数 (Seed episodes) | p(ot∣st) | 观测模型 (Observation model) |
| C | 收集间隔 (Collect interval) | p(rt∣st) | 奖励模型 (Reward model) |
| B | 批量大小 (Batch size) | q(st∣o≤t,a<t) | 编码器 (Encoder) |
| L | 序列块长度 (Chunk length) | p(ϵ) | 探索噪声 (Exploration noise) |
| α | 学习率 (Learning rate) |
执行流程:
- 用 S 个随机种子回合初始化数据集 D。
- 随机初始化模型参数 θ。
- 当 未收敛 时执行 模型拟合以及数据收集
// 模型拟合 (Model fitting)
- 对于 更新步 s=1..C 执行
- 从数据集中均匀随机抽取序列块 {(ot,at,rt)t=kL+k}i=1B∼D。
- 根据公式 3 计算损失 L(θ)。
- 更新模型参数 θ←θ−α∇θL(θ)。
// 数据收集 (Data collection)
- o1←env.reset()
- 对于 时间步 t=1..⌈RT⌉ 执行
- 从历史记录中推断当前状态的信念 q(st∣o≤t,a<t)。
- at←planner(q(st∣o≤t,a<t),p),详情请参见附录中的算法 2。
- 向动作中加入探索噪声 ϵ∼p(ϵ)。
- 对于 动作重复 k=1..R 执行
- rtk,ot+1k←env.step(at)
- rt,ot+1←∑k=1Rrtk,ot+1R
- D←D∪{(ot,at,rt)t=1T}
一个更好理解的说法:
阶段一:系统初始化 (代码行 1-2) 算法启动时,系统处于完全未知的状态。 收集种子数据:智能体在环境中先执行 S 个回合的完全随机动作,将收集到的初始数据(观测、动作、奖励序列)存入数据集 D 中 。这些数据用于冷启动。
初始化参数:随机初始化用于动力学模型(包含转移、观测、奖励模型和编码器)的所有神经网络参数 θ 。
阶段二:模型拟合 (Model Fitting, 代码行 4-7) 在这个阶段,智能体停止与环境的交互,专门利用数据集 D 中积累的历史经验来优化它的内部预测模型 。
循环更新:执行 C 次模型参数更新 。
采样数据:每次更新时,从数据集 D 中均匀随机抽取一批(B 个)固定长度(L)的连续数据片段 。
计算损失并更新:通过算法公式 3(变分界限)计算当前模型预测与真实数据之间的误差(损失 L)。随后,使用梯度下降法更新模型参数 θ,使模型能够更准确地重建观测画面并预测未来的潜在状态和奖励 。
阶段三:数据收集与规划 (Data Collection, 代码行 8-16) 模型更新完成后,智能体再次进入真实环境,利用刚刚学到的知识来规划动作,并收集新的数据以供下一轮训练 。
重置环境:开启一个新回合,获取环境的初始观测 o1 。
决策与执行循环 (代码行 9-15):
- 推断当前状态:使用编码器 q(st∣o≤t,a<t),根据历史的观测和动作记录,计算(滤波)出当前所处潜在状态 st 的概率分布 。
- 潜在空间规划 (核心步骤):将推断出的状态分布输入给规划器(即 CEM 算法 2)。规划器直接在潜在空间(而非图像空间)中模拟未来,评估成千上万条候选动作序列的预期总奖励 。最终,规划器输出能使预期奖励最大化的最优动作序列,并提取该序列的第一个动作 at 作为当前决策 。
- 添加探索噪声:为了防止策略陷入局部最优并持续探索未知状态,在计算出的动作 at 上叠加一个符合正态分布的探索噪声 ϵ 。
- 动作重复 (Action Repeat):选定动作后,为了缩短规划的计算范围并为模型提供更清晰的时间跨度学习信号,智能体会将这同一个动作在真实环境中连续执行 R 次 。
- 记录结果:将这 R 次执行获得的奖励进行累加,并获取这段动作重复结束后的最新观测 ot+1 。
更新经验库(代码行 16):当一个回合(episode)结束后,将这一整轮收集到的新数据追加存入数据集 D 中 。
在模型未收敛之前重复阶段二与阶段三
循环状态空间模型(Recurrent State Space Model)
设计一个能在高度压缩的“潜在空间(Latent Space)”里进行快速、准确且长远预测的动力学模型

| 符号 | 含义 |
|---|---|
| (at) | 动作(Action) |
| (ht) | 确定性隐藏状态(Deterministic Hidden State) |
| (st) | 随机潜在状态(Stochastic Latent State) |
| (ot) | 图像观测(Observation) |
| (rt) | 奖励(Reward) |
| 实线 | 生成过程(Generative Model) |
| 虚线 | 推断过程(Inference Model) |
图 2:潜在动力学模型设计。 在本示例中,模型观测前两个时间步,并预测第三个时间步。圆形代表随机变量,方形代表确定性变量。实线表示生成过程,虚线表示推理模型。 (a) 循环神经网络中的转移完全由确定性变量构成。 这使得模型无法捕捉多种可能的未来轨迹,并且容易让规划器利用(模型)不准确性来“钻空子”。 (b) 状态空间模型中的转移完全由随机变量构成。 这使得模型难以在多个时间步上保留长时记忆信息。 (c) 我们将状态拆分为随机部分和确定部分, 使得模型能够稳健地学习预测多种可能的未来轨迹。
潜在动力学 (Latent dynamics)
典型的潜在状态空间模型如图 2b 所示(SSM) 使用隐藏状态序列 {st}t=1T 定义了图像和奖励的生成过程 :
转移模型 (Transition model):st∼p(st∣st−1,at−1)
观测模型 (Observation model):ot∼p(ot∣st)
奖励模型 (Reward model):rt∼p(rt∣st)
变分编码器 (Variational encoder)
使用一个编码器 q(s1:T∣o1:T,a1:T)=∏t=1Tq(st∣st−1,at−1,ot) 来从过去的观测和动作中推断近似的状态后验
使用的是基于过去观测进行条件化的滤波后验 (filtering posterior),因为最终感兴趣的是使用该模型进行规划.
训练目标 (Training objective)
模型训练的目标是让整个生成过程产生的图像(o1:T)尽可能符合真实采集到的图像
确定性路径 (Deterministic path)
采用了如图 2c 所示的此类模型,并将其命名为循环状态空间模型 (RSSM) : 确定性状态模型 (Deterministic state model):ht=f(ht−1,st−1,at−1)
随机状态模型 (Stochastic state model):st∼p(st∣ht)
观测模型 (Observation model):ot∼p(ot∣ht,st)
奖励模型 (Reward model):rt∼p(rt∣ht,st)f(ht−1,st−1,at−1) 是用循环神经网络 (RNN) 实现的. 可以将这个模型理解为将状态分成了随机部分 st 和确定性部分 ht通过 RNN 依赖于前一个时间步的随机和确定性部分
第三章在讲什么??
第三章的核心目标就是:设计一个能在高度压缩的“潜在空间(Latent Space)”里进行快速、准确且长远预测的动力学模型
- 首先,文章定义了模型的基础框架。它不再处理庞大的图像数据,而是把环境信息压缩成简化的“隐藏状态(st)”:
- 编码器 (Encoder):由于系统无法直接“看透”环境的本质,所以需要训练一个编码器,让它根据过去的画面和动作,推断(猜测)出当前的隐藏状态 st 。
- 训练目标:公式 3是给神经网络设定的LOSS函数 。它强制要求模型压缩出来的隐藏状态必须是有用的——必须能用来准确预测接下来的观测画面和奖励 。
- 纯随机模型(SSM)会遗忘以前的信息
- 为了解决SSM遗忘的问题,同时又保留处理现实世界不确定性的能力,提出了RSSM:
- 确定性路径(记忆担当):引入了一个传统的循环神经网络(RNN)来生成一个确定性的状态 ht 。它就像是一个极其严谨的记事本,负责死死记住过去发生的所有事情,保证信息在长线预测中不会丢失 。
- 随机性路径(想象担当):保留了原来的随机状态 st 。因为真实世界不是按剧本确定的,这个随机部分让模型能够兼容不确定性,想象出多种可能的未来。
潜在空间超步预测 (Latent Overshooting)
解决模型在预测未来时“误差越积越大”的问题。
图3:展开方案(Unrolling schemes)。 标签si∣j表示在给定截止到时间步 j 的观测条件下,时间步 i 的状态的简写形式。指向阴影圆圈的箭头表示对数似然损失项。波浪箭头表示 KL 散度损失项。
(a) 标准变分目标:在每一步解码后验状态,以计算重建损失。同时,它在每一步都对先验和后验施加 KL 散度约束,从而训练转移函数进行单步预测。
(b) 观测超越(Observation overshooting,Amos 等人,2018):解码所有多步预测,以施加额外的重建损失。在图像相关领域中,这种方法通常计算成本过高。
(c) 潜在超越(Latent overshooting):预测所有多步先验。这些状态信念在潜在空间中向其对应的后验进行训练(对齐),以鼓励模型做出准确的多步预测。
有限容量 (Limited capacity)
使用容量有限且分布族受限的模型时,仅仅通过单步预测来训练模型直到收敛,通常并不等同于找到了最擅长多步预测的模型,需要准确的多步预测。 多步预测可以通过潜在空间中的损失来改善,而无需生成额外的图像 。
潜在空间超步预测 (Latent overshooting)
“潜在空间超步预测”,它是针对潜在序列模型的一个目标函数,将标准变分界限推广至在 1≤d≤D 的所有距离的多步预测上训练模型,可以被解释为潜在空间中的一种正则化器,它鼓励单步预测和多步预测之间保持一致,这两者在整个数据集的期望上应当是等价的
第四章在讲什么??
我们可以把第四章的内容拆解成以下三个循序渐进的逻辑步骤来理解:
- 发现问题:单步预测的“短视”与“误差累积”在标准的训练方法中,我们通常只训练模型做单步预测(给它第 t 步的状态,让它预测第 t+1 步)。按理说,如果单步预测绝对完美,那么多步预测也会完美。但现实中,神经网络的预测总有一点点微小的误差。
- 规划的灾难:在做规划时,智能体需要在脑海中连续推演未来 10 步甚至 50 步。它必须用第 1 步的预测结果去推导第 2 步,再用第 2 步去推导第 3 步。
- 结果:这种“击鼓传花”式的预测,会让每一步的微小误差不断累积、放大。等推演到第 10 步时,预测结果可能已经和现实差了十万八千里。
- 直观解法:多步预测 (Multi-step prediction)既然只练“看一步”会导致长远预测不准,那最直接的解决办法就是:直接训练模型“看多步”的能力。我们在训练时,不仅要求模型能根据第 t 步推测 t+1 步,还强制要求它能直接根据第 t 步去推测 t+2 步、t+3 步,一直到 t−d 步。这就是文中提到的“多步预测”。
- 终极方案:潜在过冲 (Latent Overshooting)“多步预测”听起来很好,但在图像控制任务中有一个致命的计算瓶颈:如果要求模型预测未来 15 步,并且每一步都要还原成一张真实的像素图片(图像重构)来计算误差,显卡内存和计算量会瞬间爆炸。为了解决这个计算量爆炸的问题,作者提出了 “潜在过冲” 这个绝招:
- 在“潜在空间”里算账,不画图了:作者通过数学推导(也就是那些长长的公式)证明了一件事——我们完全不需要把未来多步的画面真实地生成出来。
- 对齐目标:我们只需要在高度压缩的“潜在空间(隐藏状态序列)”里,让模型“盲猜”的未来状态(比如仅根据第 1 步,强行闭眼推测出的第 5 步状态),去向“真实”的状态(真正看到了前 5 步画面后推断出的状态)看齐、靠拢。
- 正则化器:公式 7 中的那一大串,本质上就是一个约束条件(正则化器)。它在训练时强制拉扯模型,让它的长线预测结果与短期严谨结果保持一致。
实验
- 总体表现:降维打击级别的数据效率
- 极少的数据量:在 6 个基于图像(像素)的连续控制任务中,PlaNet 的数据效率极高 。仅用 100 个回合(不到对手 1/100 的数据量,约 200 倍效率提升),其表现就全面超越了训练了 10 万个回合的 A3C 算法 。
- 媲美顶级算法:在 500 个回合后,PlaNet 的表现基本追平了顶级无模型算法 D4PG(除 finger 任务外) 。在猎豹跑动(Cheetah)任务上,甚至超越了 D4PG 最终性能的 26% 。
- 计算成本可控:在单张 Nvidia V100 GPU 上训练只需 10 到 20 小时,耗时与传统无模型算法相当甚至更优 。
- 核心组件消融:RSSM 模型的必要性混合架构是关键:
- 实验对比了纯确定性(GRU)和纯随机(SSM)模型,证明 RSSM(确定性+随机性混合) 的设计缺一不可 。
- 分工明确:确定性路径负责“长线记忆”,记住跨越多个时间步的信息 ;随机路径则是整个模型能运作的基础,没有它智能体完全无法学习(推测是因为从图像观察存在“部分可观测性”,必须用随机性来兼容环境的不确定性) 。
- 数据收集与规划策略在线收集优于随机:
- 智能体在训练中“边规划边收集新数据(在线经验收集)”的效果,远好于一开始用随机动作无脑收集数据 。对于倒立摆、手指旋转和步行者这些复杂任务,在线收集是必须的 。
- CEM 规划优于随机猜测:使用交叉熵方法(CEM)迭代优化动作序列,比简单粗暴地“盲猜 1000 个随机序列并挑最好的(Random shooting)”性能更好 。
- 强大的多任务泛化能力 (Multi-task Learning)
- 一个大脑解决所有问题:让单一的 PlaNet 智能体同时面对所有 6 个任务,并且不提前告诉它现在做的是哪个任务 。
- 结果:智能体完全依靠看画面,就能自己推断出当前的任务环境并成功解决所有挑战。虽然学习速度比单独针对一个任务训练时稍微慢一点,但证明了该模型拥有极强的通用预测潜力 。
PlaNet 流程图
当 t=0 时,智能体用一组固定的“空白/全零”向量作为历史记忆的占位符来启动网络,并结合环境给出的第一张真实图片,算出真正的起点状态,然后开始正常的推演循环。
第一步:现状感知(确立推演的起点)
- 获取现实观测:智能体从真实环境中获得当前时间步 t 的像素图像 ot 。
- 更新确定性记忆:上一时刻的状态 st−1、ht−1 以及刚执行完的动作 at−1 被送入 RNN,生成当前的确定性记忆 ht 。
- 计算当前信念:真实的图像 ot 被 CNN 编码,结合 ht,通过编码器 q(st∣ht,ot) 算出当前最准确的隐藏状态 st 。
- 结果:至此,智能体通过 (ht,st) 准确地知道了自己“现在在哪里”。这就为接下来的 CEM 规划提供了一个绝对可靠的起点。
第二步:CEM 脑内沙盘推演(决定怎么动)
- 提出初始方案:CEM 规划器首先从一个没有任何偏好的正态分布中,随机采样出 J 条候选动作序列(例如未来 H 步的动作:at,at+1,…,at+H) 。
- 多线未来推演:对于这 J 条动作序列中的每一条,智能体都以第一步确立的 (ht,st) 为起点,在脑海中向未来滚动推演:
- 输入当前 st,ht 和序列中的候选动作 at 进入 RNN,生成未来的 ht+1 。
- (核心)纯靠经验生成:因为没有未来的画面,模型通过转移模型 p(st+1∣ht+1) 强行采样出未来的随机状态 st+1 。
- 重复这个过程,直到推演完这条序列在未来 H 步所有的隐状态 (h,s)。
- 评估得分:把刚才推演出的每一组未来的 (h,s),送入奖励模型 p(r∣h,s) 中,算出这 J 条动作序列分别能带来多少预期总得分 。
- 优胜劣汰与更新信念:选出得分最高的前 K 条动作序列(精英) 。根据这 K 条“好路线”的特征,调整动作分布(缩小方差,把均值移向这些好路线),然后再从新的分布里重新采样 J 条路线去推演 。
- 锁定最优解:上述“提出方案 -> 脑内推演 -> 提取精英 -> 更新分布”的过程循环迭代 I 次 。最终,规划器输出得分最高的那组动作分布的均值,作为计算出的最优动作。
第三步:动作执行(回到现实)
- 采取行动:智能体只提取 CEM 规划出的那条最优长线计划的第一个动作 μt(加上少量探索噪声后)在真实环境中执行 。
- 进入下一循环:动作执行后,环境发生改变,时间来到 t+1,智能体获得了一张全新的真实图像 ot+1 。
- 闭环:带着新图像 ot+1 和刚刚执行的动作,智能体又回到了第一步(现状感知),开始下一轮的后验推断和重新规划。
PlaNet 对比 WM 的进步
如果说 World Models 证明了“智能体可以在自己脑补的梦境中学习”,那么 PlaNet 就是对这一理念的全面工程升级和范式重构。
1. 范式革命:彻底抛弃“控制器(策略网络)”
- World Models (V-M-C 架构):采用的是“先建构世界,再训练本能”的模式。它训练好视觉模型(V)和记忆模型(M)后,需要在“梦境”中用进化算法(CMA-ES)单独训练一个额外的控制器(Controller, 策略网络)来决定怎么输出动作。
- PlaNet (纯基于模型的规划):完全抛弃了策略网络和价值网络 。它把世界模型本身当成了唯一的决策工具。面对当前状态,PlaNet 直接在脑海中用交叉熵方法(CEM)暴力推演成千上万条未来的动作序列,挑出得分最高的一步去执行 。它不再依赖条件反射式的策略,而是变成了真正意义上的“三思而后行”(模型预测控制,MPC)。
2. 核心大脑的进化:RSSM vs VAE + MDN-RNN
- World Models:它的世界模型是松耦合的。先用 VAE 提取单帧的静态随机特征,再用 MDN-RNN 预测时间序列上的概率分布。这种分离结构在处理长期预测时,容易因为误差累积而失真。
- PlaNet (RSSM 架构):首创了循环状态空间模型 (RSSM) 。它在每一个时间步的底层网络中,紧密地将确定性路径(RNN 的隐藏状态 ht)和随机性路径(潜在状态 st)交织在一起 。确定性路径保证了长线记忆不丢失,随机性路径保证了能兼容环境的多重可能性 。这使得 PlaNet 能在潜在空间中极其稳定地向前推演几十步而不崩溃。
3. 数据效率与交互方式的飞跃
- World Models:通常需要先在环境中盲目收集极其海量的随机数据,把 V 和 M 模型训练得差不多了,再去专心训练 C。数据利用效率相对较低。
- PlaNet:采用在线经验收集(Online Experience Collection)的动态闭环 。智能体一开始只用极少量的随机数据冷启动,稍微学到一点世界规律后,就立刻用 CEM 去环境中边规划边收集高质量的新数据 。这种“边学边用”的机制,让 PlaNet 的数据效率达到了极度夸张的水平——仅用 100 个回合就能超越无模型算法 10 万个回合的表现 。
4. 训练目标的优化:解决长视距问题
- World Models:主要依赖单步的预测误差来训练模型(预测下一帧)。
- PlaNet:指出了单步预测会导致多步推演误差累积的痛点,并提出了潜在过冲 (Latent Overshooting) 这一全新的多步变分推理目标 。它强制模型在抽象的潜在空间里不仅要预测下一步,还要直接预测未来多步的状态,并与真实观测推断出的后验状态对齐 。这相当于给模型戴上了“远视眼镜”,专门优化了它做长线规划的能力。
总结
World Models 告诉我们“模型可以用来做梦”,但最终做事还是交给了练出来的“本能”(Controller);而 PlaNet 则证明了,只要世界模型(RSSM)做得足够精密且推演算法(CEM)足够快,智能体完全可以抛弃本能,纯靠现场的“极速沙盘推演”来解决极其复杂的连续控制任务。