近年来,很多AI技术的突破都离不开游戏的影响,不论是古老的围棋还是即时战略类的星际争霸都体现着这样的交融。同时,游戏和AI的跨界合作,还在通过算法,生成新的游戏规则上有所展现,从而让机器学习的算法,具有更强的泛化能力。8月3日的 Nature Machine Intelligence 推出的综述论文,先介绍了游戏行业中的“过程生成”(Procedural content generation)这一概念,从现有应用,和机器学习的关系,以及面临的问题,全面阐述了这一新的跨学科研究方向。

1. 让游戏每一次玩都不一样

通过算法,产生游戏中的背景信息,例如游戏中的关卡,任务,环境等,在游戏界被称为“过程生成”。自从1980年首次提出后,该技术在游戏界得到了广泛地应用。从最简单的俄罗斯方块,到我的世界Minecraft这样的开放游戏,都能见到该技术的身影。

在著名的策略类游戏“席德梅尔的文明”系列中,每一局游戏的地图,都会有所不同,正因如此,使得玩家愿意多次玩该游戏。为了保证每局地图不一致,一种做法是在游戏中预设很多地图,另一种做法是通过算法,每次开始时自动生成地图。显然后者能减少游戏所需的计算机存储空间。

图1:游戏《文明6》产生的随机地图

如何在产生上述地图时,既保证每一局游戏的开局都不同,又确保玩家不会由于开局的随机因素,觉得游戏难度发生显著变化。一种可能的生产方式是元胞自动机,通过玩家给定的参数,算法能够从某一点出发,逐步依据游戏设计者预设的规则,逐格扩展,产生新的地图。

2.数据增强,机器学习中的过程生成

在机器学习中,要想提升模型的泛化能力,一种常用的技巧是数据增强(data argumentation),即在有监督学习范式下,通过加入基于现有训练数据集,经过特定转换的模拟数据集,从而扩大训练数据集包含的多样性,进而提升训练得出模型的泛化能力。

具体来看,在猫狗图像分类任务中,可以将原图拉伸,翻转,或者裁剪部分区域,再将新生成的数据和原数据一起进行训练。如此训练出的模型,能够更好的提取猫和狗的本质特征,从而使得模型在新数据集上表现更优,稳健型更强。

在强化学习范式下,通过在训练环境中引入随机因素,例如训练扫地机器人时,每次的环境都有所不同,也可以提升模型的泛化能力。而如果将扫地机器人执行的任务看成一次游戏,那么机器学习中的数据增强,就相当于游戏设计中的“过程生成”。两者都是通过随机数据,让玩家能够透过现象看到本质。

3. 数学化的网络科学

在未来会有哪些突破?

在机器学习成为主流之前,AI领域常用的方法是从一系列可能的解中,通过搜索找出(局部)最优解。将该类方法,应用到游戏生成中,下面是一个典型的案例[1],即自动生成超级马里奥的关卡。

具体方法是将游戏的地图分为微观(mirco),中观(meso)和宏观(marco)模式,算法的目标是根据不同的难度,设定需要得出的对应宏观模式,之后通过搜索中观模式的组合,组成宏观模式,再通过逐个搜索不同的微观模式组合,得到对应的中观模式。

图2:超级马里奥中,不同的微观模式,中观及宏观模式示例图

通过逐层的自下而上的搜索,该算法能够根据最初的游戏地图,生成在统计上呈现出相同特征,进而具有相近游戏难度的全新关卡地图。下图是超级马里奥原版的第一关,和由算法生成的第一关。

图3:真实和生成的游戏地图对比

未来,研究人员和具有科学头脑的政策制定者或许可以利用这些进展,对尚未观测到的复杂网络现象进行定量预测。

4 通过深度学习生成新游戏:

对抗生成网络的例子

对抗生成网络(GAN)是近五年来,深度学习中进展最快的领域之一。如果将生成新的超级马里奥的任务交给GAN,它会怎样完成?18年的ACM论文给出了回答[2]。

图4:深度卷积对抗生成网络结构示意图

该文采用深度卷积对抗神经网络,使用已有游戏地图的一部分,作为训练数据,通过生成器,产生新的游戏地图,再通过判别器,判断生成的游戏地图,是不是和真实地图类似。之后通过在最初的图片中进行修改,据此迭代,不断改进生成器。

