AI打游戏已经不是什么新鲜事了,“沉迷”Dota 2、星际争霸、LOL的AI一个接一个的出现。
但是你也许不知道,相比这些“游戏玩家”AI,还有一位优秀的AI,直接当起了“游戏策划”,做的还是脍炙人口的“超级马里奥”。
超级马里奥:无限关卡
这位“策划大大”诞生在由一个六位研究者组成的团队中,成员来自多特蒙德大学、美国西南大学、伦敦大学玛丽皇后学院、加利福尼亚大学及哥本哈根IT大学,它能用生成对抗网络(GAN)自动“设计”海量的超级马里奥关卡。
并且,这个超级马里奥关卡策划AI还能充分保证新关卡的可玩性,让每个关卡在开始的时候都相对简单,而后逐渐增加难度,保证玩家“沉迷游戏,无法自拔”。
马里奥策划AI成长史
马里奥GAN的工作流程大概长这样:
△ 马里奥GAN原理图
首先,GAN学习现有的超级马里奥关卡(图上黄色部分),get到关卡策划这一技能后,生成网络开始生成关卡,然后将“作业”案例提交给判别网络,由判别网络进行把关,判断“作业”是否为一个合格的马里奥关卡。
不合格的“作业”将被打回去重做,直到这一关合格为止。
神经网络如何识别游戏
GAN学习的并不是每一关的画面,而是用专有符号系统表示的“游戏地图”。地图以“方块”为单位——有金币的方块、可以顶碎的砖块、当地基的砖块、管道的砖块等,游戏地图中的每个方块都有独特的表示方式,比如怪物方块编号为5,用大写的E来代指。
△ 游戏地图方块对照表
这样,所有的游戏地图都可以用一个符号的矩阵来表示,比如,下面这个游戏地图中:
我们按照方块把每个元素划分开,并且加以不同的表达方式:
地板是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的帮助下,机器可以生成越来越难的关卡,比如,像下面这张图一样(关卡略长,请把手机横过来看):
像这样,从开头的“一马平川”到出现管道、山沟、山丘和怪物,直到怪物密布、沟壑纵横,整个过程是越来越难的。
送进DCGAN训练
训练的过程使用的是深度卷积生成对抗网络(Deep Convolutional GAN,DCGAN),使用WGAN算法进行训练。
△ DCGAN生成网络构架
△ DCGAN判别网络构架
然而,生成结果并不100%完美
训练后的GAN生成的结果究竟如何呢?
好坏参半。
有的部分岁月静好,除了个别小困难之外,玩家可以轻松通过:
但是,也有下面这种奇葩地形,蜀道之难难于上青天啊!
甚至还会出现让人退游的神秘管道:
请问管子君是异次元穿越来的嘛?
没办法,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
本文来自云栖社区合作伙伴“量子位”,了解相关信息可以关注“量子位”。