AI时代的游戏AI

kt君 2周年征文 2018-05-22
  • 7


*本文为“游研社2周年征文活动”读者投稿。

1、 当我们第一次谈到AI的时候……

不知道从何时开始,我切实感到AI时代来临了——因为身边的商品开始逐渐AI为卖点,身边的朋友开始频繁谈论AI,就连年初的两会上AI二字都多次出现。

不过可曾记得,你第一次听到AI这个词,是在什么时候?

笔者印象中,那是在一个炎热的夏天,在一个充满汗臭味的网吧中,我崇敬地看着在大城市读大学的表哥率领着不死族的大军,吊打了两家疯狂的电脑。战毕,他长吁一口气,向刚上初中的我科普道:这游戏的AI太弱智,因此它们要靠作弊来和我们打……”直到那时候,我才知道我打的那些游戏里的敌人,都有着人工智能这样一个高洋上的学名。

可能很多人和我一样,从小就听着大家谈论、吐槽着AI——只不过是游戏AI。不同于学术上所说的AI,游戏AI的定义相对宽泛。从玩家心目中的普遍认知来看,从我们在游戏中所面对的只有一两个技能的小兵,到战略极为复杂的最终Boss,都可以称为是游戏AI。在《游戏人工智能编程案例精粹》一书中,作者Mat Buckland提出,只要玩家玩游戏时觉得NPC是有智能的,那么目的就已经达到。换言之,游戏AI的目标是让玩家觉得NPC拥有智能,尽管这些智能可能是”假象”。

正因为游戏AI的定义如此宽泛,也许很多人和我一样,接触得最多的AI,就是游戏AI”。对于打着游戏长大的我们这代人来说,尽管这些AI一直都傻乎乎,但是却始终兢兢业业,一声不吭地不断为我们带来乐趣。

然而,尽管时代不断的发展,游戏AI的算法却似乎并没有太大的革新。经典的有限状态自动机、寻路算法、树搜索、模糊逻辑,似乎用来用去都是那几招。因此,当代的游戏设计者们往往采用一些小技巧,让游戏AI变得更加有趣,更加具有智能假象。比如著名的《上古卷轴V》,其中的NPC大多设计了针对玩家不同动作的不同反应和不同对话,以增强和玩家的互动。

不过,随着AI时代的到来,深度学习的出现为游戏AI设计提供了新的思路,许多过去人们不敢想象的效果开始变得可能。笔者作为深度学习和游戏的双料爱好者,希望借此机会,向大家分享一下深度强化学习的概念,以及其在游戏AI设计上的潜在应用空间。

2、我们需要设计一个游戏的上帝吗?

一种常见的观点是,AI越强大,就越智能,也越接近我们设计AI的目标。乍看之下,这种观点很有道理。毕竟,我们所玩过的绝大多数游戏中,AI都有点智障;要么是只有特定几种行为模式,要么是存在着程序设计中没有考虑到的死角。由于只要简单针对就能抓住这些AI的弱点并且击败他们,我们每个人都抱怨过AI太蠢太单调,希望他们能够采取更复杂的策略,并从中获得更多的游戏乐趣。

图 1 STEAM社区中总有许多批评AI太蠢的评论图 1 STEAM社区中总有许多批评AI太蠢的评论

不过让我们仔细分析一下这个问题。以现在的计算机的计算力,对很多决策不那么复杂的游戏来说,实现一个战斗力惊人的AI并不是那么困难——特别是如果不设任何限制条件的话。因为对于大部分游戏而言,游戏中所能采取的有利策略其实非常有限,AI仅用简单的算法不难找出一个接近最优的策略;同时,AI还可以进行一些人类无法做到的操作,这些操作如果设计得当可以为他们带来巨大的优势,甚至可以将人类玩家虐得体无完肤。比如星际2爱好者曾经设计过一个AI,当扎堆的跳虫将要被坦克炮击的时候,跳虫会自动散开,避免受到溅射伤害。利用这种人类无法完成的操作,AI成功用100只跳虫消灭了20架坦克。

