World Model论文笔记
World Models
引言部分
人类会根据自身有限感官能够获取的信息,在大脑中逐渐建立一个关于世界的内部模型(Mental Model),压缩空间信息和时间信息。 理解我们大脑中预测模型的一种方式:它可能不仅仅是一般性地预测未来,而是在给定我们当前运动指令/动作的情况下预测未来的感官数据。用一种更计算机的语言说——在给定当前状态的情况下,输出未来将会接收到怎样的感觉输入。
世界模型就是模仿这个人类的内部模型。
- 强化学习不仅需要学策略,更需要学“环境规律”。世界模型的目标就是学习环境动力学,而不是直接输出动作。
- 世界模型应先于策略学习。作者将智能体拆分为“大世界模型 + 小控制器”,用无监督方式学习世界,再让简单控制器完成任务。
- 最终目标是在“梦境”中训练智能体。如果世界模型足够准确,智能体甚至可以完全在自己学习出来的虚拟环境中训练,再迁移到真实环境执行。这也是整篇论文最具影响力的思想。
智能体模型
智能体拥有一个视觉感觉组件,它能将所看到的事物压缩成一个小的代表性代码。它还有一个记忆组件,可以根据历史信息对未来的代码进行预测。最后,我们的智能体有一个决策组件,该组件仅根据其视觉和记忆组件创建的表征来决定采取何种行动
视觉(VAE (V) Model)
V 模型的作用是学习每一个观测到的输入帧的抽象、压缩表征。 将每一张图像帧压缩成一个小的隐向量(latent vector) z。
记忆(MDN-RNN (M) Model)
M 模型的作用是预测未来。M 模型作为一个预测模型,用于预测 V 模型预期将产生的未来 z 向量。 将 p(z) 近似为混合高斯分布,并训练 RNN 根据提供给它的当前和过去的信息,输出下一个隐向量 zt+1 的概率分布。
这种方法被称为混合密度网络(Mixture Density Network,Bishop, 1994)结合 RNN (MDN-RNN) (Graves, 2013; Ha, 2017a),过去已应用于序列生成问题,例如生成手写体 (Graves, 2013) 和草图 (Ha & Eck, 2017)。
控制器(Controller (C) Model)
控制器 (C) 模型负责决定采取何种行动方案,以最大化智能体在环境的一次推演(rollout)过程中的预期累积奖励。 C 是一个简单的单层线性模型,在每个时间步将 zt 和 ht 直接映射为动作 at(ht 是 RNN 在时间 t 的隐藏状态 at 是在时间 t 采取的动作):
at=Wc[ztht]+bc
Wc 和 bc 是权重矩阵和偏置向量,用于将拼接的输入向量 [ztht] 映射到输出动作向量 at
VMC结合
在每个时间步 t 首先由 V 处理,以生成 (z_{t}).输入到 C 的原始观测值是该潜在向量 (z_{t}) 与 M 的隐藏状态相连接,用于电机控制,并将对环境产生影响。随后,M 将以当前的 zt 和动作 at 作为输入,更新其自身的隐藏状态,生成 (h_{t+1}),供时间 (t+1) 使用
赛车实验
CarRacing-v0 将“解决(solving)”定义为在连续 100 次试验中获得 900 的平均奖励,这意味着智能体几乎不能犯任何驾驶错误 在这个环境中,每次试验的赛道都是随机生成的
特征提取的世界模型
为了训练V和M,作者让智能体随机运动了10000次,并记录了随机的动作at与对应的环境。
使用这个数据集来训练 V,使其学习每一个观测帧的隐空间(latent space),通过最小化给定图像帧与解码器从 z 生成的重构帧之间的差异,来训练我们的 VAE 将每一帧编码为低维的隐向量 z
使用训练好的 V 模型将时间 t 的每一帧预处理为 zt,进而用来训练 M 模型,利用这些预处理过的数据,连同记录的随机动作 at,可以训练 MDN-RNN 将 P(zt+1∣at,zt,ht) 建模为混合高斯分布。
世界模型(V 和 M)对来自环境的实际奖励信号一无所知,它的任务仅仅是压缩并预测观测到的图像帧序列。
流程
为了总结赛车实验,以下是采取的步骤:
- 使用随机策略收集 10,000 次推演(rollouts)数据。
- 训练 VAE (V) 将图像帧编码为 z∈R32。
- 训练 MDN-RNN (M) 来对 P(zt+1∣at,zt,ht) 进行建模。
- 将控制器 (C) 定义为 at=Wc[ztht]+bc。
- 使用 CMA-ES 求解能够最大化预期累积奖励的 Wc 和 bc。
结果
只有V的情况:没有历史信息、没有未来预测、Controller 只能依据当前画面做决策。 行驶过程中左右摇摆;急转弯容易冲出赛道;驾驶稳定性较差。
加入世界模型(V和M):包含了历史信息、对未来的预测、当前观测 Controller 直接读取 RNN 已经预测好的未来信息。 驾驶更加平稳;能够顺利通过急弯;很少冲出赛道。
梦境
可以将世界模型预测的未来用作下一次的“真实”观测,把训练好的 C 放回这个完全由 M 产生的“幻象梦境”环境中
VizDoom 实验
智能体必须学会躲避房间另一侧怪物发射的火球,这些火球的唯一目的就是击杀智能体。该环境中没有明确的奖励,因此为了模拟自然选择,累积奖励可被定义为智能体在一次展开过程中成功存活的时间步数。环境的每次展开最多运行2100个时间步(约60秒),如果连续100次展开的平均存活时间超过750个时间步(约20秒),则视为任务完成(Paquette, 2016)。
梦境中的学习
作者通过赛车实验,在想能否训练智能体在其自身的梦境中学习策略,并将该策略迁移回实际环境中? 毕竟,我们的智能体并不会直接观察现实,它所看到的只是世界模型允许它看到的内容。
流程
由于我们想要构建一个可以在其中训练智能体的世界模型,这里的 M 模型除了预测下一帧的 zt 之外,还将预测智能体是否在下一帧中死亡(作为一个二元事件 done,或简写为 dt)
总结 Take Cover 实验,采取的步骤如下:
- 从随机策略收集 10,000 次推演数据 。
- 训练 VAE (V) 将每一帧编码为隐向量 z∈R64,并使用 V 将从步骤 (1) 收集的图像转换为隐空间表征 。
- 训练 MDN-RNN (M) 以建模 P(zt+1,dt+1∣at,zt,ht) 。
- 将控制器 (C) 定义为 at=Wc[ztht] 。
- 使用 CMA-ES 求解能够最大化虚拟环境中预期存活时间的 Wc 。
- 在实际环境中使用从步骤 (5) 学习到的策略 。
迁移至真实环境
即使 V 模型不能正确捕获每一帧的所有细节(例如弄对怪物的数量),智能体仍然能够使用学到的策略在真实环境中导航 由于虚拟环境本身甚至无法准确追踪怪物的确切数量,一个能够在更嘈杂、更具不确定性的虚拟噩梦环境中存活下来的智能体,必将在这个原始的、更干净的环境中茁壮成长 。
欺骗世界模型
世界模型会找到一个在动力学模型下看起来不错的策略,但在实际环境中却会失败的策略(比如在梦境学习中通过某种移动来阻止怪物发射火球)
为了解决这个,作者使用了MDN RNN并且调高了温度。
世界模型越“死板”,Agent 越容易钻空子;世界模型保留合理随机性,Agent 才能学到真正能迁移到现实中的策略。
迭代
对于更复杂的任务,需要一种迭代训练过程 。我们需要智能体能够探索它的世界,并不断收集新的观测结果,以便其世界模型能够随着时间的推移而得到改进和完善
迭代训练过程 (Schmidhuber, 2015a) 如下 :
- 使用随机模型参数初始化 M、C 。
- 在实际环境中进行 N 次推演(rollouts) 。将推演期间所有的动作 at 和观测 xt 保存到存储中 。
- 训练 M 以建模 P(xt+1,rt+1,at+1,dt+1∣xt,at,ht),并在 M 内部训练 C 以优化预期奖励 。
- 如果任务尚未完成,则返回步骤 (2) 。
已经证明,这个训练循环的一次迭代就足以解决简单的任务 。对于更困难的任务,我们需要控制器在步骤 2 中主动去探索对改进其世界模型有益的环境区域
其实就是:
- 采集随机数据
- 用采集的随机数据训练M,再训练C
- 用C去实际测试,收集C产生的数据
- 如果任务没完成则用3收集的数据继续训练M和C
世界模型未来除了预测:下一状态(Next State)以及Done(终止状态)还应该预测:Reward(奖励)与Action(动作) 这样世界模型不仅知道:世界如何变化(Dynamics),还知道:Agent 通常如何行动(Policy)以及哪里能够获得高奖励(Reward)。
通过不断地迭代学习:Controller 学会越来越复杂的技能(如走路、抓取等),这些技能可以逐渐被世界模型吸收。 世界模型(M)负责底层技能(如运动控制、环境动力学) 控制器(C)负责高层决策(如导航、任务规划) 形成自然的层次化学习(Hierarchical Learning)。
迭代训练通过"交互—更新世界模型—优化策略"的循环,使世界模型不断吸收新的技能和知识,让控制器专注于更高层次的决策,从而实现持续学习、层次化学习以及自然课程学习。