当前位置: 首页 > article >正文

ML-Agents 概述(二)

注:本文章为官方文档翻译,如有侵权行为请联系作者删除
ML-Agents Overview - Unity ML-Agents Toolkit–原文链接

ML-Agents 概述(一)
ML-Agents 概述(二)

训练方法:特定环境

除了上一节介绍的三种与环境无关的训练方法之外,ML-Agents Toolkit 还提供了其他方法来帮助训练特定类型环境的行为。

在竞争性多智能体环境中通过自我博弈进行训练

ML-Agents 提供通过自我博弈训练对称和非对称对抗游戏的功能 。对称游戏是指敌对Agent在形式、功能和目标上相等的游戏。对称游戏的例子是我们的网球和足球示例环境。在强化学习中,这意味着两个Agent具有相同的观测和动作,并从相同的奖励函数中学习,因此它们可以共享相同的策略。在非对称游戏中,情况并非如此。非对称游戏的一个例子是捉迷藏。这类游戏中的Agent并不总是具有相同的观测或动作,因此共享策略网络并不一定是理想的选择。

通过自我博弈,Agent在对抗游戏中通过与固定、过去版本的对手(在对称游戏中可能是自己)竞争来学习,从而提供更稳定、更平稳的学习环境。这与在每个回合中与当前最强的对手竞争不同,后者是不断变化的(因为它在学习)。

自我博弈可以与我们的近端策略优化 (PPO) 和柔性演员-评论家 (SAC) 实现一起使用。但是,从单个Agent的角度来看,这些场景似乎具有非平稳动力学,因为对手经常在变化。这可能会导致 SAC 使用的经验重放机制出现重大问题。因此,我们建议用户使用 PPO。有关此问题的进一步阅读,请参阅论文《Stabilising Experience Replay for Deep Multi-Agent Reinforcement Learning》。

有关在 Unity 场景中设置团队的更多信息, 请参阅我们的 “设计Agent”页面。此外,请阅读我们关于自我博弈的博客文章 以获取更多信息。此外,请查看ELO 评分系统,这是我们用来计算两名玩家之间的相对技能水平的方法。

使用 MA-POCA 在协作多智能体环境中进行训练

PushBlock 与Agent商合作

ML-Agents 提供了训练合作行为的功能 - 即,Agent组朝着共同目标努力,其中个人的成功与整个团队的成功息息相关。在这种情况下,Agent通常作为一个团队获得奖励。例如,如果一个Agent团队赢得了一场与对手团队的比赛,那么每个人都会得到奖励 - 即使是那些没有直接为胜利做出贡献的Agent。这使得学习作为个人应该做什么变得困难 - 你可能什么都不做却能获得胜利,而尽了最大努力却会失败。

在 ML-Agents 中,我们提供了 MA-POCA(MultiAgent POsthumous Credit Assignment),这是一种新颖的多智能体训练器,可以训练一个 centralized critic(集中式批评家),即充当整个智能体组“教练”的神经网络。然后,您可以向整个团队提供奖励,智能体将学习如何最好地为获得该奖励做出贡献。智能体也可以单独获得奖励,团队将一起努力帮助个体实现这些目标。在一个回合中,Agent可以加入或离开团队,例如当智能体在游戏中生成或死亡时。如果智能体在中途被移除(例如,如果队友死亡或被从游戏中移除),他们仍然会了解他们的行为是否有助于团队获胜,从而使智能体能够采取对团队有益的行动,即使这些行为会导致智能体自己被移出游戏(即自我牺牲)。MA-POCA 还可以与自我博弈相结合,以训练智能体团队相互对抗。

要了解有关在 ML-Agents 环境中为Agent启用协作行为的更多信息,请查看此页面。

要了解有关 MA-POCA 的更多信息,请参阅我们的论文《 Onthe Use and Misuse of Absorbing States in Multi-agent Reinforcement Learning》 。如需进一步阅读,MA-POCA是在多Agent协同学习( Lowe 等人、Foerster 等人等)的基础上构建的,以实现上述用例。

利用课程学习解决复杂任务