图5:从最左的图,随机变化,生成右图的几种可能地图,并随机选一个进行下一轮迭代

由此,使得生成的地图中,先不会诸如出现QQ号码拍卖平台无法跳过的沟等影响可玩性的特征,再逐渐模仿不同难度的游戏关卡中所会出现的障碍物,使得生成的游戏地图具有相近的难度。

相比传统的方法,基于GAN的关卡生成,能够在玩家游戏的过程中,根据玩家的操作,动态地改变下一关游戏的难度,这是传统的基于搜索的方法无法实现的。除此之外,还能按照特定的目标,设计关卡。

图6:最大化和最小化跳跃的关卡

例如,如果想要玩家在游戏中尽可能多的跳跃,通过修改GAN的约束条件,可以生成左图的地图,而若想要最小化跳跃,则可以生成类似右图的关卡。

5 通过强化学习生成游戏

另一类生成游戏关卡的方式,是强化学习。如果要用强化学习生成超级马里奥的地图,算法需要一个估值函数,计算不同游戏图片,距离理想的关卡有多远。和GAN类似,强化学习范式下,同样是从随机的关卡开始,不断改进,通过迭代完善设计。不同的是,由于估值函数的存在,每一次的改变不是随机的,而是有方向的。

图7:强化学习生成游戏的流程图

上图中[3],关键的一点是如何对游戏的设计进行表征,不同的表征,决定了设计出的游戏关卡会具有不同的特征。上图中的估值函数,除了判断相比上一次,本次生成的游戏关卡是不是更优,还会判断生成的关卡是否是“可玩的”,如果是,则停止迭代。

图8:推箱子游戏地图的二维表征

例如推箱子这个游戏,玩家通过上下左右,操纵小人行动,推动箱子到指定的位置,则算通关,上图是推箱子地图的二维矩阵表示。每轮迭代,修改的就是左图的矩阵。

设计游戏关卡的智能体(agent),需要在给定箱子和目标的距离时,让小人走的步数尽可能多,从而提升游戏的难度,这就是前文提到的奖励函数。

而如何判断每张地图需要多少步才能走完,则需要智能体通过搜索完成。如果搜索时,智能体只能记住这一步所走格子和改变的那个格子状态,那么称之为狭窄表征;如果能记住运行方向上的每个格子以及自己改变了那些格子的状态,称之为Turtle式的表征;而如果能记住当前格子周围所有格子的状态,称为宽表征。

图9:相同初始条件下,不同表征生成的游戏关卡难度不同

上图中,最左列是初始的随机游戏地图;之后的三列,分别是不同表征下,生成的游戏关卡。如果将18部以内就能完成的关卡定义为简单难度,那么不同的表征下,产生的简单关卡的比例分别是86.7%,88.3%,以及67.5%,由此说明不同的表征方式会设计出游戏的难度。

在强化学习的框架下进行游戏设计,该文指出了3条经验,一是需要初始条件不同,二是需设定合适的估值函数,三是每次迭代变化的比例要小,以免算法收敛到相近的解,使得生成的关卡大同小异。

6 提升走路机器人的可靠性,让它玩游戏通关

与通过机器学习,提升游戏中关卡生成相对应的,是利用生成的关卡,来提升机器学习模型的鲁棒性。下面的例子,来自Uber的AI实验室[4],该研究的目标是训练一个能够双足站立行走的机器人操控算法。

图10:双足行走的机器人面对的不同类型的环境,例如深谷,斜坡,障碍物等。

传统上,通过进化算法,能够训练操控算法适应不同的环境。但是通过生成一组包含大量斜坡的训练环境,再生成一组包含大量深谷的环境,可以定向地训练操控算法在特定环境下,该如何行走,从而使得算法能够逐个攻克不同环境中面对的障碍。

图11:训练能够持续下台阶,跳过行进路线中深谷的算法示意图

在训练过程中,如果在某类障碍中遇到困难,训练算法,会生成类似的环境副本,让智能体先在该环境副本中学习如何越过障碍,之后,再在原环境中行走。

