作者 | 杨晓凡
编辑 | 唐里
今天我们来谈和电脑游戏相关的一个新 AI。
对许多游戏瘾不那么大、不那么熟悉游戏中的套路的人来说,上手一个新游戏的过程可能是惴惴不安的、容易晕头转向的,一旦碰到玩法变化比较大的游戏,就会说不准游戏中有哪些重要的规则,也不知道自己是否注意到了所有有用的信息。
一则听起来令人欣慰的消息是,AI 也是这样的。基于深度强化学习的智能体在游戏中探索学习的时候,同样是没有目的、没有章法地「瞎操作」、「胡乱试」;有时候学到了一些游戏的章法,就能得到更高的成绩;也有时候智能体甚至学会的是如何利用游戏中的 bug 来刷分,但它也总是没办法再描述出来它学到的东西是什么。
在纽约大学的一篇新论文《Automatic Critical Mechanic Discovery in Video Games》(在电脑游戏中自动寻找关键游戏机制,arxiv.org/abs/1909.03094)中,作者们在这方面带来一个小突破。它针对的问题就是,让智能体发现能带来好的游戏表现的重要机制、重要规则,不仅可以教人类玩游戏,也可以用来让 AI 获得更好的游戏表现。

怎么让 AI 理解游戏

对人类来说,玩电子游戏这样的复杂任务总可以拆分成一系列不同的小任务,每个小任务就有各自的明确的目标。比如要进入某个房间,就可以拆分成找到钥匙、挪开门口的障碍物、来到门口、打开门几个步骤。这种把一个任务拆分成多个小任务的方式既是人类的本能和常识,也是运动规划论文、强化学习论文中常常用到的解决问题思路。(OpenAI 的这项层级强化学习研究就是一个例子。)在玩游戏的过程中,玩家们需要一面探索猜测,发现游戏中有用的机制,一面利用这些机制帮助自己达到目标。而对这种模式不熟练的玩家,就可以让教学 AI 来帮帮忙;玩游戏的 AI 更可以利用这些信息获得更好的表现。
在《Automatic Critical Mechanic Discovery in Video Games》这篇论文中,作者们设计了一个能够自动发现「关键游戏机制」的系统。它基于 GVGAI (General Video Game Artificial Intelligence,通用电子游戏 AI)框架,能够从游戏读取 VGDL,同时也读取游戏中的进度(来自人类玩家或者智能体玩的过程)。
AI 科技评论注:GVGAI 框架是一个为了研究 AI 系统在游戏中的表现而设计的通用开发和实验框架,其中的游戏通过 VGDL 语言(Video Game Description Language)描述。这种语言简单、紧凑,可以被人类读懂,但同时也具有足够的表达能力,可以用来创建各种简单的 2D 游戏。GVGAI 框架中有的游戏是吃豆人(Pacman)、推箱子(Sokoban)之类的经典游戏的重现,也有一些是全新设计的游戏。用 VGDL 语言编写游戏也不难,只需要描述游戏中元素的行为、元素之间触碰时会发生什么,以及如何判定游戏的输赢。)
记录游戏进度的是为了追踪游戏中所有的不同机制都是什么时候被触发的。这个系统会记下每种机制首次出现的状况,记录精度达到首次在屏幕上渲染出现时是第几帧。利用描述游戏的 VGDL 语言信息以及一系列玩游戏时记录下的游戏进度,这个系统会尝试建立当前游戏的游戏机制信息网,也就是它对这个游戏中的各种机制和依赖的理解。这个过程利用了曾经在 AtDelfi 中用到的解析器,它能把 VGDL 语言代码转换成游戏中的实体、条件、事件等组成的图。
在建立完成包含了游戏中所有可能出现的状态的图后,系统可以在这个图中插入一些游戏进度,并以此为条件进行搜索,尝试找到从这个点出发、且能达到游戏胜利的最佳路径 —— 这条路径的实质就是描述了要依次触发哪些游戏机制才能达到最终的胜利状态,作者们把它称为「关键链条」。
针对「关键链条」的搜索,作者们提出了两条条件:1,包含的图中的独特机制最少;2,结果必须是玩家赢得了游戏的。根据这样的条件,它找到的关键链条就纯粹是赢得游戏所必须触发的机制,而且这样也降低了关键链条中的噪声(在后面我们会再次说到这一点)。这样我们就找到了如何帮忙、教学人类玩家(而且借助 VGDL 语言,还是人类可以理解的表达形式),以及针对哪些点来加强玩游戏的 AI 的表现。

