ML Agents 2.0版本发布,现支持训练复杂协作行为

去年,Unity发布了ML-agent 1.0软件包,该软件包被Unity2020.2版编辑器支持。如今,Unity发布了ML-agent 2.0版本,目前他们正在为2021.2编辑器版本进行验证。在过去的一年中,Unity对ML-Agents GitHub project进行了超过15次的关键更新,包括对用户工作流程的改进、新的训练算法和功能,以及显著的性能提升。在本篇文章中,我们将对3个主要开发方面进行介绍:训练合作行为的能力。使代理能够观察他们环境中的各种实体。以及利用任务参数化来支持训练多个任务。这些进步使ML-agent完全支持复杂的协作环境。


另外Unity还对ML-Agents包进行了以下改进:


1、增加了一些之前已有功能的扩展包,如网格传感器组件和Match-3游戏板等。


2、增强了演算过程中的内存分配。在一些演示场景中,可以观察到内存使用率减少了98%。


3、删除了不推荐使用的应用编程接口(API),减少了应用编程接口占用的空间。这些突破性的应用编程接口调整使得升级ML-Agents 2.0版本成为必要。


下面我们将就扩展角色协作行为、可变长度观察和任务参数化,以及两个增量改进:从扩展包中提升特性和总体性能进行详细介绍。


培养合作行为


在许多环境中,如多人游戏Among Us,游戏中的玩家必须协作解决手头的任务。虽然以前有可能在场景中使用多个代理来训练ML-Agents,但是直到版本15(2020年3月),用户们还是不能定义具有共同目标的特定代理组。ML-Agents现在已经支持训练合作行为。通过这种方式,代理组就可以朝着一个共同的目标努力,每个个体的成功都与整个组的成功紧密的联系在一起。


在这种情况下,代理们通常作为一个群体获得奖励。所以如果一队代理赢了一场比赛,每个代理角色都会得到奖励,即使没有直接为这场胜利做出贡献的代理也会得到奖励,这使得他们很难学会独立完成任务。因此Unity开发了一个新颖的多代理训练器(他们称之为MA-POCA)来训练AI,该训练器是一个神经网络,作为整个代理组的“教练”。


有了这一技术,游戏运营商可以继续向整个团队发放奖励,但是代理们也可以学习如何最好地为他们的共同目标做出贡献。代理们甚至可以获得个人奖项,这样他们就可以始终保持积极性,并帮助彼此实现目标。用户可以在组中添加或删除代理,例如当代理在游戏中出生或死亡时。如果代理在任务中期被移除,他们仍然能够理解他们的行为是否有助于团队后来的胜利。这使他们在行动中把群体放在第一位;即使他们最终通过自我牺牲或其他游戏决策而退出游戏。通过把MA-POCA和自玩结合起来,用户也可以训练代理团队相互对战。


不仅如此,Unity还开发了两个新的示例环境:合作推块和地牢逃脱。合作推块展示了一个需要多个代理来完成的任务。而在地下城逃脱任务中,其中一个代理必须杀死龙,这样它的队友才可以拿起钥匙逃离地下城。


ML Agents 2.0版本发布,现支持训练复杂协作行为

地牢逃脱


监测不同数量的实体


工具包最常用的功能之一是让游戏角色能够对不同数量的实体做出反应。在电子游戏中,角色经常需要学习如何同时对付几个敌人或实体。为了满足这一需求,ML-Agents现在可以指定一个任意长度的监测数组,称为“监测缓冲区”代理可以通过学习如何利用任意大小的缓冲区识别模块编码和处理不同数量的监测数据。


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


ML Agents 2.0版本发布,现支持训练复杂协作行为


此外,代理可以根据它们在场景中跨实体的关系来学习实体的重要性。例如,如果代理必须学习如何按升序对图块进行排序,他们将能够根据所有其他图块的信息来确定哪个图块是下一个正确的图块。


