世界模型的解读

论文基本信息

  1. 论文名:World Models

  2. 论文链接:https://arxiv.org/pdf/1803.10122.pdf

  3. 论文源码:

  1. 关于作者:

    • David Ha:
    • Jurgen Schimidhuber: LSTM之父,无需多言
  2. 关于笔记作者:

    • 朱正源,北京邮电大学研究生,研究方向为多模态与认知计算。

论文推荐理由

通过探索并且建立流行的强化学习环境的生成神经网络模型。世界模型可以在无监督的情况下快速训练,以学习环境的压缩时空表示。通过使用从世界模型中提取的特征作为Agent的输入,可以训练一个非常紧凑和简单的策略来解决所需的任务。甚至可以训练Agent完全在它自己的世界模型所产生的中,并将这个策略转移回实际环境中。

时代背景:可以预见的寒冬 —- Yann Lecun

  • 深度学习缺少推断能力:关于世界的常识与对于任务背景的认知
  • 从零开始学习真的很低效:深度学习需要一个记忆模块(预训练)
  • 自监督学习(Learn how to learn)

世界模型

论文写作动机

  1. 哲学问题:人类究竟如何认识世界?
    人类通过有限的感知能力(眼睛、鼻子、耳朵、皮肤),逐渐建立一个自己的心智模型。人类的一切决策和动作则均根据每个人自己的内部模型的预测而产生。

  2. 人类如何处理日常生活的信息流?
    通过注意力机制学习客观世界时空方面的抽象表达。

  3. 人类的潜意识如何工作?
    以棒球为例子,击球手在如此短的时间(短于视觉信号到达大脑的时间!)内需要作出何时击球的动作。
    人类可以完成击球的原因便是因为人类天生的心智模型可以预测棒球的运动路线。

  4. 我们是否可以让模型根据环境自觉建立特有的模型进行自学习?

  5. Jurgen历史性的工作总结:强化学习背景下的RNN-based世界模型!

模型细节

总览Agent模型

  1. 视觉感知元件:压缩视觉获取到的信息/环境表征

  2. 记忆元件:根据历史信息对客观环境进行预 测

  3. 决策模块:根据视觉感知元件和记忆元件选择行动策略

VAE(V) Model

Agent通过VAE可以从观察的每一帧中学习出抽象的、压缩的表示。

MDN-RNN(M) Model


其中下一时刻的预测$z{t+1}$使用概率的形式表示为$P(z{t+1}|a_t,z_t,h_t)$,其中$a_t$是在$t$时刻的动作。
并且在采样阶段,通过调整温度参数$\tau$来控制模型的模糊度。(这个参数对后续训练控制器$C$十分有效)

模型最上方的MDN表示Mixture Density Network,输出的是预测的z的高斯混合模型。

Controller(C) Model

这个模块用来根据最大累计Reward决定Agent下一个时刻的行动。论文中故意将这个模块设置的尽量小并且简单。

因此控制器是一个简单的单层线性模型:
$$a_t=W_c[z_t h_t]+b_c$$

特别指出,优化控制器参数的方法不是传统的梯度下降,而是Covariance-Matrix Adaptation Evolution Strategy

结合三个模块

下面的流程图展示了$V$、$M$和$C$如何与环境进行交互:首先每个时间步$t$原始的观察输入由$V$进行处理生成压缩后的$z(t)$。随后$C$的输入是$z(t)$和$M$的隐状态$h(t)$。随后$C$输出动作矢量$a(t)$影响环境。$M$以当前时刻的$z(t)$和$a(t)$作为输入,预测下一时刻的隐状态$h(t+1)$。

在代码中,对$M$模块的输入有很多种方式。我不太认同图中把$C$选择的动作也当做$M$的输入。

通过伪代码表示模型:

1
2
3
4
5
6
7
8
9
10
11
12
def rollout(controller):
obs = env.reset()
h = rnn.initial_state()
done = False
cumulative_reward = 0
while not done:
z = vae.encode(obs)
a = controller.action([z, h])
obs, reward, done = env.step(a)
cumulative_reward += reward
h = rnn.forward([a, z, h])
return cumulative_reward

实验设计1

两个实验的环境均选自OpenAI Gym

实验环境

CarRacing-v0(Car Racing Experiment)

动作空间有

  1. 左转
  2. 右转
  3. 加速
  4. 刹车

实验实现流程

  1. 根据随机的策略收集10,000次游戏过程
  2. 根据每个游戏过程的每一帧训练VAE模型,输出结果为$z\in \mathcal{R}^{32}$
  3. 训练MDN-RNN模型,输出结果为$P(z_{t+1}|a_t,z_t,h_t)$
  4. 定义控制器(c),$a_t=W_c[z_t h_t]+b_c$
  5. 使用CMS-ES算法得到最大化累计Reward的$$W_b$与$b_c$

