欢迎光临秒速赛车官网!
产品分类
联系我们
地址:贵阳市花溪区青岩古镇桐惠路16号
电话:(0851)86612688
传真:(0851)552452
邮箱:ephraim09323@gmail.com

新闻动态

当前位置:主页 > 新闻动态 >

教程 「世界模型」实现一步步让机器掌握赛车和

文章来源: 更新时间:2018/06/01

  

  为了训练控制器,我们可以使用强化学习,利用一种被称为 CMA-ES(协方差矩阵适应—进化策略)的算法。

  如果你使用的是高配置笔记本,你可以在本地运行,但我建议使用 Google 云计算(),这允许你在短时间内使用强大的计算机。

  作者展示了智能体如何不在真实环境的情况下,而在 VAE/RNN 的启发下的梦境(虚拟环境)中学会玩游戏。

  迄今为止,我们只用深度学习方法建立了可以将高维图像压缩成低维潜在空间的 VAE,而 RNN 可以预测潜在空间是怎样随着时间变化而变化的。我们可以通过随机事件数据创建一个同时适用于 VAE 和 RNN 的训练集。

  额外需要的只有 RNN 也要被训练得可以预测在下一个时间步死亡的可能性。这样,VAE/RNN 联合体可以作为环境独立分装,并用于训练控制器。这是「世界模型」的核心概念。

  这也可以简单解释为婴儿学习走路。两者间有惊人的相似之处,但或许比单纯的类比要更加深刻,这一点使它成为真正迷人的研究领域。

  因为 VAE 和 RNN 是独立于做出决策行为的控制器的,我们需要保证遇到不同观察后选择不同行为,并将其存储为训练数据。

  相似的是,在 World Models 这篇文章中,可以从五个高斯分布的任意一个中得出下一个观察的潜在状态。

  这种前瞻性思维就是 RNN 要起到的作用——具体地说就是一个有着 256 个隐藏单元的 LSTM。h 表示隐藏状态的向量。

  在每一个时间步(time step)中,该算法都会被馈送一个观察(一张像素为 64 * 64 的车辆和即时环境的彩色图像),还需要返回接下来采取的一系列行为参数——也就是转向的方向(-1 到 1)、加速度(0 到 1)以及刹车(0 到 1)。

  CMA-ES 的工作原理是:先创建这 867 个参数的多个随机初始化副本(即「群体」)。然后在环境中测试群体中的每一个元素并记录其平均成绩。事实上,秒速赛车计划这与自然选择的原理一样,允许产生最高得分的权重「复制」,并允许产生下一次迭代。

  控制器:基于来自 VAE 的描述(z)和来自 RNN 的当前的隐藏状态(h),我的神经网络下一行为的输出会是 [0.34, 0.8, 0]。

  World Models 的作者写了一个关于其方法的在线的交互解释(),所以在此不再赘述同样的细节,而是要聚焦于这些片段该如何组装在一起的高层次问题上,与真实的驾驶过程进行类比,来直观说明为什么这样的解决方案有意义。

  当你驾驶时,视野中出现的每一个观察都不会让你特别惊讶。你知道如果当前的观察结果说明路前方有左转弯,你就会左转,在你预期中的下一次观察会显示你仍沿着路在前进。

  在训练神经网络的过程中,使用了带有 TensorFlow 后端的 Keras,但是在原文中,作者使用的是原始的 TensorFlow。

  由于输入是维度为 288(=32+256)的向量,输出是维度为 3 的向量,我们有 288*3+1=867 个参数要训练。

  当你在开车过程中做决策时,你不会对视野中的每一个「像素」进行分析——相反,你的大脑会将这些视觉信息浓缩成少量的「潜在」实体,例如道路的平直度、即将到来的弯道以及你相对于道路的位置,你会通过这些信息来决定下一个行为。

  RNN 需要编码来自 VAE 的图像数据(z)和行为(a)作为输入,将编码下一时间步的 VAE 的图像数据作为输出。

  和 VAE 类似,RNN 试图捕获环境中车辆当前状态的潜在理解,但这一次是要以之前的「z」和行为为基础,预测下一个「z」可能是什么样的。

  在这篇文章的写作期间,我成功训练了该智能体,并在训练了 200 代之后得到了 833.13 的平均分。使用 Ubuntu 16.04、18 vCPU、67.5GB RAM 的机器在 Google Cloud 上训练了本文提到的步骤和参数。

  对赛车环境而言,VAE 和 RNN 都可以在随机事件数据上训练——也就是在每一个时间步随机采取的行为产生的观察数据。事实上,我们用了伪随机的行为,这样可以迫使车辆在初始时加速,使其脱离起跑线。

  智能体的初始训练数据只不过是与真实环境的随机互动。通过这种方式,智能体建立了这个世界是如何「运作」的潜在理解——这个世界的自然分组、物理以及智能体的行为会对这个世界产生怎样的影响。

  这会产生 2000 个事件(保存在 10 个批次中),批次从 0 开始。每一个事件最长为 300 个时间步。

  对要访问的 N 个追踪块而言,每一个智能体能得 1000/N 分,而每经过一个时间步会减去 0.1 分。例如,幸运飞艇投注:2017北京最新时事政治:2如果一个智能体要通过 732 帧才能完成追踪,那么得分就是 1000–0.1*732 = 926.8 分。

  我们将建立一个强化学习算法(一个「智能体」),该算法可以很好地在 2D 的赛道上驱动车辆。可以通过 OpenAI Gym()得到这个(赛车)环境。

  与赛车例子中要求的相比,这里有更多依赖包,建议你把每一个包都装好,以备在 Open AI Gym 中进行其他测试,这些测试可能需要额外的依赖包。

  RNN:根据描述(z)和控制器选择在最后的时间步加速(行为)的事实,我会更新我的隐藏状态(h),这样下一个观察才能预测为笔直的道路,但是在视野中有轻微的左转。

  训练 VAE 只需要 obs_data_*.npy 文件。确保已经完成了第 4 步,这样这些文件才会在./data 文件夹中。

  VAE(看着最新的 64*64*3 的观察):汽车前进方向(z)的道路像是一条平直、有轻微左转弯的道路。

  这是一个智能体的例子:在前 200 时间步中选择行为 [0,1,0],然后其他随机……显然这不是很好的行驶策略。

  与 VAE 相似,如果文件夹中没有 weights.h5,--new_model 标记也没有特别说明的话,脚本将从文件中加载权重并继续训练现存模型。这样,你就可以反复训练 RNN。

  给定一个任务,智能体会用这种潜在理解,在无需在真实世界对任务进行测试的情况下,建立最佳策略。因为它会将自己理解的环境的模型作为「场地」,试着解决问题。

  1. 它结合了多种深度/强化学习技术以得到惊人的结果——已知第一个解决当下流行的「赛车」强化学习环境的智能体;

  如果该文件夹中已经存在 weights.h5,并且没有 --new_model 标记,脚本将从这个文件中加载权重再训练已经存在的模型。这样你就可以按批次反复训练 VAE。

  前段时间,由谷歌大脑研究科学家 David Ha 与瑞士 AI 实验室 IDSIA 负责人 Jürgen Schmidhuber(他也是 LSTM 的提出者)共同提出的「世界模型」让人工智能在「梦境」中训练的论文吸引了人们的热烈讨论。本文将带你一步步实现论文中研究的赛车和躲避火球智能体。

  这也是训练后的 VAE 要做的事——将 64*64*3(RPG)的输入图像浓缩为服从高斯分布的 32 维潜在向量(z)。

  论文的作者在训练 2000 代之后得到了 906 的平均分,这是迄今为止该环境下最高的分数,但他们用的配置要更高一点(例如,对数据训练了 10,000 个 episode,群体数量达到 64,64 核的机器,每次试验有 16 个 episode 等)。

  以下代码已经在 Linux(Ubuntu 16.04)进行过测试了——如果你在 Mac 或 Windows 上运行只需改变相关安装包的命令即可。

  正如我在 AlphaZero()一文中所说的,我与文章作者没有任何关系,我只是想分享一些关于他们杰出工作的见解。

  简单地说,控制器就是一个密集连接的神经网络,这个网络的输入是级联的 z(从 VAE 得到的潜在状态——长度为 32)和 h(RNN 的隐藏状态——长度是 256)。这三个输出神经元对应三个行为,且被缩放至适合的范围。

  在另一个环境,DoomTakeCove()中,这篇文章展现了惊人的结果。在这里,目标是移动智能体躲避火球,活得越久越好。

地址:贵阳市花溪区青岩古镇桐惠路16号电话:(0851)86612688传真:(0851)552452

© 2014-2020 Corporate 秒速赛车 版权所有技术支持:秒速赛车官方 黔ICP备15009884号-2 网站地图 网站导航

(0851)86612688