我的世界怎样用指令召唤出906,我的世界怎么用指令召唤一片平原

首页 > 游戏 > 作者:YD1662024-01-03 13:06:10

原作:David Foster

林鳞 栗子 编译自 Medium

量子位 出品 | 公众号 QbitAI

上月,量子位报道了Google Brain的David Ha和“LSTM之父”Jürgen Schmidhuber的论文World Models。论文中,好生厉害~

这篇文章就教你如何用Python和Keras搭建一个属于自己的“梦境修炼AI”。

我的世界怎样用指令召唤出906,我的世界怎么用指令召唤一片平原(1)

开始教程前,先放上原研究的论文地址:

https://arxiv.org/abs/1803.10122

第一步:理解环境

我们要搭建一个能在2D车道环境中开车的强化学习模型,那么这个环境从哪来呢?我推荐OpenAI GYM,可进入下方地址获取。

环境获取地址:

https://gym.openai.com/

在这个任务的每个时间步中,我们需要用64×64像素的车辆和环境的彩图喂算法,并且需要返回下一组操作,尤其当方向(-1到1),加速度(0到1)和制动(0到1)变化时。

这个动作将随后被传递到环境中,之后再返回下一组操作,如此循环。

得分会随着智能体跑过轨道而积累,随着时间步消耗,每个时间步得-0.1分。例如,如果一个智能体用732帧跑完了轨道,那么最后的得分就是1000-0.1×732=926.8分。

下面这张图展示的是一个智能体在前200个时间步中执行的[0,1,0]的动作,但之后画风一转突然变成了随机乱跑……不过这显然不是个好策略。

我的世界怎样用指令召唤出906,我的世界怎么用指令召唤一片平原(2)

OK第一步已经完成,我们接下来的任务是,训练智能体理解它周围环境的信息,确定下一步的最佳行动。

第二步:解决方案

开始第二步前先给大家推荐我们今天这篇论文的在线交互版~

交互版地址:

https://worldmodels.github.io/

接下来我将顺着上面的这个方案,重点其中的几部分是怎样组合起来的。这样吧,我们将虚拟环境与真实开车情况做对比,直观理解一下这个解决方案。

这个方案由三部分组成,每一部分都需要单独训练:

一种变分自编码器(VAE)

想象一下,当你在开车的同时考虑别的事情时,你不会分析视野中的每个“像素”。你的大脑会自动将视觉信息压缩成更少的“本征”实体,如道路的弯曲程度、即将到来的转弯和相对于道路的位置,指挥下一步动作。

这就是VAE要做的——将64×64×3(RGB)的输入图像遵循高斯分布压缩成一个32维的本征矢量latent vector(z)。

这一步非常重要,现在对智能体周围环境的表示变得更小了,因此学习过程将变得更加高效。

带混合密度网络输出层的循环神经网络(MDN-RNN)

如果你的决策中没有MDN-RNN组件,那么开车时可能是这样的情景。

我的世界怎样用指令召唤出906,我的世界怎么用指令召唤一片平原(3)

当你在开车时,每个场景都不会完全出乎你的意料。在我们这个程序里,这种前瞻性的思考由RNN完成,在我们这个例子中,LSTM中总共有256个隐藏单元,这个隐藏状态的向量由h表示。

和VAE相似,RNN也试图对汽车当前在环境中的状态建立一个“本征”理解,但这一次带着一个目标:基于之前的“z”和之前的动作,预测下一个“z”可能是什么样子。

MDN输出层仅允许出现下一个“z”从任何一个高斯分布中提取的情况。

我的世界怎样用指令召唤出906,我的世界怎么用指令召唤一片平原(4)

首页 12345下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.