别的AI还在打游戏,这个AI已经当上“超级马里奥”游戏策划了|GECCO最佳论文

AI打游戏已经不是什么新鲜事了,“沉迷”Dota 2、星际争霸、LOL的AI一个接一个的出现。

但是你也许不知道,相比这些“游戏玩家”AI,还有一位优秀的AI,直接当起了“游戏策划”,做的还是脍炙人口的“超级马里奥”。


超级马里奥:无限关卡

这位“策划大大”诞生在由一个六位研究者组成的团队中,成员来自多特蒙德大学、美国西南大学、伦敦大学玛丽皇后学院、加利福尼亚大学及哥本哈根IT大学,它能用生成对抗网络(GAN)自动“设计”海量的超级马里奥关卡。

并且,这个超级马里奥关卡策划AI还能充分保证新关卡的可玩性,让每个关卡在开始的时候都相对简单,而后逐渐增加难度,保证玩家“沉迷游戏,无法自拔”。

马里奥策划AI成长史

马里奥GAN的工作流程大概长这样:



image


△ 马里奥GAN原理图
首先,GAN学习现有的超级马里奥关卡(图上黄色部分),get到关卡策划这一技能后,生成网络开始生成关卡,然后将“作业”案例提交给判别网络,由判别网络进行把关,判断“作业”是否为一个合格的马里奥关卡。

不合格的“作业”将被打回去重做,直到这一关合格为止。

神经网络如何识别游戏

GAN学习的并不是每一关的画面,而是用专有符号系统表示的“游戏地图”。地图以“方块”为单位——有金币的方块、可以顶碎的砖块、当地基的砖块、管道的砖块等,游戏地图中的每个方块都有独特的表示方式,比如怪物方块编号为5,用大写的E来代指。

image


△ 游戏地图方块对照表


这样,所有的游戏地图都可以用一个符号的矩阵来表示,比如,下面这个游戏地图中:


image

我们按照方块把每个元素划分开,并且加以不同的表达方式:

image

地板是0,怪物是0,右侧的“山上”可以被顶坏的“天梯”则是1。另外,由于管道占了不只一个方块,所以管道口的左右半截分别用单引号代指,用6、7表示,而管道身体的左右半截用方括号代指,用8、9表示。如果某个格子是空气,什么都没有,则用2表示。

所有的学习和生成系统,都是基于这样的矩阵进行的。这套系统又被称作视频游戏关卡语料库(Video Game Level Corpus,VGLC),每一个方块都像图像处理中的像素一样,能够被神经网络解析或生成。

难度升级大法——LVE

正常的关卡游戏都有一个特点——每一关都比前面那一关难一点。

超级马里奥也不例外。人类游戏策划可以控制每一关的大致难度,但AI怎么控制呢?这要倚仗**潜变量进化(latent variable evolution,LVE)的方法。

LVE由纽约大学的Philip Bontrager等人在2017年提出,具体可以跳转arXiv:1705.07386。

在LVE的帮助下,机器可以生成越来越难的关卡,比如,像下面这张图一样(关卡略长,请把手机横过来看):

image




像这样,从开头的“一马平川”到出现管道、山沟、山丘和怪物,直到怪物密布、沟壑纵横,整个过程是越来越难的。

送进DCGAN训练

训练的过程使用的是深度卷积生成对抗网络(Deep Convolutional GAN,DCGAN),使用WGAN算法进行训练。


image

△ DCGAN生成网络构架


image

△ DCGAN判别网络构架


然而,生成结果并不100%完美

训练后的GAN生成的结果究竟如何呢?

好坏参半。

有的部分岁月静好,除了个别小困难之外,玩家可以轻松通过:

image


image



但是,也有下面这种奇葩地形,蜀道之难难于上青天啊!

image

甚至还会出现让人退游的神秘管道:


image

请问管子君是异次元穿越来的嘛?

image




没办法,GAN一直都是这么皮。所以,研究者们还准备做进一步的优化,以期待在未来可以让GAN生成永远玩不完的超级马里奥。

不完美,一样拿奖

虽然马里奥GAN的生成结果并不完美,但这并不妨碍它拿奖啊。

毕竟,在人类用计算机生成马里奥游戏关卡的历史上,这可是个巨大突破呢。