通过引入环境副本,在相同的计算量下,由于智能体采取了更好的,在环境副本中学到的走路姿势,能够获得更高的得分,并有更大的几率,在挑战更高的路段上走完全程。由此提升了算法的泛化能力。

图12:机器手玩魔方的过程示意图

另一个通过游戏来提升AI泛化能力的例子,来自马斯克的openAI实验室,是训练机器手玩魔方[5],通过强化学习和卷积神经网络,借助玩魔方这样一个封闭环境下的任务,研究者提升了对机械手的控制和手眼协调能力,提升了机械手在实际应用场景下的泛化能力。

在强化学习中,通过生成新的游戏关卡,也可以提升训练的游戏AI的可泛化性[6],对比在单一难度,人类设计的关卡,以及由算法设计的关卡上训练的游戏AI,结果显示,基于算法设计的关卡,需要更少的训练时间,能取得更高的训练精度。

7 过程生成面临的六个挑战与机遇

该综述的最后一部分,讨论游戏规则生成相关研究目前面临着那些挑战。

首先是相比传统的机器学习问题,训练数据集偏小,例如超级马里奥中,只有36个由人手工设计的关卡。

其次是相比生成游戏中的某个组成部分,由算法产生完整的游戏还相对困难。目前较为成熟的生成完整游戏的案例,是基于生成语言模型CPT-2,产生完整的文本式冒险游戏。这是由于一个好的游戏,本身就会相当复杂,并难以使用一个简单的公式来衡量可玩性。

第三点是通过持续的生产新的游戏关卡,让智能体实现终身学习。通过不断改进已学到的策略,过程生成可以让智能体不断适应越来越复杂的环境。

第四点是如何在强化学习范式下,基于过程生成,产生标准的数据集和对应任务金标准。之前的强化学习任务,大多是人类设计的电子游戏。未来,可以让算法设计出新的任务,这些任务会模拟动物及人类在真实环境下所遇到的问题,从而更加准确地能够考察强化学习模型是否学到了人类认知能力的本质。

第五是如何让游戏中的关卡设计,能够不止应用到模拟环境,还能应用到真实场景中。一个脑洞的例子是:通过算法生成类似极品风车的游戏环境,让算法在游戏环境中,先做到尽可能安全的驾驶,之后在训练真实无人驾驶的算法时,借鉴模拟算法所具有的特征。

第六点则是,如何将过程生成的本质,即通过让学习环境多样化,提升智能体的泛化能力,应用到诸如人类学习,神经科学等其他领域。例如未来的智能课堂中,要想做到因材施教,就可以通过自动设计的游戏化交互,提升学生的学习效率。

总结来看,对于应对复杂系统带来的挑战,仿真建模与试错,一个是高屋建瓴的重构出全局特征,另一个是自下而上的生成相应的认知地图。而游戏领域的过程生成,则是打通了上述两条路,通过模仿多主体之间已有的模式,产生更多样化的环境,从而避免试错过程变成了管中窥豹井底观天。

不论对于强化学习,还是有监督学习,引入过程生成,都可以作为一种升级版的数据增强技巧,提升模型的泛化能力。另一方面,在使用机器学习,产生游戏的过程中,所应用的技术,所展现的能力,不止能用于游戏相关的问题,对众多其他机器学习领域的任务都有借鉴意义。

