利用机器学习快速训练游戏代理

在过去的二十年中,计算和连接技术的飞速发展使游戏开发者能够创作出范围和复杂性不断增加的作品。简单的线性关卡已经演变成逼真的开放世界,程序算法使游戏具有前所未有的多样性,而不断扩大的互联网接入使游戏变成了动态的在线服务。不幸的是,范围和复杂性的增长速度超过了质量保证团队的规模或传统自动化测试的能力。这对产品质量(例如延迟发布和发布后补丁)和开发人员的生活质量都构成了挑战。

机器学习 (ML) 技术提供了一种可能的解决方案,因为它们已被证明具有深刻影响游戏开发流程的潜力——它们可以帮助设计师平衡游戏,并使艺术家能够在传统所需时间的一小部分内制作出高质量的资产。此外,它们还可用于训练能够在最高水平上竞争的具有挑战性的对手。然而,某些 ML 技术可能会提出一些要求,使得它们目前对于生产游戏团队来说不切实际,包括游戏特定网络架构的设计、实现 ML 算法的专业知识的发展或数十亿帧训练数据的生成。相反,游戏开发者在具有独特优势的环境中利用 ML 技术,例如直接访问游戏源、大量专家演示以及视频游戏独特的交互性。

今天,我们介绍了一个基于 ML 的系统,游戏开发者可以使用该系统快速高效地训练游戏测试代理,帮助开发者快速发现严重错误,同时让人类测试人员专注于更复杂、更棘手的问题。最终的解决方案不需要 ML 专业知识,适用于许多最受欢迎的游戏类型,并且可以在不到一小时的时间内在一个游戏实例上训练 ML 策略,该策略根据游戏状态生成游戏动作。我们还发布了一个开源库,演示了这些技术的功能应用。

1728748404750.jpg

支持的类型包括街机游戏、动作/冒险游戏和赛车游戏。

合适的工具,合适的工作

电子游戏测试 最基本的形式就是玩游戏。很多次。许多最严重的错误(例如崩溃或脱离世界)很容易检测和修复;挑战是在现代游戏的广阔状态空间中找到它们。因此,我们决定专注于训练一个可以大规模“玩游戏”的系统。

我们发现,最有效的方法不是尝试训练一个可以从端到端玩整个游戏的超级高效代理,而是为开发人员提供训练一组游戏测试代理的能力,每个代理都可以有效地完成几分钟的任务,游戏开发人员将其称为“游戏循环”。

1728748385401.jpg

这些核心游戏行为通常通过传统方式进行编程成本高昂,但训练起来比单个端到端 ML 模型要高效得多。实际上,商业游戏通过重复和重新混合核心游戏循环来创建更长的循环,这意味着开发者可以通过将 ML 策略与少量简单脚本相结合来测试大量游戏。

以模拟为中心,语义 API

将机器学习应用于游戏开发的最根本挑战之一是弥合以模拟为中心的视频游戏世界与以数据为中心的机器学习世界之间的鸿沟。我们的系统不会要求开发人员直接将游戏状态转换为自定义的低级机器学习功能(这会耗费过多的人力)或尝试从原始像素中学习(这会需要太多数据进行训练),而是为开发人员提供惯用的、游戏开发人员友好的 API,使他们能够根据玩家观察到的基本状态和他们可以执行的语义操作来描述他们的游戏。所有这些信息都通过游戏开发人员熟悉的概念来表达,例如实体、光线投射、3D 位置和旋转、按钮和操纵杆。

正如您在下面的示例中看到的,API 仅用几行代码就允许指定观察和操作。

1728748372456.jpg

赛车游戏的示例动作和观察。

从 API 到神经网络

这种高级语义 API 不仅易于使用,而且还允许系统灵活地适应正在开发的特定游戏——游戏开发人员使用的 API 构建块的特定组合决定了我们对网络架构的选择,因为它提供了有关系统部署的游戏场景类型的信息。这方面的一些示例包括:根据动作输出是代表数字按钮还是模拟操纵杆来以不同的方式处理动作输出,或者使用图像处理技术来处理代理使用射线投射探测其环境所产生的观察结果(类似于自动驾驶汽车使用激光雷达探测其环境的方式)。

我们的 API 足够通用,可以对游戏中许多常见的控制方案(控制移动的动作输出配置)进行建模,例如第一人称游戏、具有摄像机相关控制的第三人称游戏、赛车游戏、双摇杆射击游戏等。由于 3D 移动和瞄准通常是游戏玩法不可或缺的一部分,因此我们创建了自动倾向于简单行为(例如这些游戏中的瞄准、接近或躲避)的网络。系统通过分析游戏的控制方案来创建神经网络层,以执行该游戏中的观察和动作的自定义处理,从而实现这一点。例如,世界中物体的位置和旋转会自动转换为从 AI 控制的游戏实体的角度来看的方向和距离。这种转换通常会提高学习速度并帮助学习到的网络更好地概括。

1728748359148.jpg

为带有操纵杆控制和射线投射输入的游戏生成的示例神经网络。根据输入(红色)和控制方案,系统生成自定义预处理层和后处理层(橙色)。

实时向专家学习

生成神经网络架构后,需要使用适当的学习算法来训练网络来玩游戏。

强化学习(RL) 直接训练 ML 策略以最大化奖励,这似乎是显而易见的选择,因为它们已成功用于为游戏训练高度有效的 ML 策略。然而,RL 算法往往需要比单个游戏实例在合理时间内能够产生的更多数据,并且在新领域取得良好结果通常需要超参数调整和强大的 ML 领域知识。

相反,我们发现模仿学习(IL) 非常适合我们的用例,它通过观察专家玩游戏来训练 ML 策略。与 RL 不同,在 RL 中,代理需要自己发现一个好的策略,而 IL 只需要重现人类专家的行为。由于游戏开发者和测试人员是他们自己游戏的专家,他们可以轻松地提供如何玩游戏的演示。

我们采用了受DAgger 算法 启发的 IL 方法,该方法使我们能够充分利用视频游戏最引人注目的品质 — 交互性。得益于我们的语义 API 减少了训练时间和数据要求,训练实际上是实时的,使开发人员能够在提供游戏演示和观看系统游戏之间流畅切换。这会产生一个自然的反馈循环,开发人员可以迭代地对连续的 ML 策略流进行更正。

从开发者的角度来看,演示或纠正错误行为非常简单,只需拿起控制器开始玩游戏即可。完成后,他们可以放下控制器并观看 ML 策略的运行。结果是实时、互动、高度体验性的训练体验,而且通常非常有趣。

1728748346044.jpg

使用我们的系统训练的 FPS 游戏的 ML 策略。

结论

我们提出了一个系统,该系统将高级语义 API 与DAgger启发的交互式训练流程相结合,从而能够训练有用的 ML 策略,用于各种类型的视频游戏测试。我们发布了一个开源库作为我们系统的功能说明。无需 ML 专业知识,并且在单个开发人员机器上训练测试应用程序的代理通常只需不到一小时。我们希望这项工作将有助于激发 ML 技术的发展,这些技术可以以易于访问、有效且有趣的方式部署到现实世界的游戏开发流程中。

致谢

我们要感谢项目的核心成员:Dexter Allen、Leopold Haller、Nathan Martz、Hernan Moraldo、Stewart Miles 和 Hina Sakazaki。训练算法由TF Agents提供,设备上推理由TF Lite提供。特别感谢我们的研究顾问 Olivier Bachem、Erik Frey 和 Toby Pohlen,以及提供有益指导和支持的 Eugene Brevdo、Jared Duke、Oscar Ramirez 和 Neal Wu。

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论