资讯详情

World Models:让强化学习先学会“做梦”

📅 2026/9/30 23:26:52 | 华诺云谱 👁 阅读
World Models:让强化学习先学会“做梦”
参考World ModelsarXiv HTML 全文World Models 交互式演示论文David Ha、Jürgen SchmidhuberWorld Models2018一句话摘要这篇论文把智能体拆成三个模块Vision用 VAE 把图像压缩成潜变量Memory用 MDN-RNN 预测潜变量随时间的变化Controller只负责根据当前潜变量和记忆状态选动作。先学会“世界如何运行”再在这个世界模型里训练策略强化学习就不必直接在高维像素和大网络参数上做信用分配。论文最有冲击力的结果是在 VizDoom 中控制器主要在世界模型生成的潜空间“梦境”里训练随后迁移回真实环境仍然取得了约 1100 个时间步的平均生存时间CarRacing-v0 的平均分达到 906±21超过论文当时列出的基线。上述数字都是论文报告的结果不代表今天的软件环境仍能直接复现。1. 先把符号和渲染方式说清楚符号含义x_t环境在时刻 t 给出的原始观测通常是一张 RGB 图像z_tVAE 从x_t编码出的低维视觉潜变量h_tMDN-RNN 在时刻 t 的记忆状态包含历史和未来预测信息a_t控制器在时刻 t 输出的动作r_t环境给出的奖励d_t是否终止例如 Doom 中玩家是否死亡τ从 MDN 分布采样时使用的温度控制梦境的不确定性2. 为什么要先学一个世界模型传统的 model-free 强化学习直接学习π(a_t | x_t) 或 Q(x_t, a_t)其中x_t可能是一张 RGB 图像。这样做有两个困难图像维度很高策略网络既要学会看图又要学会控制。奖励通常延迟出现算法要把最终得分归因到很多中间动作信用分配困难。作者的拆分方式是把大部分表示学习交给可用反向传播训练的世界模型把奖励优化留给一个很小的控制器。控制器只在一个低维搜索空间里优化论文用 CMA-ES协方差矩阵自适应进化策略完成这一步。3. 三个模块如何协作flowchart LR X[观测图像 x_t] -- V[VAE / Vision] V -- Z[潜变量 z_t] Z -- C[Controller] H[记忆状态 h_t] -- C C -- A[动作 a_t] Z -- M[MDN-RNN / Memory] A -- M H -- M M -- H2[下一状态 h_{t1}] M -- P[下一潜变量的概率分布]2.1 VVAE 负责空间压缩环境给出图像x_t卷积 VAE 编码为低维向量z_t再由解码器重建图像。VAE 的目标可以概括为L_V ≈ ||x_t - x̂_t||_2^2 KL(q_phi(z | x_t) || N(0, I))重建项保留视觉信息KL 项把潜空间约束在规则的高斯先验附近。这个约束还有一个实际作用MDN-RNN 生成的z即使不完全落在真实编码分布上VAE 解码器也更容易处理。论文把输入图像缩放到 64×64。CarRacing 使用 32 维zDoom 使用 64 维z。VAE 只做无监督的视觉压缩不读取奖励信号。2.2 MMDN-RNN 负责时间和不确定性仅有z_t只能描述“现在看到了什么”无法表示速度、惯性、敌人行为等时间信息。Memory 模块是 LSTM 加 Mixture Density NetworkMDN建模p(z_{t1} | a_t, z_t, h_t)MDN 不输出一个确定的点而是输出多个高斯分布的混合参数p(z_{t1} | ·) Σ_k π_k · N(z_{t1}; μ_k, diag(σ_k^2))这很重要因为同一个状态和动作可能对应多个合理的未来。采样时引入温度τ可以改变梦境的不确定性温度越高未来越随机也越难让控制器钻模型漏洞。在 Doom 实验中M 还预测下一帧是否死亡d_{t1}因此它具备了构造完整虚拟环境所需的“终止信号”。2.3 CController 只保留任务相关的决策控制器把视觉潜变量和记忆状态拼起来做一个线性映射a_t W_c [z_t ; h_t] b_c实际实现再用tanh把动作限制到环境允许的范围。CarRacing 的控制器只有 867 个参数Doom 的控制器只有 1088 个参数。这样做的核心思想是让大模型负责“理解和预测”让小模型负责“选择动作”。4. 训练流程论文的训练不是端到端一次完成而是分阶段进行用随机策略采集 10,000 条 rollout保存图像和动作。用图像训练 VAE得到每一帧的潜变量分布。把图像转换成z_t再用动作和潜变量序列训练 MDN-RNN。固定 V 和 M定义控制器a_t W_c [z_t ; h_t] b_c。用 CMA-ES 反复评估控制器的累计奖励搜索W_c, b_c。CarRacing 中VAE 约 434.9 万参数MDN-RNN 约 42.2 万参数而控制器只有 867 个参数。模型的复杂度主要放在可监督训练的表示和动力学模块里奖励优化只搜索很小的一块参数空间。一个简化版 rollout 如下obs env.reset() h rnn.initial_state() done False while not done: z vae.encode(obs) action controller([z, h]) obs, reward, done env.step(action) h rnn.forward([action, z, h])在梦境环境中初始状态由真实环境提供一次之后由 MDN-RNN 采样下一潜变量和终止信号整个 rollout 都在潜空间进行不需要继续渲染游戏画面。5. 实验一CarRacing 为什么记忆状态很关键论文做了一个很有解释力的消融实验控制器输入平均分只有z_t的线性控制器632±251只有z_t增加隐藏层788±141[z_t, h_t]的完整 World Model906±21只有z_t时控制器能看到当前画面却不知道车辆的运动趋势所以在急转弯处容易摇摆。加入h_t后控制器得到的是“当前画面 对未来的压缩预测”可以更稳定地提前修正方向。值得注意的是控制器本身仍然是线性的性能提升主要来自世界模型提供的时空表示。6. 实验二在“梦里”训练再回到真实 DoomVizDoom 的 Take Cover 任务要求智能体躲避火球。论文先用随机策略收集数据训练 VAE 和 MDN-RNN再把 MDN-RNN 包装成一个与 Gym 类似的虚拟环境。控制器只在这个虚拟环境中优化生存时间。论文报告的流程是梦境中训练出的策略在虚拟环境里约能存活 900 个时间步调高温度后模型变得更随机训练出来的策略反而更稳健迁移到真实 VizDoom 后100 次连续试验的平均生存时间约为 1100超过 750 的任务门槛。这里的关键不是梦境画面足够逼真而是潜空间保留了完成任务所需的动力学因素。VAE 即使数错了怪物数量只要 M 能较好地表示“火球会从哪里来、动作如何改变位置、什么时候死亡”控制器仍可能学到可迁移的策略。7. 世界模型最危险的地方被控制器“钻空子”世界模型只是训练数据分布上的近似。控制器在模型里优化得越激进就越可能主动走到模型没有见过的区域然后利用预测误差获得虚假的高奖励。例如论文观察到控制器会学出让梦境中的火球“神奇消失”的动作这在真实游戏里并不存在。论文给出的缓解方法有三点用 MDN 建模概率分布而不是只预测一个确定未来。调高采样温度让控制器面对更嘈杂、更难被利用的梦境。对更复杂任务采用迭代训练把控制器实际探索到的新轨迹加入数据持续更新世界模型。这也是模型式强化学习的核心风险策略优化目标是模型中的回报而不是现实中的回报。模型误差会被策略放大形成 model exploitation 或 model bias。8. 复杂任务需要迭代闭环随机策略只能覆盖简单环境的一小部分。论文建议的迭代流程是初始化 M 和 C 重复 用当前策略在真实环境中采样保存观测和动作 用新数据更新世界模型 M 在 M 生成的环境中优化控制器 C 直到任务完成为了鼓励探索还可以把“世界模型预测得不好”当作内在奖励。直觉是预测误差大的区域说明模型陌生去那里采样能补充训练数据。论文还指出随着低层运动技能被 M 吸收C 可以逐渐转向更高层的导航和规划这为分层技能学习提供了一条思路。9. 如何评价这篇论文贡献把视觉表示、时序预测和奖励优化清晰拆开展示了一个非常小的策略也能完成像素输入控制。证明了策略可以在潜空间生成的环境里训练再迁移回真实环境。通过“控制器欺骗世界模型”的失败案例提前暴露了模型式 RL 的关键问题。局限VAE 是无监督训练的可能重建了任务无关的细节却丢失任务关键区域。LSTM 世界模型容量有限长时间训练可能出现遗忘和分布覆盖不足。实验环境相对简单随机数据能够覆盖足够多的状态真实机器人或复杂游戏通常需要主动探索和反复收集数据。控制器可以直接读取 M 的隐藏状态这比真实玩家能看到的信息更多也增加了利用模型内部漏洞的可能。10. 对今天做项目的启发如果要把这套思想落地可以按以下顺序实现先训练一个稳定的图像编码器并检查潜变量是否保留速度、碰撞和目标等任务信息。在潜空间训练带动作条件的序列模型优先评估多步 rollout 的误差而不是只看单步预测损失。先让策略在真实环境中做短 rollout再逐步增加梦境训练比例监控真实回报与模型回报的差距。用不确定性、温度、模型集成或真实环境校准限制策略对单一模型漏洞的过拟合。把控制器和世界模型分开评估世界模型看预测和不确定性控制器看真实环境中的回报和迁移性能。从今天的术语看World Models可以理解为一种潜空间模型式强化学习先学习可生成的隐状态动力学再在隐状态环境中做策略搜索。它真正留下来的问题不是“如何让梦境看起来像现实”而是“如何让梦境在任务相关的因果关系上足够可靠”。11. 从公式到代码每个量在什么时候产生把时间顺序写出来最容易看出三个模块的边界真实环境 x_t --VAE-- z_t (z_t, h_t) --Controller-- a_t (a_t, z_t, h_t) --MDN-RNN-- h_{t1} 和 p(z_{t1}) 梦境环境 (z_t, h_t) --Controller-- a_t (a_t, z_t, h_t) --MDN-RNN-- 采样 z_{t1}、d_{t1} 和 h_{t1}注意h_t不是环境直接提供的状态而是 RNN 根据历史自己维护的内部状态。真实环境中下一帧图像仍然来自环境梦境环境中下一潜变量来自 MDN 的采样。这也是两种 rollout 的根本区别。12. 为什么h_t能帮助控制而不仅仅是帮助预测假设车辆当前画面看起来完全相同但上一时刻一个车辆正在向左滑另一个车辆正在向右滑。单帧潜变量z_t很难区分这两种情况正确动作却可能相反。LSTM 会把过去的图像和动作压缩进h_t。为了预测下一潜变量它必须隐式记住速度、惯性、遮挡物的运动趋势等信息。因此虽然训练目标只是下一状态预测h_t最终也成为一个可用于控制的时序特征。这解释了论文中的消融结果增加一个更大的控制器只能部分弥补缺少时间信息的问题直接提供世界模型的记忆状态效果更好。13. 训练时的 teacher forcing 与部署时的自由运行训练 MDN-RNN 时论文使用记录数据中的真实z_t作为输入这叫 teacher forcing。它让模型先学会“给定正确历史下一步是什么”。但部署在梦境中时模型会把自己采样出的z_{t1}再喂回下一步训练真实 z_t - 预测 z_{t1} 部署采样 z_{t1} - 再预测 z_{t2} - ...因此单步预测准确不等于长时间梦境可靠。工程上至少要检查单步负对数似然或混合分布损失10、50、100 步 latent rollout 的分布漂移梦境中训练出的策略在真实环境中的回报差距。如果模型在第 20 步就进入训练集之外的状态后续误差可能不是模型“偶尔犯错”而是整个状态分布已经脱离了训练数据。14. CMA-ES 为什么适合这个控制器控制器只有几百到一千多个参数而 VAE 和 MDN-RNN 已经固定。CMA-ES 不需要对环境奖励求导只需要比较不同参数向量的最终累计奖励采样一批控制器参数 → 并行运行多个 rollout → 计算每个控制器的平均累计奖励 → 更新参数分布的均值和协方差它特别适合这篇论文的设置控制器很小、rollout 可以并行、奖励可能不光滑而且世界模型的采样会引入随机性。代价是样本效率不一定优于梯度方法如果控制器变大到几十万参数直接用 CMA-ES 通常就不再划算。15. 如何判断一个潜变量是否“够用”不能只看 VAE 重建图像是否清晰。一个更实用的检查清单是用z_t预测车辆位置、速度、碰撞或目标方向用h_t预测短期未来和终止事件比较只输入z_t与输入[z_t, h_t]的控制效果在真实环境中改变与任务无关的纹理观察策略是否保持稳定检查模型是否重建了大量细节却忽略了任务真正需要的区域。这也是“重建质量”和“控制质量”必须分开评估的原因无监督 VAE 并不知道奖励函数最清晰的像素重建不一定对应最好的决策表示。16. 一个更完整的工程闭环如果要把这套方法用于更复杂的任务建议按下面的闭环实现1. 采集真实轨迹x_t, a_t, r_t, d_t 2. 更新视觉编码器 V 3. 更新动力学模型 M预测 z_{t1}、奖励和终止信号 4. 在 M 中生成多个潜空间 rollout 5. 优化控制器 C 6. 回到真实环境验证 7. 把真实失败轨迹和模型不确定性高的轨迹加入数据集其中第 7 步很关键。只在梦境中反复训练可能让控制器越来越擅长利用模型漏洞只有把真实环境中的失败样本补回来世界模型的覆盖范围才会扩大。17. 最后再用一句话概括World Models的核心不是“生成一段看起来逼真的视频”而是学习一个足以支持决策的潜空间动力学模型z_t表示当前h_t表示历史和未来预测MDN 表示不确定性Controller 在这个压缩世界里寻找动作。它带来的效率来自潜空间和小控制器最大的风险则来自模型误差被策略主动放大。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