马里奥AI锦标赛(http://www.marioai.org/)是一个在2009-2012年期间举办过几届的比赛,专门生成马里奥关卡。在这项赛事中,虽然科学家们一直致力于创造出最好的自动生成马里奥关卡的算法,但实际绝大多数时候,参赛者依然需要手动设置一些参数。

而GAN兴起后,AI生成马里奥关卡再也不需要进行任何手动了,程序员们可以和手动设置参数说bye-bye了。

因此,这篇论文也拿到了GECCO 2018的最佳论文。

传送门全家桶

马里奥GAN已经开源,量子位照例附上arXiv和github地址,欢迎自取~

论文:Evolving Mario Levels in the Latent Space of a Deep Convolutional Generative Adversarial Network
作者:Vanessa Volz, Jacob Schrum, Jialin Liu, Simon M. Lucas, Adam Smith, Sebastian Risi
GECCO 2018 Best Paper Award
arXiv:
https://arxiv.org/abs/1805.00728
data:
https://github.com/TheVGLC/TheVGLC
github:
https://github.com/TheHedgeify/DagstuhlGAN

原文发布时间为:2018-07-27
本文来自云栖社区合作伙伴“量子位”,了解相关信息可以关注“量子位”。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/451065.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单点登录的三种实现方式

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,…

java对象占用内存大小?

一个不包含任何内部成员变量的空Object大约占33byte,若增加成员变量,则增加相应大小的内存占用。 测算方式:设置jvm的堆大小为1m,在堆中不停new不含任何成员变量的OOMObject对象,直到堆内存溢出。如下图,在…

Java程序员面试中的多线程问题

很多核心Java面试题来源于多线程(Multi-Threading)和集合框架(Collections Framework),理解核心线程概念时,娴熟的实际经验是必需的。这篇文章收集了 Java 线程方面一些典型的问题,这些问题经常被高级工程师所问到。 0.Java 中多线程同步是什…

单点登录原理与简单实现

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 一、单系统登录机制 1、http无状态协议 web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏…

java接口类支持多继承

一个类只能extends一个父类,只能有一个父类,但可以implements多个接口。java通过使用接口的概念来取代C中多继承。与此同时,一个接口则可以同时extends多个接口,却不能implements任何接口。Java中的接口是支持多继承的。

xmind-HTTP协议

转载于:https://www.cnblogs.com/margot921/p/9764788.html

弹性布局

弹性布局 一、Flex布局是什么? Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。任何一个容器都可以指定为Flex布局。 二、基本概念 采用Flex布局的元素,称为Flex容器(flex container&…

解决dataTable 报错:cannot read property “style“ of undefined

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 其实这错,我之前也遇到过,只是太久了,没有记录下来, 今天看到群里朋友也遇到这个错误&a…

万恶之源 - Python基础数据类型一

整数 整数在Python中的关键字用int来表示; 整型在计算机中运于计算和比较 在32位机器上int的范围是: -2**31~2**31-1,即-2147483648~2147483647 在64位机器上int的范围是: -2**63~2**63-1,即-9223372036854775808&…

jackson/fastJson boolean类型问题

1.我们以Person对象举个栗子,person有三个属性。name,age和isGay Data public class Person {public Person(String name, int age, boolean isGay) {this.name name;this.age age;this.isGay isGay;}private String name;private Integer age;priva…

狗窝里的小日子 ...

来,把平时作的菜菜整理下下: 1. 2. 3. 4. 5. 6. 7. 8.

Android直接用手机打包apk!

你没有看错,用手机浏览器访问Jenkins,就可以打包apk,并生成下载二维码,发送邮件通知测试人员下载,从此解放双手,告别打包测试。先上本人手机邮箱收到的打包成功通知效果图: 废话少说&#xff0c…

java中byte、short、char、boolean实际都是按照int处理的!

byte、char、short、boolean四种类型在汇编期或运行期间采取和int类型一样的存储方式,在计算时会先转换为int类型,后进行计算。所以两个short类型数据做算数运算,结果却为int类型。这主要是因为jvm的字节码为了简洁高效,设计时只使…

狗窝里的小日子- 2 ...

来,把平时作的菜菜整理下: 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.

优秀程序员必备素质——快速调试

你是否有过这些经历: 1.代码敲完了,刚想松口气,一运行程序,满满的Bug。 2.找啊找啊找,怎么找都找不到哪里出了问题。 3.调试了半天出不来,就开始便得心烦气躁。 4.一天连一个Bug也没调出来,…

Java程序编译运行过程

整体流程 1.首先由源程序文件编译成class文件。注意这里的源程序并不仅限于java程序,其他语言如果能够编译成class文件,并且符合jvm规范也能够在jvm上运行。 2.jvm将class文件拷贝到内存,解释成相应的机器语言运行。我们常用的hotspot虚拟机…

【TeeChart .NET教程】(七)使用函数

2019独角兽企业重金招聘Python工程师标准>>> 上一篇:【TeeChart .NET教程】(六)使用系列 【下载TeeChart.Net最新版本】 (一)功能类型 1.1 功能类型 TeeChart Pro功能是一个系列,几乎可以是任何…

Django的简介

一.MTV模型 Django的MTV模式: Model(模型):和数据库相关的.负责业务对象与数据库的对象(ORM) Template(,模板):放所有的HTML文件 模板语法:目的是将变量(数据库内容)如何巧妙的镶嵌到HTML页面中 View(视图):负责业务逻辑,并在适当的时候调用Model和Template 此外Django还有一个…

狗窝里的小日子- 3 ...

来,把平时作的菜菜整理下: 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.

5种流行的Linux发行版:你更喜欢哪一个呢?

现如今,对于各种类型的用户(如桌面用户、服务器管理员、图形设计者等)而言Linux已经成为一种最流行的操作系统。Linux是免费且开源的,任何人都可以建立和编译它的源代码,并将它分发给别人。这就是为什么Linux会有很多个…