系统验证

(四个测试游戏之一:植物大战僵尸)
如何验证这个系统呢,作者们采用了两种不同的方法,一种需要人类参与,一种需要别的 AI 参与。
在需要人类参与的方法里,他们把系统识别出的关键机制和人类玩过游戏之后认为的关键机制进行对比,发现系统认为关键的机制确实大多数都和人类给出的是相符的。在这方面,人类的意见肯定是一个好的参考标准,这已经能够说明系统的有效性。不过也有一些有趣的差异,很多时候人类还会给出很多起到「避免失败」作用的关键机制,比如「躲开 xxx」,以及提出可以起到帮助、带来更多策略选择灵活性的机制;而这个系统就不会提出这些,因为它们不是「赢得游戏的最短关键链条」里必须包含的,有点像是支线任务的味道,不做也是可以取得胜利的。
在 AI 参与的测试中可以采用更容易量化的方法,那就是如果利用了系统找到的关键机制,游戏 AI 应该能够获得更好的表现。作者们修改了 GVGAI 框架中提供的基准线 MCTS (蒙特卡洛树搜索)智能体,在原有的默认反馈基础上增加了一些和关键机制信息相关的反馈;也就是说,如今它们按顺序触发的关键机制越多,在训练过程中能得到的反馈也就越高。
不难想到,带有这些关键机制信息的 MCTS 智能体在测试的四个游戏中得到了巨大的表现提升(都取得了更高的游戏分数,也提升了其中三个游戏的胜率;对于那个胜率没能提高的游戏,作者们认为是游戏的复杂度比较高),这也再次说明了系统找到的关键游戏机制的正确性;同时也我们也可以认为这种机制增强了智能体按顺序执行一系列动作的能力,而这种序列执行的能力也是非常重要的。

研究前景

这项发掘关键游戏机制的研究,来源于为游戏设计教学内容。教学内容的形式包括文字提示、游戏中的 NPC 演示,以及整个的、难度逐渐递进的教学关卡。目前的教学内容设计以人工设计为主,它们主要展示游戏中的重要特性;而自动设计方法既不成熟,此前也没有自动设计方法能够关注并总结出游戏中最重要的游戏机制,帮助玩家在游戏中发挥得更好、更快取得胜利。这项研究就可以完成这个任务,可以帮助设计更强的游戏 AI,以及作者们还提出可以用来帮助检测游戏中的 bug(如果已经发现并利用了游戏中的关键机制的游戏 AI 还是无法取得好的成绩的话,那游戏开发者可能还需要对游戏做一定的修改)。
作者们也提出,他们的系统进行拓展之后可以在更复杂的游戏中捕捉更宏观的动作,以及允许玩家定义自己的目标,同样也能够生成关键机制的指导。
这项研究的更多细节欢迎阅读论文原文:https://arxiv.org/abs/1909.03094
另外,GVGAI 是一个强大完善的电脑游戏 AI 测试与开发框架,也有年度的比赛,可以到 http://gvgai.net/ 了解更多。
推荐阅读

2. 巴赫涂鸦创作者 Anna Huang 现身上海,倾情讲解「音乐生成」两大算法

3. 一份完全解读:是什么使神经网络变成图神经网络?


点击阅读原文,查看 游戏编程中的人工智能技术
继续阅读
阅读原文