图 2 爱好者设计的星际2 AI,跳虫会在要遭到坦克炮击的前一瞬间自动散开,以将受到的伤害降到最低。这样的操作人类是不可能做到的。图 2 爱好者设计的星际2 AI,跳虫会在要遭到坦克炮击的前一瞬间自动散开,以将受到的伤害降到最低。这样的操作人类是不可能做到的。

但实际上没有开发者会这样设计AI。柯洁在人机大战中不敌AlphaGo表示,自己并不喜欢和AI下棋,因为AI实在太强了,远超人类的水平,这样的对局自己并不能从中得到乐趣。其实我们玩游戏也是如此,我们很享受和强敌对战、并且艰难取胜的快感,但如果对手比我们强大太多,那就反而感受不到乐趣了。因此更常见的做法是充分地平衡游戏难度。例如著名的高难度游戏《黑魂》,尽管设计师能设计出红灵入侵这样的高级AI,但其中的小怪AI所采用的策略相对简单,以避免让游戏难度过于失控而让玩家感到强烈的挫折感。

图 3 《黑魂》中既有聪明的AI也有愚蠢的AI。图片转自网络。图 3 《黑魂》中既有聪明的AI也有愚蠢的AI。图片转自网络。

那么问题就来了:如果无限强大的AI不是我们想要的,那当我们抱怨AI太蠢的时候,我们到底在抱怨什么?或者说,我们到底想要什么样的AI

实际上,我们希望的是AI在不过于困难、不作弊的前提下,有着最接近人类的表现。我们最希望的是看到游戏中的每个NPC、每个敌人都像真人那样去行动。既不是使用人类无法达到的操作来作弊也不是蠢蠢的始终按照一定的模式行动,而是像一个普通人那样去生活、战斗、与玩家互动。

具体来说,AI在游戏中的作用,大致可以分为两类。一类是在PVP游戏中用来代替真人,作为占位符存在,比如像魔兽、星际这类RTS中的AI,其作用就是代替真人——或是用来练习,或是在缺人的时候凑个数。对于这种AI来说,我们当然不希望他们是靠双倍金钱或者小狗躲坦克这样的作弊手段来达到合格的强度,而是希望他们更像普通玩家那样去运营和操作。另一类则是PVE游戏中作为玩家的敌人出现,例如《刺客信条》或者《三国无双》中的士兵,我们希望这些角色能像真人一样进攻、防御和补给,甚至应该进行一些战略上的配合,而不是拿着长矛反复戳戳戳。可以看出,无论是PVP游戏还是PVE游戏,我们对AI的要求都是一样:希望游戏中的NPC能像真人一样去战斗。

图 4 《博德之门》中著名的NPC小队秘银五侠,他们和玩家的队伍一样,也是冒险者小队。这些家伙很强——但是靠的是装备和属性。在面对这样的对手时,玩家总会更希望对方能靠配合和技巧来与我们堂堂正正地一战,而不是靠硬件取胜。图片转自网络。图 4 《博德之门》中著名的NPC小队秘银五侠,他们和玩家的队伍一样,也是冒险者小队。这些家伙很强——但是靠的是装备和属性。在面对这样的对手时,玩家总会更希望对方能靠配合和技巧来与我们堂堂正正地一战,而不是靠硬件取胜。图片转自网络。

很多游戏设计者也明白这样的道理。尽管技术一直没能达到这样的水平,但他们仍采取了许多巧妙的尝试。一种(回避问题的)思路就是,利用自然人来代替AI。比如像早期的MMORPG UO,其设计思路就是让每一个玩家真正去扮演这个网游世界中的一名角色那样许许多多的玩家就能形成一个真实的世界。因此UO中商人、铁匠等等原本该由NPC扮演的角色都是玩家,同时也为这个游戏带来了十足的真实感和自由度,也因此直到今天都有老玩家在怀念这个游戏。.今年热播的电影《头号玩家》中的虚构游戏Oasis也是同样的思路,你甚至会发现游戏中连一个NPC都没有,这样自然也就避开了“AI不像人这样的问题。不过,这样的思路终归不能彻底解决问题,比如像UO这样的游戏,就对玩家投入在游戏上的时间和精力要求过高。在游戏快餐化的今天,UO这样的游戏再也没有出现过了。而且,即使你可以把NPC交给自然人来扮演,也不可能让自然人去扮演怪物——毕竟每天被人反复刷的体验实在是太痛苦了。归根结底,我们还是需要用计算机程序的AI来扮演NPC