模型参数共有:

实验结果

  1. 只添加V Model(VAE)
    如果没有M Model(MDN-RNN)模块,控制器的公式便为:$at=W{c}z_t+b_c$。
    实验结果表明这会导致Agent不稳定的驾驶行为。
    在这种情况下,尝试控制器添加一层隐含层,虽然实验效果有所提升,但是仍然没能达到很好的效果。

  2. 世界模型完全体(VAE+MDN-RNN)
    实验结果表明,Agent驾驶得更加稳定。
    因为$h_t$包含了当前环境关于未来信息的概率分布,因此Agent可以向一级方程式选手和棒球手一样迅速做出判断。

  3. 世界模型与其他模型的对比:

  4. 对世界模型当前状态$z_{t+1}$进行可视化

    上图将$\tau$设置为0.25(这个参数可以调节生成环境的模糊程度)

实验设计2

我们是否可以让Agent在自己的梦境中学习,并且改变其对真实环境的策略
如果世界模型对其目的有了充分的认识,那么我们就可以使用世界模型代替Agent真实观察到的环境。(类比我们下楼梯的时候,根本不需要小心翼翼地看着楼梯)
最终,Agent将不会直接观察到现实世界,而只会看到世界模型它看到的事物。

实验环境

VizDoom Experiment

游戏目的是控制Agent躲避怪物发出的火球。

实验实现流程

模型的M Model(MDN-RNN)主要负责预测Agent下一时刻(帧)是否会死亡。
当Agent在其世界模型中进行训练的时候,便不需要V Model对真实环境的像素进行编码了。

  1. 从随机策略中选取10,000局游戏(同实验一)
  2. 根据每次游戏的每一帧训练VAE模型,得到$z\in \mathcal{R}^{64}$($z$的维度变成了64),之后使用VAE模型将收集的图像转换为隐空间表示。
  3. 训练MDN-RNN模型,输出结果为$P(z{t+1},d{t+1}|a_t,z_t,h_t)$
  4. 定义控制器为$a_t=W_c[z_t h_t]$
  5. 使用CMA-ES算法从世界模型构建的虚拟环境中得到最大化累计生存时间的$W_c$

模型的参数共有:

模糊化世界模型

通过增加模糊度参数$\tau$,会使得游戏变得更难(世界模型生成的环境更加模糊)。
如果Agent在高模糊度参数表现的很好的话,那么在正常模式下通常表现的更好。

也就是说,即使V model(VAE)不能够正确的捕捉每一帧全部的信息,Agent也能够完成真实环境给定的任务。

实验结果表明,模糊度参数太低相当于没有利用这个参数,但是太高的话模型又相当于”近视“了。因此需要找到一个合适的模糊度参数值。

总结

泛化:迭代式训练程序

  1. 随机初始化M Model(MDN-RNN)和C Model(Controller)的参数
  2. 对真实环境进行N次试验。保存每次试验的动作$a_t$和观察$x_t$
  3. 训练M Model(MDN-RNN),得到$P(x{t+1},r{t+1},a{t+1},d{t+1}|x_t,a_t,h_t)$;训练C Model(Controller)并且M中的最优化期望rewards。
  4. 回到第2步如果任务没有结束

这个泛化程序的特点是从M model中不仅仅要得到预测的观察$x$和是否结束任务$done$,

一般的seq2seq模型,倾向于生成安全、普适的响应,因为这种响应更符合语法规则,在训练集中出现频率也较高,最终生成的概率也最大,而有意义的响应生成概率往往比他们小。通过MMI来计算输入输出之间的依赖性和相关性,可以减少模型对他们的生成概率。

从信息到记忆:海马体的魔术

神经科学的研究(2017 Foster)发现了海马体重映现象:当动物休息或者睡觉的时候,其大脑会重新放映最近的经历。并且海马体重映现象对巩固记忆十分重要。

注意力:只关心任务相关的特征

神经科学的研究(2013 Pi)发现,主要视觉神经元只有在受到奖励的时候才会被从抑制状态激活。这表明人类通常从任务相关的特征中学习,而非接收到的所有特征。(该结论至少在成年人中成立)

未来的展望

当前的问题主要出现在M Model(MDN-RNN)上:受限于RNN模型的信息存储能力。人类的大脑能够存储几十年甚至几百年的记忆,但是神经网络会因为梯度消失导致训练困难。

如果想让Agent可以探索更加复杂的世界,那么未来的工作可能是设计出一个可以代替MDN-RNN结构的模型,或者开发出一个外部记忆模块

引用与参考

  1. https://arxiv.org/pdf/1803.10122.pdf
请zzy824喝杯咖啡
0%