ML-Agents v2.0 发布:现在支持训练复杂的合作行为

MARWAN MATTAR / UNITY TECHNOLOGIESContributor
May 5, 2021|15 Min
ML-Agents v2.0 发布:现在支持训练复杂的合作行为
为方便起见,此网页已进行机器翻译。我们无法保证翻译内容的准确性或可靠性。如果您对翻译内容的准确性有疑问,请参阅此网页的官方英文版本。

大约一年前,我们宣布发布 ML-Agents v1.0 Unity 包,该包已通过 2020.2 Editor 版本的验证。今天,我们很高兴地宣布 ML-Agents Unity 包 v2.0 版本的发布,目前正在按计划进行 2021.2 Editor 版本的验证。在过去的一年里,我们对ML-Agents GitHub 项目进行了十五项以上的关键更新,包括改进用户工作流程、增加新的训练算法和功能以及显著的性能提升。在这篇博文中,我们将重点介绍三个核心发展:训练合作行为的能力,使代理能够观察其环境中的各种实体,并利用任务参数化来支持训练多项任务。这些进步相结合,使 ML-Agents 更接近完全支持复杂的合作环境。

在我们的2020 年终博客文章中,我们简要总结了自 2020 年 5 月发布 v1.0 到同年 12 月所取得的所有进展。我们还介绍了计划在 2021 年上半年重点关注的三项主要算法改进: 合作多智能体行为,即智能体观察不同数量实体的能力,以及建立单一模型来解决多个任务的能力。现在我们可以自豪地说,ML-Agents 实现了这三项重大改进。

除了这三个功能之外,我们还对主要 ML-Agents 包进行了以下更改:

增加了许多以前属于我们的配套扩展Unity 包的功能 - 例如Grid Sensors 组件Match-3 游戏板

增强推理期间的内存分配。在我们的一些演示场景中,我们观察到减少了高达 98%。

删除了弃用的 API 并减少了我们的 API 占用空间。这些破坏 API 的调整使得我们的版本必须从 1.x 升级到 2.0。有关轻松升级的更多详细信息,请参阅我们的发行说明迁移指南

在这篇博文的剩余部分,我们将扩展合作行为、可变长度观察和任务参数化的作用,以及两个渐进式改进:提升扩展包的功能和总体性能。我们还将提供有关我们的 ML-Agents Cloud 产品的更新,并在短短几周内发布之前分享我们令人兴奋的新游戏环境的预览,该环境将重点介绍复杂的合作行为。

训练合作行为

在许多环境中,例如《我们之中》这样的多人游戏,游戏中的玩家必须合作来解决手头的任务。尽管以前可能可以在场景中使用多个代理来训练 ML-Agents,但直到第 15 版(2020 年 3 月)发布之前,您都无法定义具有共同目标的特定代理组。ML-Agents 现在明确支持训练合作行为。这样,代理团队就可以朝着一个共同的目标努力,每个人的成功都与整个团队的成功息息相关。

在这种情况下,代理通常会作为一个群体获得奖励。因此,如果一个代理团队在与对方团队的比赛中获胜,那么每个人都会得到奖励,即使是那些没有直接为这次胜利做出贡献的代理,这使得他们很难学会独立做什么。这就是为什么我们开发了一种新颖的多智能体训练器(称为 MA-POCA,即多智能体后遗症学分分配;完整的arXiv论文即将推出)来训练一个集中式评论家——一个充当整个智能体群体“教练”的神经网络。

通过这一补充,您可以继续给予整个团队奖励,但代理商也将学习如何为他们的共同成就做出最佳贡献。代理商甚至可以获得个人奖励,以便他们保持动力并互相帮助实现目标。在某一情节中,您可以向组中添加或删除代理,例如当代理在游戏中生成或死亡时。如果特工在剧集中间被撤掉,他们仍然能够了解他们的行为是否有助于球队后来的胜利。这使他们有能力在行动中把集体放在第一位;即使他们最终因为自我牺牲或其他游戏决策而退出游戏。通过将 MA-POCA 与自对弈相结合,您还可以训练代理团队相互对抗。

除此之外,我们还开发了两个新的示例环境: 合作推堵地牢逃脱。合作推送块展示了需要多个代理才能完成的任务。下面的视频展示了《地牢逃脱》,其中一名特工必须杀死龙,导致它在中途被移除,以便它的队友可以拿起钥匙并逃离地牢。

阅读我们的文档以获取有关如何在您的项目中实施合作代理的详细信息。

观察不同数量的实体

该工具包最常请求的功能之一是使游戏角色能够对不同数量的实体做出反应。在电子游戏中,角色通常会学习如何同时对付多个敌人或物品。为了满足这一需求,第 15 版(2020 年 3 月)现在可以指定任意长度的观测数组,称为“观测缓冲区”。代理可以通过对不同数量的观察进行编码和处理注意模块来学习如何利用任意大小的缓冲区。

例如,在游戏角色必须学会避开抛射物但场景中的抛射物数量不固定的情况下,注意力模块是一个很好的解决方案。在此视频中,每个射弹由四个值表示:两个用于定位,两个用于速度。对于场景中的每个抛射物,这四个值都会附加到抛射物观测缓冲区中。然后,代理可以学会忽略不在碰撞轨迹上的射弹,而格外注意更危险的射弹。