图 5 头号玩家里似乎所有的角色都是玩家扮演的。图片转自网络。图 5 头号玩家里似乎所有的角色都是玩家扮演的。图片转自网络。

然而直到今天,仍然没有一个能做到类人的AI问世。对于设计游戏AI,传统的AI算法似乎已经山穷水尽了。那么,在这个AI的时代,我们是否可以尝试求助深度学习的算法?

3、深度强化学习可以做什么?

2015年,DeepMindNature上发布了一篇名为Human-Level control through deep reinforcement learning的论文,详细介绍了他们赖以成名的深度强化学习算法DQN,并且依靠此算法让AIAtari2600的数十个游戏上超越了人类玩家的水平。在此前,DeepMind正是凭借一系列深度强化学习的算法,被Google看好、收购,而在2016年他们更是设计出了AlphaGo这样一个奇迹。这种强大的算法似乎对解决我们的问题很有帮助。

图 6 DQN的基本思想。从获取到的状态(在此例中是游戏的画面)出发,经过一系列神经网络,最终输出一个对应于该状态的动作。图片引自参考文献[2]图 6 DQN的基本思想。从获取到的状态(在此例中是游戏的画面)出发,经过一系列神经网络,最终输出一个对应于该状态的动作。图片引自参考文献[2]

深度强化学习是一种利用深度学习求解马尔科夫决策过程中最优策略的方法。马尔科夫决策过程的核心思想是,把实际问题看作是一个有很多可能状态(state)的状态空间,在每个状态上我们可以进行一些动作(action),进行动作会导致当前状态转移到下一个状态。我们希望能够获得一个策略(policy),使得我们在任何状态下,只要知道当前的状态,就可以得到对应该状态的一个动作,并且这个动作会使得未来总的期望回报(reward)最大。

如果以上那段话你没看懂也没有任何关系——实际上只看文字确实不太好懂——不过我们可以用一个简单的例子说明。试想你在玩一个RPG游戏,你面对多个强盗围攻。这个强盗围攻你的场景(包括强盗的各项参数,以及你自己的生命值、魔法值等等所有有用的信息),就可以理解为当前的“状态”;而所有可能的场景的集合就形成了“状态空间”。在这个状态下,你可以选择物理攻击,或者使用魔法,或者吃药来回血,或者试图逃走等等,这就是你当前所能使用“动作”。而一系列之后你成功消灭了这些强盗,拿到了一堆装备、金钱等战利品,这些战利品就是你的“回报”。当然,你的回报也可能是负的,比如有可能你没能消灭这些强盗并被他们抢走了钱,或者被打掉了很多HP而无法回复。而我们的目标,是找出一个最优“策略”,这个策略可以指引你在任何一个状态下,都执行最优的动作,使得最终获得的总的回报最大。比如,你可能可以发现在面对多个低血量敌人的时候,使用AOE是最有效的;而在面对单个大boss的时候使用单体技能是最有效的。在总结出了无数条类似这样的规律后,你在今后面对游戏中的每一个场景时都知道该怎样操作了,你的最优策略就形成了。

而深度强化学习算法,则是使用强大的神经网络,从历史经验中,或学习各个状态的有利程度(一般称为Q-Learning),或直接学习最优的策略,来帮助我们解决马尔科夫决策过程的问题。不过,不同于传统机器学习使用的是已有的数据来学习,深度强化学习并没有现成的数据,所以经常需要不断地让AI去反复尝试与环境进行互动,来获得环境提供的反馈,并从中学到有价值的知识。