课程学习是一种训练机器学习模型的方法,该方法会逐步增加问题的难度,使模型始终处于最优的挑战状态。这个想法已经存在了很长时间,也是我们人类通常的学习方式。想象一下任何儿童小学教育,课程和主题都是有顺序的。例如,先教算术,再教代数。同样,先教代数,再教微积分。在早期科目中学习的技能和知识为以后的课程提供了支架。同样的原则可以应用于机器学习,在较容易的任务上的训练可以为将来更难的任务提供支撑。

想象一下训练医护人员攀爬墙壁到达受伤的队员身边。训练医护人员完成这项任务的起点将是一个随机策略。这种初始策略会让医护人员绕着圈跑,并且很可能无法或很少能正确地攀爬墙壁去救治队友(从而获得奖励)。如果我们从一个简单的任务开始,例如向没有障碍的队员移动,那么医护人员就可以轻松学会完成这项任务。从那里开始,我们可以通过增加墙壁的大小来慢慢增加任务的难度,直到医护人员能够完成最初几乎不可能完成的攀爬墙壁的任务。我们使用ML-Agents环境来演示这一点,该环境称为“Wall Jump”。

墙

演示一个假设的课程培训场景,其中越来越高的墙阻碍了通往目标的道路。

注意:上面提供的示例仅用于指导目的,并且基于 Wall Jump 示例环境的早期版本。因此,无法直接在此环境中复制出相同的结果。

ML-Agents 工具包支持在训练过程中修改自定义环境参数以辅助学习。这允许根据训练进度动态调整与难度或复杂性相关的环境元素。有关定义训练课程的更多信息,请参阅“训练ML-Agents”页面。

使用环境参数随机化训练高适应性的Agent

在特定环境下训练的Agent可能无法泛化到环境的任何调整或变化(在机器学习中这被称为过拟合)。在环境中的物体或属性存在变化的情况下,这个问题尤为严重。为了解决这个问题,并训练出能够对未见过的环境变化进行泛化的适应性更强的Agent,一种方法是在训练期间让它们接触这些变化。与课程学习类似,随着Agent的学习,环境变得越来越困难,ML-Agents 工具包提供了一种在训练期间随机采样环境参数的方法。我们将这种方法称为环境参数随机化。对于熟悉强化学习研究的人来说,这种方法基于 域随机化的概念。通过在训练期间使用 参数随机化,Agent可以更好地适应(以更高的性能)未来未见的环境变化。

Ball scale of 0.5Ball scale of 4

3D 球环境变化的示例。环境参数为gravityball_massball_scale

模型类型

无论部署哪种训练方法,用户都可以使用 ML-Agents Toolkit 训练几种模型类型。这是因为可以灵活地定义Agent观测,包括矢量、射线投射和视觉观测。有关如何为代理设置观测值的更多信息,请参阅《设计Agent》指南。

从矢量观测中学习

无论Agent的观测结果是射线投射还是矢量,ML-Agents Toolkit 都会提供一个全连接神经网络模型来从这些观测结果中学习。在训练时,您可以配置此模型的不同方面,例如隐藏层的层数和神经元数量。

使用卷积神经网络从相机中学习

与其他平台不同,在其他平台上,Agent的观测可能仅限于单个矢量或图像,而 ML-Agents Toolkit 允许每个Agent使用多个摄像头进行观测。这使Agent能够学习整合来自多个视觉流的信息。这在一些场景下非常有用,比如训练需要使用不同视角的多个摄像头的自动驾驶汽车,或可能需要整合空中和第一人称视觉效果的导航Agent。有关如何为代理人添加视觉观测的信息,请参阅此处。

当使用视觉观测时,ML-Agents Toolkit 利用卷积神经网络 (CNN) 从输入图像中学习。我们提供三种网络架构:

  • 一个由两个卷积层组成的简单编码器
  • Mnih 等人提出的实现方案 ,由三个卷积层组成,
  • IMPALA Resnet由三层堆叠结构组成,每层包含两个残差块,因此其网络结构比其他两个要大得多。

架构的选择取决于场景的视觉复杂性和可用的计算资源。

利用注意力机制从可变长度观测中学习

使用 ML-Agents Toolkit,可以让Agent从不同数量的输入中进行学习。为此,每个Agent都可以跟踪矢量观测的缓冲区。在每个步骤中,Agent将遍历缓冲区中的所有元素并提取信息,但缓冲区中的元素在每个步骤中都可能发生变化。这在Agent必须在整个过程中跟踪不同数量元素的场景中非常有用。例如,在游戏中,Agent必须学会避开抛射物,但抛射物的数量可能有所不同。

