在我们博客中曾经提出的
游戏人工智能主题的延续中,我们将讨论机器学习如何应用于它以及以何种形式应用。 Apex游戏工具的AI问题专家Jacob Rasmussen
分享了他的经验以及在此基础上选择的解决方案。

近年来,有很多人谈论机器学习将从根本上改变游戏产业,因为该技术已经成为许多其他数字应用程序中的突破。 但是不要忘记,游戏比图像中的汽车驾驶模拟器,无人机控制程序或面部识别算法要复杂得多。
到目前为止,在游戏行业中,仍然习惯使用传统的AI方法,例如有限状态机方法,行为树,以及最近使用的基于实用程序的AI(基于实用程序的系统)。 这种AI也称为基于设计的(人工设计智能)或专家系统。 但是,越来越明显的是-首先对于玩家-这些系统越来越不适合创建可以模仿玩家行为的真正高级对手。 对于创意解决方案尤其如此。 可以通过以下事实来解释:人工智能开发人员无法考虑所有可能的行为策略和行为策略,并无法在传统AI系统中成功实现它们。 对于玩家来说,与容易记住其行为的对手一起玩通常是无聊且可预测的。
导致此结果的原因很多,但主要原因之一是AI无法学习。 因此,在创建敌人的人工智能时,要想一想在许多其他应用中证明的向机器学习过渡的决定。 但是,有一些细微差别值得考虑。 因此,游戏AI必须能够适应任何情况并利用它所提供的优势,并适应竞争对手的不同游戏风格-现场玩家和其他AI。
现在怎么样
从事人工智能开发的英国公司DeepMind最近展示了AI如何独立学习玩游戏,学习其规则并找到通过游戏或赢得游戏的方法-但是,到目前为止,仅以简单游戏为例,例如早期的
Atari游戏-例如国际象棋和日本逻辑游戏。 他们获得的结果表明,人工智能能够自行形成对现场发生情况的充分评估。 如果我们谈论将AI适应对手游戏的各种风格,那么结果并不令人印象深刻。
如今,神经网络已经学会了识别图像并驾驶汽车。 但是,这些功能可以借助相对简单的体系结构来实现,即使结果结果是它们非常深入和庞大。 因此,用于Facebook上图像识别的AI深度约为100层,这就是为什么它类似于生物大脑的原因-形成一个大型网络的神经元之间关系的数量和复杂性。
游戏AI
至于机器学习在游戏行业中的应用,存在许多限制,因此并非总是可能使用这种类型的体系结构。 这些包括系统要求,特别是与CPU相关的系统要求,这些要求确定计算机处理复杂游戏结构的能力及其对游戏讲故事和游戏玩法的适用性。
因此,事实证明,在许多用于实现复杂的人工智能系统的游戏中,不可能组织必要的硬件,而且不可能存在服务器集群,例如,存在于Facebook上的图像识别网络。 有时,多个AI必须同时工作-不仅在计算机上,而且在移动设备上,以及在其他效率较低的平台上。 所有这些都对机器学习架构的大小和复杂性施加了限制,因为所有计算也必须以1或2毫秒量级的帧持续时间执行。 当然,您可以使用各种优化技术和帧之间的负载平衡,但是仍然无法摆脱这些限制。
人工智能的严重问题可能导致游戏的复杂性。 确实,在《星际争霸2》之类的游戏中,游戏的机制比Atari游戏复杂得多倍。 因此,您不应期望在给定的帧频和已知的系统要求下,机器学习一定能够应付游戏整个状态的学习并能够与之交互。 由于玩家通常在游戏初期受到直觉的引导,因此AI必须学习如何处理游戏状态,以简化游戏的继续进行。 例如,在地图上
适用于星际争霸II的最新
API之一中,仅显示了开发人员认为重要的信息:在一种情况下,AI使用了缩小的地图整个区域的视图,在第二种情况下-像玩家一样,他可以移动相机,然后他的感知仅限于信息在屏幕上。
与星际争霸II中的玩家对战AlphaStar AI游戏的可视化:屏幕截图显示了原始输入的观测值,神经网络的活动,其某些可能的动作和坐标以及比赛的预期结果对于游戏而言,这是一个特别相关的方面。 通常,解决机器学习问题的普遍接受的方法不适用于游戏人工智能。 例如,通常他没有义务像Atari游戏那样赢得胜利或尽其所能赢得胜利。 AI的作用通常是使传球游戏更加精彩。 他可能有必要扮演角色并按照他所负责的角色的角色行事。 因此,游戏AI更与游戏设计和故事叙述联系在一起,并且必须具有必要的工具来控制其行为以实现其目标。 纯粹的机器学习并不总是适合于此-这意味着您需要寻找其他东西。
实用机器学习问题
这些问题在
Unleash的基于机器学习的人工智能的开发中浮出水面,在这种情况下,AI的行为应像常规参与者一样,即具有足够的灵活性和资源。
像《星际争霸II》一样,《释放》比国际象棋复杂得多,因此可以使用Atari。 它的游戏玩法直观且易于学习,但是要在其中真正获得成功,您需要某些元管理技能。 玩家必须在整个游戏过程中建造迷宫,在敌人身上放置怪物,并通过自己的经济策略,进攻和防御结构进行思考。 为此,他需要虚张声势并计算其他人的前进步伐,并管理心理因素-正是她使扑克不仅仅是统计游戏。
释放的屏幕截图为了寻找最适合这些目的的体系结构,诸如
神经进化和深度学习之类的技术首先以几乎不变的形式引入了游戏,我们检查了它们如何表现出自己作为敌人AI的原始能力。
太可怕了
很快就发现,Unleashed需要解决许多难以适应机器学习的全球性问题。
其中之一是建造有效的迷宫。 与许多旨在保护塔楼的游戏一样,玩家需要在塔楼周围建造一个迷宫,怪物才能穿过该迷宫。 反过来,必须借助放在迷宫中的武器来消除它们。 理想情况下,迷宫应尽可能长,以便能够对怪物造成足够的伤害并阻止它们进入塔楼。 对于某些类型的武器,怪物比其他类型的怪物更容易受到伤害,因此,为了提高有效性,应该比其他所有人更早地将它们放置在迷宫中。 Unleash的特殊之处在于,没有完美的迷宫:游戏中存在多种类型的怪物,无论如何,其中之一会自由穿过迷宫的任何部分。 任何迷宫都必须适应其他玩家发射的新怪物。 因此,不仅要教人工智能来构建迷宫,还必须教他如何为各种场景创建有效的迷宫,这只能在游戏的早期和晚期版本中遇到。
而且,人工智能必须学习如何找出迷宫中会出现哪些怪物。 对于迷宫的构造,这是一种反问题。 与其他许多游戏一样,在Unleash中,仅仅组建一支军队并将其发送到敌人的营地是不够的:您还需要监视敌人的防御并以尽可能有效地击中敌人的痛点的方式组织部队。 怪物大军应该以最成功突破迷宫的方式相互影响。 有时还需要根据怪物的功能和角色以一定顺序释放怪物。 这也增加了不同组合的数量。
最后,由于玩家既必须创造迷宫又需要组建一支怪兽大军,所以AI还需要学习如何在攻守上找到平衡。 还值得考虑的是,玩家建立的怪物军队越多,而迷宫的构建越多,他需要的资源就越多。 因此,正确的进攻策略对比赛中的经济和胜利都至关重要。 为了确保竞争力,AI必须能够在不损害迷宫力量的情况下以创建强大的怪物大军的方式处置资源。 最大程度地投资怪物可能是合算的,但是这增加了敌方怪物迷宫的风险。 如果您押注加强对迷宫的保护,它可能会损害您的经济。 这些情况都不会导致胜利。 因此,《释放》中的优化问题比国际象棋或《星际争霸》更大,并且需要牺牲一些东西并在未来的几步中计算出您的利润。
随着人工智能的培训,许多以前无法解决的问题突然出现。 因此,起初,AI通常会达到一定的发展水平,他开始了解游戏的某些方面-例如,迷宫中的哪些武器对特定类型的怪物有效,或者哪些怪物最能通过迷宫的某些区域。 但是学习很慢,导致制定统一的策略。
需要并行方法
尽管基于机器学习的AI学习发展缓慢而不是特别成功,但在测试和开发的其他阶段却需要更好的AI和更强大的竞争对手AI。 为了实现它们,使用了实用程序架构,通过该架构,您可以创建特殊的AI,以测试和检查游戏质量,游戏中的测试以及平衡武器和怪物,并创建特定的迷宫和怪物。 但是,在Unleash的开发过程中,创建者们自己磨练了通过它的技能,然后决定使用所获得的知识来创建更复杂的AI Utility。 因此,很明显,借助使用知识的公用事业系统可以轻松解决基于机器学习的人工学习系统中出现的许多问题,反之亦然。
例如,最好是使用Utility AI根据内部测试所编译的知识库来构建更有效的迷宫。 您可以轻松地描述和编程用于构建迷宫和其中武器位置的算法,从而可以更轻松地将塔从特定的怪物保卫为活着的玩家。 但是,对于这样的AI来说,根据敌人的基地知识来组建怪物大军是一项艰巨的任务,因为必须考虑到的不同条件和组合的数量是惊人的。 使用这种AI架构,找到合适的怪物集将花费无限长的时间。 然后,在给定的限制下,深度学习将是完成此任务的理想解决方案。
混合AI创作
因此,决定将这两种方法结合起来,从而创建一个基于机器学习和实用程序的人工智能混合系统。 这个想法是,在需要处理大量组合和游戏状态的地方,或者需要用某种东西进行训练的地方,使用了机器学习。 对于其他任务,最好依靠开发人员的个人经验,其中涉及实用程序系统。 这种方法的优势还在于,如果有必要,可以更好地控制AI的行为,以确保更准确地遵守给定目标,这是可能的。 例如,您可以使用AI Utility来确保攻防之间的平衡,从而创建不同级别的侵略性,也可以为不同的AI创建不同的迷宫配置,从而为它们创建单独的游戏风格。 您还可以为神经网络设置某些价值系统,以在招募空中或地面怪物时形成各种偏好,从而也可以为单个AI增添个性。 实施设计决策还有许多其他选择,并且所有这些都强调了特定类型的AI体系结构的优势。
混合方法还回答了开发团队在为Unleash开发人工智能的过程中面临的另一个问题:是否值得在机器学习的基础上应用单个全局深度神经网络来考虑所有输入和输出数据,还是设计具有分层结构的AI更好?
Unleash中使用了两种架构:左侧是一个大型的深度神经网络,具有自己的统一架构,右侧是一个分层系统,其中每个网络都有自己的任务尽管如此,我还是想为人工智能系统创建一种通用的方法,在这种体系结构中,开发人员不会发表自己的经验。 但是,进入游戏的次数越多,神经网络的增长就越大。 同时,不可能将AI的训练分开并且只教他们一件事:防御还是攻击。 有人担心,采用更通用的方法会导致计算数量的显着增加。
由此产生了创建分层体系结构的想法,在该体系结构中,每个特定任务都将由专门的神经网络执行。 根据这个想法,首先人工智能必须决定攻击(增加怪物的军队)和防御(迷宫的建设)的资源分配。 一旦执行此操作,他将根据自己的选择进入下一层,并访问游戏状态的必要部分,此后,他会详细选择要选择的怪物以及要在迷宫中安装哪些武器。
结论和下一步
在混合实用程序方法中,具有支持机器学习功能的网络的AI类似于分层体系结构。 反过来,它又类似于生物大脑,其中不同的神经中枢各自负责其任务。
现在,Unleash中的敌人AI很难被击败:它们能够适应游戏中的任何情况-但同时,开发人员可以自行决定更改设置。 根据文章的作者,随着时间的流逝,混合方法应该变得更加普遍,并出现在许多其他游戏中。 也许有一天有可能在游戏中以最纯粹的形式引入基于机器学习的人工智能。 但是,显然,这仍然需要时间。 同时,目标是找到一种本身可以适应所面临挑战的架构,并找到解决这些挑战的最佳方法。