欢迎光临散文网 会员登陆 & 注册

矩池云 | 训练AI智能体,实现童年《超级玛丽》通关梦想

2022-06-24 13:51 作者:矩池云  | 我要投稿

在你的童年记忆里,是否有一个蹦跳、顶蘑菇的小人?

这个头戴红色帽子身穿蓝色背带裤的中年大叔叫做马里奥,来自任天堂出版的游戏《超级玛丽》。《超级玛丽》一经发行便火爆全球,成为民级游戏。然而,随着关卡的不断推进,游戏难度逐渐攀升,让不少玩家望而却步。

不过,通过强化学习训练出来的 AI 智能体,可以降低超级玛丽通关的门槛,玩家能够一键通关,并且不损失任何生命值。Github上有一个名为Super-Mario-RL的项目(地址:https://github.com/jiseongHAN/Super-Mario-RL,能帮助玩家实现童年的通关梦想整个项目用 Python完成,在矩池云 www.matpool.com上就可以轻松复现


一、关于强化学习

本次项目依托强化学习(Reinforcement Learning, RL)开展。强化学习是学习样本数据的内在规律和表示层次,最终目标是让机器能够像人一样具有分析学习能力。

以小猫咪为例,我们可以在抚养小猫咪初始,就预设好规则。什么样的行为能够得到猫粮、什么样的行为能够得到小鱼干,从而训练小猫咪更加符合我们的期望,进而成为一只更加适配人类社会的小猫咪。

而落实到算法层面,在《超级玛丽》游戏中,吃蘑菇可以取得较高的分数,那么算法就进一步「强化」这种策略,以期继续取得较好的结果。

《超级玛丽》的强化学习场景可以这么拆解:

  • 机器有一个明确的马里奥角色——代理

  • 需要控制马里奥走得更远——目标

  • 整个游戏过程中需要躲避各种反派角色——环境

  • 躲避反派角色的方法是让马里奥向上跳——行动

  • 走得越远,就会获得越多的积分——奖励

以下内容即为 Super-Marioa-RL项目的复现,不需要繁杂的程序调试,只要跟着教程走下来就能轻松体会通关的乐趣


、分析项目依赖,租用机器

2.1 分析项目依赖环境

由于项目有图像的输出,所以运行过程中还需要VNC server(需要先下载并安装使用,教程如下 https://matpool.com/supports/doc-vnc-connect-matpool/ )。

2.2 在矩池云租用合适的机器

我们进入矩池云,如果你还没有注册过账号,可以先注册一个账号,新注册用户关注并绑定矩池云微信公众号可获赠5元体验金,体验金在租用机器时直接抵扣(本次训练就可以使用)。

矩池云的主机市场提供了非常丰富的GPU选项,今天的项目就选NVIDIA Tesla K80。

点击租用按钮后,我们可以对机器进行配置:

  1. 选择基础镜像,我们直接搜索 Pytorch ,大于1.6即可

  2. 选择好镜像后,我们可以进行其他配置,阅读了文档之后,了解到有图像的输出,所以这时我们要开启 VNC 功能

3.3. VNC 相关配置

机器租借完成后,将 VNC 链接的这部分内容复制

粘贴到建立的新链接的 VNC Server中,点击continue

随后会弹出一个需要填写密码的窗口。

密码就是ssh连接的密码,在租用机器页面可以直接点击复制密码进行复制。

VNC service即可打开但在使用 VNC之前,我们还需要在网页上进行其他准备工作

下载代码、数据及模型

租用好机器后,我们先使用最简单的使用方法,直接点击租用界面的JupyterLab连接,快速使用服务器(在我的租用页面也可以找到类似窗口哦)。

进入JupyterLab页面后,我们先点击Terminal进入终端,并输入下面指令。

我们可以了解一下刚才输入这段代码的含义,它代表着

  • 先进入/mnt目录(矩池云网盘挂载目录)

  • 新建一个文件夹MyCode并进入文件夹(用于存放项目文件)

  • git clone下载开源项目Super-Mario-RL

  • 进入 Super-Mario 项目目录中

这一步为安装所需依赖

四、使用模型和训练

4.1 使用预训练模型测试

我们进入到项目目录。具体方式为,找到名为 mnt 的文件夹,再找到 Super Mario-RL文件夹

然后点击左上角+新建一个Launcher,点击Notebook中的myconda。即可新建一个jupyter notebook文件。

我们可以先使用预训练好的模型来测试使用,测试使用代码官方已经给我们提供好了,可以在官方代码上进行尝试

在官方的代码版本上,我们在原代码基础上,做了一些调整,duel_dqn 文件的调整情况具体如下

(1)我们使用的 enviroment 为 SuperMarioBros-v2。demo 用的是 v0 ,但是 v0 跑的时间非常长,运行期间系统会提示 v3 是最新版本,但是 v3 非常像素化不太适合本次展示;

(2)设置运行 2000 次;

(3)增加输出 loss 和 epoch 等信息

即:

与此相对,eval 文件中涉及的 Bros-v0 也变成 Bros-v2,具体改动点,即在 eval 文件中的本段代码中。

训练代码我们打开 VNC ,打开代码所在的文件夹


右键 打开 Terminal



运行 duel _dqn 文件

运行后,可无视这一条 warning

运行过程比较漫长,前期调试可以适当减少运行步数,查看训练过程则可在文件夹中,右键打开 Terminal。

运行 eval 文件



以下是训练了1460步之后的一个结果,已经跑完了第一关。 



矩池云 | 训练AI智能体,实现童年《超级玛丽》通关梦想的评论 (共 条)

分享到微博请遵守国家法律