可变长度观测说明

您可以在此处了解有关可变长度观测的更多信息 。当使用可变长度观测时,ML-Agents Toolkit 利用注意力网络从不同数量的实体中学习。使用注意力的Agent将忽略被认为不相关的实体,并根据上下文对与当前情况相关的实体给予特别关注。

使用循环神经网络的记忆增强Agent

您是否曾进入房间取东西,却马上忘记了自己要找的东西?不要让您的Agent也遭遇这种情况。

检查员

在某些情况下,Agent必须学会记住过去,以便做出最佳决策。当Agent仅具有部分环境可观测性时,跟踪过去的观测结果可以帮助Agent学习。手动决定Agent应该记住什么以解决任务并不容易,但我们的训练算法可以使用LSTM学习记住哪些信息重要。

其他功能

除了可用的灵活训练场景之外,ML-Agents Toolkit 还包含其他功能,可提高训练过程的灵活性和可解释性。

  • 并发 Unity 实例- 我们允许开发人员在训练期间运行 Unity 可执行文件的并发、并行实例。在某些情况下,这应该可以加快训练速度。请查看我们关于 创建 Unity 可执行文件的专用页面和 训练 ML-Agents 页面,了解如何设置并发实例数的说明。
  • 记录 Unity 中的统计数据- 我们支持开发人员 记录 Unity 环境中的统计数据。这些统计数据在训练过程中汇总并生成。
  • 自定义Side Channels- 我们允许开发人员 创建自定义Side Channels来管理 Unity 和 Python 之间的数据传输,这对于他们的训练工作流程和(或)环境来说是独一无二的。
  • 自定义采样器- 我们允许开发人员为环境参数随机化创建自定义采样方法 。这使用户能够根据其特定环境自定义此训练方法。

总结和后续步骤

简单总结一下:ML-Agents Toolkit 使 Unity 中构建的游戏和模拟可以作为训练智能Agent的平台。它旨在支持各种各样的训练模式和场景,并配备了多种功能,使研究人员和开发人员能够利用(并增强)Unity 中的机器学习。

接下来的步骤:

  • 有关使用简单场景运行 ML-Agents 的演练,请查看 入门指南。
  • 有关创建您自己的学习环境的“Hello World”介绍,请查看 创建新的学习环境页面。
  • 要了解此工具包中提供的更复杂的示例环境,请查看 示例环境页面。
  • 有关各种可用训练选项的更多信息,请查看 训练 ML-Agents页面。

鉴于作者水平有限,本文可能存在不足之处,欢迎各位读者提出指导和建议,共同探讨、共同进步。


http://www.kler.cn/a/451442.html

相关文章:

  • 追风赶月莫停留,平芜尽处是春山—记一次备考经历(下)
  • Doris Tablet 损坏如何应对?能恢复数据吗?
  • Vue3中路由跳转之后删除携带的query参数
  • 我用Cursor+DeepSeek做了个飞书文档一键同步插件,免费使用!
  • Linux快速入门-Linux文件系统管理
  • [Unity]Unity集成NuGet-连接mysql时的发现
  • windows C++ TCP客户端
  • 类设计者的核查表
  • 微软远程桌面APP怎么用
  • 算法专题——双指针
  • 机器学习之scikit-learn(简称 sklearn)
  • ensp 关于acl的运用和讲解
  • 鸿蒙 log抓取
  • SQL组合查询
  • springboot481基于springboot社区老人健康信息管理系统(论文+源码)_kaic
  • LLM大语言模型私有化部署-使用Dify的工作流编排打造专属AI搜索引擎
  • 《解锁 Python 数据分析的强大力量》
  • Linux 添加磁盘
  • 音乐电影分享系统:数据驱动的内容推荐机制
  • 机器学习DAY3 : 线性回归与最小二乘法与sklearn实现 (线性回归完)
  • 【强化学习】Stable-Baselines3学习笔记
  • 记录:Vue 构建前端项目,在本地开发时通常会使用代理来转发请求,避免跨域请求问题
  • 可视化大屏编辑器, 开源!
  • golang 并发--goroutine(四)
  • 【主动噪声控制】次级通道的在线辨识
  • Python Web 开发中的多线程与多进程