此外,代理可以根据场景中实体之间的关系了解实体的重要性。例如,如果代理必须学习如何按升序对瓷砖进行排序,他们将能够根据所有其他瓷砖的信息找出哪个瓷砖是下一个正确的瓷砖。这个被称为Sorter 的新环境现在可作为我们示例环境的一部分使用,您可以下载并使用它开始使用。

阅读我们的文档,了解如何在您的项目中实现可变长度观察的详细信息。

任务参数化:一个模型统治所有模型

电子游戏角色经常在不同的游戏模式中遇到几项任务。解决这一挑战的一种方法是分别训练多种行为,然后在它们之间进行切换。然而,最好训练一个可以同时完成多项任务的单一模型。毕竟,单一模型可以降低最终游戏中的内存占用,并且由于模型可以在多个任务中重用神经网络的某些部分,因此可以缩短整体训练时间。为此,我们在最新版本(Release 17)中添加了使用超网络让单个模型编码多种行为的功能。

在实践中,我们使用一种称为“目标信号”的新类型的观察,以及称为“超网络”的小型神经网络来生成另一个更大的神经网络的一些权重。这个更大的网络可以告知代理的行为,并使行为的神经网络具有不同的权重,具体取决于代理的目标,同时在必要时在目标之间维护一些共享的部分。

以下视频展示了代理同时解决 ML-Agents 示例中的两个任务(WallJumpPushBlock)。如果底部颜色是绿色,则代理必须将块推入绿色区域。但如果右上角的方块是绿色,代理就必须跳过墙到达绿色方块上。

阅读我们的文档,了解如何在项目中使用目标信号实现任务参数化的详细信息。

从扩展包中推广的功能
网格传感器
ML-Agents 称为 Grid Sensor

2020 年 11 月,我们撰写了一篇文章,介绍 Eidos 如何在 ML-Agents 中开发一种名为 Grid Sensor 的新型传感器。这个 Grid Sensor 实现当时被添加到了我们的扩展包中,之后我们继续对该实现进行迭代,并将其推广到主 ML-Agents 包的最新版本。

三消

在 ML-Agents 的 第 10 版 (2020 年 11 月)中,我们引入了新的 Match-3 环境,并在扩展包中添加了实用程序,以支持 Match-3 游戏的训练。我们已经与 Code Monkey 合作发布了 教程视频。与 Grid Sensors 类似,我们在最新版本中将用于训练 Match-3 游戏的实用程序作为核心 ML-Agents 包的一部分。

性能改进

我们的目标是不断改进 ML-Agents。在听到您对推理期间分配的内存量的反馈后,我们立即大幅减少了分配。下表显示了我们两个示例场景中版本 1.0(2020 年 5 月发布)和 2.0(2021 年 4 月发布)的垃圾收集指标(每 Academy 步骤千字节数)的比较。这些指标不包括 Barracuda(ML-Agents 依赖其进行跨平台推理的 Unity 推理引擎)使用的内存:

两个示例场景中 1.0 版和 2.0 版的垃圾收集指标比较
ML-Agents 云:更新

在我们的 v1.0 博客文章中,我们首先分享了有关 ML-Agents Cloud 的一些细节。我们的 ML-Agents 云服务让您可以启动在我们的云基础设施上并行运行的多个训练课程,以便您可以及时完成实验。今天,ML-Agents Cloud 的核心功能让您能够:

上传已实现 ML-Agents (C#) 的游戏版本。

开始、暂停、恢复和停止训练实验。您可以同时启动多个实验,并利用高端机器为每个训练实验生成许多 并发的 Unity 实例 - 所有这些都具有更快的完成时间。

下载多个训练实验的结果。

在 2021 年剩余的时间里,我们计划根据 Alpha 客户反馈加速 ML-Agents Cloud 的开发。附加功能将侧重于可视化结果、从 Web UI 管理实验以及利用超参数调整的能力。事实上,我们今天仍在接受 Alpha 计划的申请。如果您有兴趣报名,请 在此处注册。

接下来会发生什么?

在这篇文章中,我们概述了三项核心改进,使 ML-Agents 更接近支持复杂的合作游戏。我们分别展示了这三项改进,并讨论了最近添加到工具包中的示例环境。我们尚未透露即将推出的另一个展示环境,名为 Dodgeball。躲避球是一项团队对抗游戏,重点突出了三个功能协同运作的方式。代理必须在复杂的环境中进行推理以解决多种模式、与队友合作并观察场景中的不同实体。我们计划在未来几周内发布该环境,同时发布另一篇专门的博客文章。到那时,请先观看我们特工训练玩躲避球的预告片。

谢谢

我谨代表整个 Unity ML-Agents 团队,感谢大家多年来与我们一起踏上这一旅程并给予我们持续支持。

如果您想在机器学习和游戏这个令人兴奋的交叉领域工作,我们正在招聘多个职位,并鼓励您在此处申请

最后,我们很乐意听到您的反馈!对于有关 Unity ML-Agents 工具包的任何反馈,请填写以下调查或直接发送电子邮件至 ml-agents@unity3d.com。 如果您遇到任何问题,请随时通过ML-Agents GitHub 问题页面与我们联系。如果您有任何其他一般性意见或问题,请在Unity ML-Agents 论坛上告知我们。