从上面这个例子可以看出,游戏,和马尔科夫决策过程是天然对应的,在游戏世界里“状态”、“动作”、“回报”、“策略”这些概念简直是宛若天成。因此很多公司和机构在研究深度强化学习算法时,使用游戏作为他们的“实验室”,在游戏中实验各种算法。比如说著名的VizDoom平台,就是一个训练AI来打Doom的平台,Facebook等公司都在这些平台上实验过他们的算法,并发表过相关的文章。

那么深度强化学习对于设计游戏AI有什么帮助呢?事实上,深度强化学习模型的一大特点就是在于,其特别适合用来做复杂的决策。正如之前描述的马尔科夫决策过程所说,我们的策略是要对整个状态空间中所有的状态都适用的,只要这个策略足够优秀,那么AI可以表现出很复杂的行为,而擅长使用复杂的策略正是人类的特征之一。例如,Atari2600上打砖块游戏,利用DQN训练出的AI甚至懂得集中往同一个方向打,来挖出一条“隧道”,从而让小球在上方反复弹跳来高效得分。要知道,没有任何人告诉过这个AI这样做会很有利,而AI则完全凭借反复尝试和不断学习领悟了这一点——这样的结果是十分惊人的。因此,使用深度强化学习,我们有望可以训练出拥有非常复杂策略的AI,可以懂得合理进攻防御,甚至可以像玩家一样喝药、使用技能,根据态势上Buff,在团战中优先击杀治疗,等等。

图 7 在打砖块游戏中,AI甚至懂得需要挖出一条“隧道”来最有效得分,这样的策略是AI完全靠自己领悟的。图片引自参考文献[2]图 7 在打砖块游戏中,AI甚至懂得需要挖出一条“隧道”来最有效得分,这样的策略是AI完全靠自己领悟的。图片引自参考文献[2]

不过这仍然不是我们想要的AI——因为之前说过了,单纯强大的AI只会给玩家带来挫折感,我们追求的是和人类尽可能接近的表现。而深度强化学习的另一个优势是,擅长解决目标相对含糊的问题。如之前所说,深度强化学习所寻找的策略,是寻求最大化未来的总回报的。这个回报不是一成不变的,对于不同的问题可以有不同的回报——甚至对应于不同的需求,对同一个问题我们也可以设计不同的回报。比如,正常的AIAtari2600的回报是得分,那么AI会尽可能最大化自己的得分;但假如我们想设计一个AI,让它在Atari2600游戏中以最快速度死亡(当然,这样的AI可能没啥意义,这里仅仅是为了举例),那么这个回报就可以设计为负的AI存活时间,那么AI为了最大化这个回报就会尽快自杀。换言之,在深度强化学习的模型中,回报的设计是可以高度订制的,所以设计出不单纯追求胜利的AI是完全可能的。通过仔细设计回报函数,我们有机会训练出一个能够让玩家感受到足够的挑战,又不过于困难的AI

综上所述,深度强化学习的优势,主要在于两点。一是可以训练出拥有较为复杂策略的AI;二是这个AI可以不一定完全为击败玩家而战,而可以拥有高度订制的目的性,这个目的可以是“愉悦玩家”。因此,看上去深度强化学习对于设计一个更令玩家满意的游戏AI来说,是一个非常有潜力的方法。

4、但革命尚未成功……

尽管深度强化学习的算法在设计更加智能的游戏AI上有一些优势,但现阶段使用深度强化学习算法的游戏AI并不多,效果也并没有想象中那么好。笔者曾经供职过的公司也曾经尝试过用深度强化学习算法来设计游戏中的Boss AI,但最终并没有大张旗鼓地宣传,而仅仅只进行了灰度上线。由此可以看出,想真正在商业游戏中大规模使用基于深度强化学习算法的AI,还是有很多困难要克服的。

