用 TensorFlow 训练 Doom 机器人

2017 年 9 月 28 日 Datartisan数据工匠 Litwintschik

点击上方

Datartisan数据工匠

可以订阅哦!

作者:Mark Litwintschik
本文地址:http://tech.marksblogg.com/tensorflow-vizdoom-bots.html


ViZDoom 是一个 AI 研究平台,允许你训练机器人来玩 Doom,这是 1993 年最初由 id Software 发布的经典第一人称视角射击游戏。ViZDoom 使用一款开源 Doom 引擎 ZDoom 与游戏进行交互。


ViZDoom 包含了一系列用 C ++,Java,Lua 和 Python 编写的示例机器人。在许多情况下,模型本身依赖于各种潜在的深度学习库,如 TensorFlow 和 Theano。


使用 ViZDoom,机器人将针对场景进行训练。ViZDoom 在发布源代码中包含几种场景。场景定义了 Doom 地图,机器人可用的控件(如左转,攻击等),玩家模式和技能水平。


在这篇博文中,我将通过设置 ViZDoom 和 TensorFlow,并训练机器人在 Doom 中扮演恶魔。


ViZDoom 启动运行


以下是在全新安装的 Ubuntu Desktop 14.04.4 上运行。通常我使用了分布式服务器,但是我想看到机器人在完成训练后玩游戏。


我将使用 Google 的深度学习框架 TensorFlow 进行机器人培训。为了方便起见,我将描述如何使用 CPU 运行所有内容,但是如果要使用 GPU 进行训练,那么请进一步了解参阅基于 GTX 1080 的 TensorFlow 博客,以 GPU 为中心的安装说明。在许多情况下,TensorFlow 将在 GPU 上比常规桌面 CPU 快一至二个数量级。


我正在使用的机器配置 Intel Core i5 4670K,频率为 3.4 GHz,32 GB DDR3 内存,SanDisk SDSSDHII960G 960 GB SSD 驱动器和 Nvidia GeForce GTX 1080 显卡。 首先,我将安装各种包依赖。

然后我将设置 Java 的主文件夹。

ViZDoom 是用 Python 编写的,所以我将创建一个虚拟环境并激活它。

然后我将安装五个基于 Python 的依赖。其中包括 TensorFlow 的分布式 CPU 驱动的 wheel。如果要使用 CUDA 支持的 GPU 加速版本,有一个单独的分布式。

然后,我将克隆 ViZDoom git 存储库,构建 Python 模块并进行安装。

基于 TensorFlow 的模型通常与 CPU 和 GPU 无关,但如果你使用 CPU 驱动的分布式 TensorFlow 进行训练,则可能会看到警告:所使用的 wheel 没有为你的 CPU 进行优化编译。如果你正在运行第四代或更高版本的 Intel Core i5 CPU,则将缺乏对 SSE3,SSE4.1,SSE4.2,AVX 和 FMA 指令的支持。


训练 Doom 机器人


有一个示例模型 「learning_tensorflow.py」 位于 examples/python 文件夹中,该文件夹将加载机器人在空房间的场景,一个敌人在另一端。机器人有能力左右移动攻击。机器人基于在比赛时间结束之前能够快速杀死对手的得分。


以下是此方案的配置文件:

下面花了 14 分钟训练机器人。

一旦训练完成,底层的开源 Doom 引擎 ZDoom 开始并且可以看到机器人在 10 局不同的游戏中对付敌人。


机器人每回合拥有 50 发弹药,并给予 300 个游戏动作来杀死单个恶魔。在这种情况下,恶魔并没有反抗,也没有太大的动作。不幸的是,即使有这么好的设置,在超过 20% 的游戏中,机器人很少杀死恶魔。以下是10场比赛的得分。


保卫中心


ViZDoom 附带的其他场景是「保卫中心」场景,其中机器人在一个竞技场中是静止的,只允许左右转动并进行攻击。有一列的敌人会稳定地接近机器人,在敌人攻击之前有时间杀死他们。ViZDoom 的主要开发者之一,Michał Kempka 上传了这种情况下视频的到 YouTube。


在我的 GTX 1080 上使用 GPU 加速 TensorFlow 分布式来训练机器人之前,我修改了以下五行代码的示例 /python/ learning_tensorflow.py。训练了41分钟才能完成。

每杀死一个敌人,机器人获得一分,并且如果死亡,它会失去一分。每轮有 26 发弹药。在这过程中,我注意到机器人开始非常乱开枪,它的弹药库消耗有一点太快,遗漏一些恶魔。它值得在射击时瞄准目标。


十次运行后,机器人死亡前平均每场杀死 5.9 名恶魔,


更多课程和文章尽在微信号

「datartisan数据工匠」



登录查看更多
0

相关内容

Google发布的第二代深度学习系统TensorFlow
一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
斯坦福2020硬课《分布式算法与优化》
专知会员服务
117+阅读 · 2020年5月6日
《强化学习—使用 Open AI、TensorFlow和Keras实现》174页pdf
专知会员服务
136+阅读 · 2020年3月1日
TensorFlow 2.0深度强化学习指南
云栖社区
18+阅读 · 2019年2月1日
TF Boys必看!一文搞懂TensorFlow 2.0新架构!
引力空间站
18+阅读 · 2019年1月16日
基于TensorFlow的深度学习实战
七月在线实验室
9+阅读 · 2018年4月25日
TensorFlow神经网络教程
Python程序员
4+阅读 · 2017年12月4日
发布TensorFlow 1.4
谷歌开发者
7+阅读 · 2017年11月23日
详解TensorForce: 基于TensorFlow建立强化学习API
机械鸡
5+阅读 · 2017年7月22日
ViZDoom Competitions: Playing Doom from Pixels
Arxiv
5+阅读 · 2018年9月10日
Arxiv
6+阅读 · 2018年4月24日
VIP会员
相关VIP内容
一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
斯坦福2020硬课《分布式算法与优化》
专知会员服务
117+阅读 · 2020年5月6日
《强化学习—使用 Open AI、TensorFlow和Keras实现》174页pdf
专知会员服务
136+阅读 · 2020年3月1日
相关资讯
TensorFlow 2.0深度强化学习指南
云栖社区
18+阅读 · 2019年2月1日
TF Boys必看!一文搞懂TensorFlow 2.0新架构!
引力空间站
18+阅读 · 2019年1月16日
基于TensorFlow的深度学习实战
七月在线实验室
9+阅读 · 2018年4月25日
TensorFlow神经网络教程
Python程序员
4+阅读 · 2017年12月4日
发布TensorFlow 1.4
谷歌开发者
7+阅读 · 2017年11月23日
详解TensorForce: 基于TensorFlow建立强化学习API
机械鸡
5+阅读 · 2017年7月22日
Top
微信扫码咨询专知VIP会员