ML Agents 2.0版本发布,现支持训练复杂协作行为


任务参数化


电子游戏角色在不同的游戏模式下经常会遇到几个任务。应对这一挑战的一种方法是分别训练多种行为,然后在它们之间进行交换。但是,最好的解决方案是训练一个可以同时完成多个任务的单一模型。毕竟,单个模型降低了最终游戏中的内存占用,进而缩短了整体训练时间,因为该模型可以在多个任务中重用神经网络的某些部分。为此,在最新版本中(版本17)ML-Agents增加了单个模型使用编码学习多个行为的能力。


在实践中,我们使用一种称为“目标信号”的新型观察方案,以及一种称为“超网络”的小型神经网络,来生成另一个更大的神经网络中的一些权重部分。这个更大的网络会通知代理来实行相应的行为,并使这些行为在神经网络中具有不同的权重,权重取决于代理的目标。


下图展示了一个代理同时解决ML-Agent示例中的两个任务(跳墙和推箱)。如果底部颜色为绿色,代理必须将方块推入绿色区域。但是如果右上角的方块是绿色的,代理必须跳过墙跳到绿色的方块上。


ML Agents 2.0版本发布,现支持训练复杂协作行为


从扩展包升级的功能


网格传感器


ML Agents 2.0版本发布,现支持训练复杂协作行为


去年11月,网格传感器被添加到ML-Agent的扩展包中,之后经过多次迭代,最终Unity将其加入到到最新版本的ML-Agent包中。


Match - 3


在ML-agent版本10中(2020年11月),推出了一个新的Match - 3环境,并在扩展包中添加了实用程序,以支持Match - 3游戏的训练。从那以后,Unity与Code Monkey合作发布了一条教程视频。与网格传感器相似,在最新版本的ML-Agent中,开发人员将训练Match-3游戏的实用程序设定为核心ML-agent包的一部分。


性能提升


Unity的目标是不断改进ML-Agent。在听取用户对推理过程中分配的内存量的反馈后,Unity立即大幅减少了内存分配。下表显示了1.0版(2020年5月发布)和2.0版(2021年4月发布)两个示例场景中无用信息收集指标(kb/step)的比较。这些指标不包括Barracuda使用的内存(ML-Agents依靠Unity推理机进行跨平台推理):


ML Agents 2.0版本发布,现支持训练复杂协作行为


ML-Agents云更新


ML-Agents云服务允许用户在云基础架构上并行运行的多个培训课程,这一功能可以及时帮助用户完成他们的实验项目。如今,ML-Agents云的核心功能再次升级:


1、上传用户定制化的游戏版本,实现多代理(C#)。


2、开始、暂停、恢复和停止训练实验。用户现在可以同时启动多个实验,并利用高端机器为每个实验并发生成Unity实例——现在都有每个案例都将完成的更快。


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


在2021年的剩余时间里,Unity计划根据阿尔法客户的反馈,加快ML-Agents云的开发。额外的功能将聚焦在可视化的结果方面,从线上用户界面管理实验,并利用超参数对其进行调整。


总结


在本篇文章中,我们概述了ML-Agents的3项重要改进,这些改进使ML-Agents支持更加复杂的合作游戏。文章中分别展示了这三个改进,还谈到了最近添加到工具包中的示例环境。另外在上文中我们还没有透露的是另一个即将添加到ML-Agents中的名为躲避球的展示环境。躲避球是一个团队对战游戏,运用了上述所有三个功能。代理必须在复杂的环境中进行演算,以适应多种模式,代理与队友合作,并观察场景中变化的环境。Unity计划在接下来的几周内发布这个全新的环境案例。


ML Agents 2.0版本发布,现支持训练复杂协作行为

展开阅读全文

页面更新:2024-05-18

标签:训练器   版本   神经网络   游戏   炮弹   网格   示例   实体   角色   内存   两个   目标   功能   环境   用户

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top