首先,在动作空间巨大时,尤其是连续动作空间下,深度强化学习算法的表现并不好。什么叫动作空间巨大呢?对于围棋游戏来说,棋手每步最多有361个选择,因为棋盘上只有这么多个格子,因此动作空间的尺度为361。但对于星际争霸这样的游戏来说,由于其每时每刻可以做出的选择数是一个天文数字(包括造选择,移动,造不同的兵或建筑,控制士兵往不同的位置移动,等等),要让AI学会从这么多可选的动作中选择出正确的一个,着实非常困难。所以目前星际争霸的深度学习AI表现都很差劲。在去年的AI星际争霸比赛中,Facebook研究院开发的基于深度强化学习的AI就被一个个人开发者的传统AI所击败。据说该个人开发者的AI始终使用虫族,且只会一种战术——快攻。可见目前深度强化学习的所谓复杂决策,有时可能还比不上简单决策。

其次,复杂的Boss AI可能需要有多AI合作的策略。然而,目前在多AI合作的问题上,还缺少行之有效的方法。去年OpenAIBerkeley曾发表了训练多AI合作MADDPG算法,取得了不错的效果,但是该方法仍仅在预设的简单的环境下进行了测试,能否适用在复杂游戏上仍是个未知数。在多AI合作方面的研究目前还仅仅只是刚起步的水平,离能实际应用的水平十分遥远。

图 8 演示MADDPG算法所使用的环境。在一个方形空间内小球会互相追逐,比现阶段大多数的游戏都简单很多。图片引自参考文献[5]图 8 演示MADDPG算法所使用的环境。在一个方形空间内小球会互相追逐,比现阶段大多数的游戏都简单很多。图片引自参考文献[5]

再次,对于“更接近真人的行为”和“更加可控的难度”这样的需求,尽管理论上我们可以通过精妙地设计回报来实现,但是这样的需求仍然是非常抽象的,想设计出一个行之有效的回报函数非常困难,而且需要大量的实验。甚至,有时我们都不敢肯定这样的回报函数究竟是不是存在。因此,目前的基于深度强化学习的AI尽管非常智能,但在模仿人类行为这点上的表现并不突出。这方面的问题也仍有待进一步的研究和探索。

最后,游戏业界对于在商业游戏上采用基于深度强化学习的AI仍旧意兴阑珊。理由除了上述那些没有解决的问题之外,还存在缺乏便宜好用的引擎和平台,以及神经网络的行为经常无法预料这些。深度强化学习的算法还应该继续努力证实自己的实用价值,否则也不会有游戏厂商愿意冒险将深度强化学习应用在自己的游戏中。

5、结语

我认为,在AI时代,各行各业都应该思考一下自己的行业可以如何和AI技术相结合,而AI从业者也应该尽可能谋求与传统行业的合作。这样的做法是双赢的:对于传统行业来说,AI技术有可能会使他们的生产变得更好更有效率;而对于AI从业者来说,与传统行业的合作可以产生更多的实际应用,从而让AI得到更大的发展空间。

而游戏行业中,最有可能应用上AI技术的,正是游戏AI的设计。深度强化学习作为一种尚不常熟技术,已经取得了一定的成功并且表现出了巨大的潜力;如果能将深度强化学习技术运用到游戏AI设计上,也许能对设计“更接近人类”和“难度更加可控”的AI上有所帮助。不过,现阶段这方面的研究仍存在较多的困难,因此还缺少实际运用的案例。

不过我想,随着技术的不断进步,这些困难都会有被克服的一天。而在此之前,则需要AI从业者和游戏从业者双方面共同的不懈努力。到那时,我们也许可以迎来一些全新的游戏体验。

作为一个AI和游戏的双重爱好者,我期待着那一天的到来!

参考文献:

[1] Mat Buckland. 游戏人工智能编程案例精粹. 罗岱等译. 北京: 人民邮电出版社, 2008.

[2] Mnih, Volodymyr, et al. "Human-level control through deep reinforcement learning." Nature 518.7540 (2015): 529.

[3] Justesen, Niels, et al. "Deep Learning for Video Game Playing." arXiv preprint arXiv:1708.07902 (2017).

[4] Arulkumaran, Kai, et al. "A brief survey of deep reinforcement learning." arXiv preprint arXiv:1708.05866 (2017).

[5] Lowe, Ryan, et al. "Multi-agent actor-critic for mixed cooperative-competitive environments." Advances in Neural Information Processing Systems. 2017.






展开全文

评论

发布
取消
返回顶部
App内打开