Nature 机器智能综述:AI如何自动生成游戏相关推荐

  1. 人脸照片自动生成游戏角色_ICCV2019论文解析

    人脸照片自动生成游戏角色_ICCV2019论文解析 Face-to-Parameter Translation for Game Character Auto-Creation 论文链接: http: ...

  2. AI可以自动生成绘画吗?分享几款AI绘画软件

    AI绘画热潮来临之前,我在网上看到不少人发了AI绘画的图片,除了画人物,还有画漫画和风景的图片,画面真实和色彩丰富程度让我不敢相信是AI画的,于是就去网上搜索AI可以自动生成绘画吗?在搜索的过程中,我 ...

  3. 利用AI技术自动测试游戏

    1.引子 近年来,游戏AI已从一种"伪智能"迭代成了真正的人工智能.3年前AlphaGo的成功只是证明了AI技术在游戏领域取得了巨大的发展,但另一方面AI技术对整个游戏行业的帮助仍 ...

  4. steam lab用机器学习自动生成游戏TV节目

    他山之石,可以攻玉 " 今天的玉有3个, 我经常会看到一些很好的案例, 就特别想,分享给大家. 同时也欢迎大家留言告诉我,你看到的一些好的案例, 关于设计.算法.产品.商业的都可以 ~范围不 ...

  5. 「谷歌大脑」提出通过对长序列进行摘要提取,AI可自动生成「维基百科」

    原文来源:arXiv 作者:Peter J. Liu.Mohammad Saleh.Etienne Pot.Ben Goodrich.Ryan Sepassi.Łukasz Kaiser.Noam S ...

  6. ai动漫生成软件哪个好?这篇文章告诉你

    随着人工智能技术的不断发展,越来越多的领域开始探索ai技术的应用,绘画领域也不例外,通过ai生成的图像可以作为艺术家们的灵感来源,或者直接作为数字艺术品展示和销售. 除此之外,其他领域也有ai绘画的参 ...

  7. MarioGPT自动生成“超级玛丽”;周鸿祎:ChatGPT可能产生意识;国内版ChatGPT复旦首发,但“非常不成熟”...

    本周,AI业界又有哪些新鲜事? ChatGPT 国内版ChatGPT首发被复旦"抢注",但非常不成熟? 虽然各大厂如火如荼地备战国内版"GPT",但谁也没抢到这 ...

  8. i技术会 | 如何用AI挖掘和生成视频广告点位

    [i技术会]2020.03.12  <常用视频广告算法经验谈>分享会 在视频平台上面,广告出现的位置很多,包括开屏广告,信息流,各个位置的banner等.在这些广告中,视频播放器里面出的广 ...

  9. 美团开放平台SDK自动生成技术与实践

    美团开放平台为整个美团提供了20+业务场景的开放API,为了使开发者能够快速且安全的接入美团开放平台,美团开放平台提供了多种语言的SDK来提高开发者的接入效率.本文介绍了美团开放平台如何自动生成SDK ...

最新文章

  1. 大厂php怎么做前端,大厂前端经典面试问题精选(附答案)
  2. php和android选择器,Android_android 字体颜色选择器(ColorPicker)介绍,primary_text_yellow.xml 复制代码 代 - phpStudy...
  3. evaluate函数使用无效_在Matlab中使用tensorflow (2)
  4. const_cast的使用:添加或去掉const、常量折叠
  5. Joint Consensus两阶段成员变更的单步实现
  6. 软件需求说明书谁负责写_新手入门软件测试需要掌握哪些知识点?
  7. 字符串正反连接java_字符串正反连接(Java实现,超简单)
  8. 有了它,你还想用postman吗
  9. WDS系列之四:自定义安装映像
  10. 微信开发之(四)获取关注后的图文推送信息
  11. error: invalid argument ‘-std=gnu++98‘ not allowed with ‘C‘
  12. 下载蓝盒插件_chrome迅雷下载插件-迅雷下载支持插件下载 v3.1官方版--pc6下载站...
  13. creo数控编程怎么样_creo3.0数控编程加工使用实例视频教程入门到精通 车床编程...
  14. sata电源定义 联想小4pin_SATA硬盘15针供电接口的引脚定义
  15. STM32入门学习 第二天
  16. pymysql:Mysql拒绝从远程访问的解决办法
  17. javaGUI游戏教程--人物控制
  18. Terraform 学习总结(6)—— 基于阿里云平台上的 Terraform 实战
  19. 二次元和穿纱雾网站错误404源码
  20. Android 课设之个人音乐播放器

热门文章

  1. 下一清分日期是几年前_下一清分日期是什么意思
  2. ajax接口一直在重复调用请求是什么原因_为什么RPC超时设置非常重要
  3. 手机经常提示找不到服务器,为什么我的手机显示无法连接到服务器
  4. 04-正则解析+bs4基础爬虫
  5. MySQL的高级运用_MYSQL之SQL高级运用(帮助你高效率编程)
  6. Codeforce 1182B Plus from Picture
  7. CF682C Alyona and the Tree
  8. DOS中判断进程是否存在的方法
  9. 【单词】常见单词含义的辨异(emulator/simulator、hardware/firmware)
  10. Linux,OS X mark工具(目录跳转工具)