Unity机器学习代理最新版ML-Agents v0.3 Beta现已发布!这是迄今以来最大的一次更新。

新增主要功能包括:
模仿学习(Imitation Learning) 多大脑训练(Multi-Brain Training) 按需决策(On-Demand Decision-Making) 记忆增强代理 (Memory-Enhanced Agents)


我们还通过加入Docker虚拟机(Docker-Image)、调整API语义和修改文档内容,使得配置和使用Unity机器学习代理工具的过程更为简单直观。

下载ML-Agents v0.3 beta
下载地址:
https://github.com/Unity-Technologies/ml-agents

发行说明:
https://github.com/Unity-Technologies/ml-agents/releases

通过行为克隆进行模仿学习
在ML-Agents v0.3中,我们为训练代理加入的首个新型方法算法名为模仿学习(Imitation Learning)。与主要使用奖励信号的强化学习(Reinforcement Learning)不同的是,在给代理提供学习信号时,模仿学习只需要演示所需的行为。

我们认为在某些情景下,通过运行代理来教会代理行为的过程,会比定义奖励更为直观,这在游戏中是创造行为的强力新方法。

有很多模仿学习算法可供我们使用,但在ML-Agents v0.3中,我们使用了最简单的:行为克隆( Behavioral Cloning)。行为克隆从教师代理收集训练数据,然后使用这些数据来直接学习行为。这种处理方式和用于处理图像分类的监督学习(Supervised Learning)或是典型机器学习任务的处理方式一样。

我们计划提供更为高效的方法,并加入更为直观的训练界面。由于将模仿学习应用于游戏开发目前仍比较新颖,我们想要通过社区反馈来决定,如何更佳将模仿学习整合进入开发者的工作流程。如果你尝试使用过我们的模仿学习,或是对如何集成模仿学习到编辑器有自己的想法,请给我们分享你的反馈。

多大脑训练
我们早期收到的其中一个反馈是想要能够一次训练多个大脑。例如:你有个足球游戏,里面有不同类型的选手,比如进攻型和防守型,你需要用不同的风格控制它们的行为。通过使用多大脑训练,你可以给赛场上每个“位置”的选手一个单独的大脑,它有自己的观测和行动区域,可以和大脑一同训练。

训练结束时,你会得到一个二进制(.bytes)文件,在文件里每个大脑都包含一个神经网络模型。这样能够混合和匹配不同的超参数,还能使用课程学习(Curriculum Learning)功能来逐步改变不同大脑集和代理在环境中的交互方式。

按需决策
我们从社区收到的另一个反馈是想要能够让代理按需请求决策,而不是强制它们在引擎执行的每一步或每几步都作出决策。

现在有很多游戏类型,例如:卡牌游戏、实时战略游戏、角色扮演游戏、棋盘游戏等,它们都依赖于代理在一段时间后做出决策的能力。我们很高兴能在ML-Agents中支持这个功能。你现在可以独立启用或禁用每个代理的按需决策,只需点击一个按键即可!只要在你的代理上启用它,然后对代理进行简单的函数调用,就可以让它从大脑请求决策。

对ML-Agents语义的改变
为了让ML-Agents与时俱进,我们对这个工具的语义进行了一系列的改动。这些改动是为了让我们在系统中使用的术语和概念更为符合强化学习文献中的内容。

在这些改动中最大的变化是不再存在 “state”(状态)的概念。而是代理会从环境中接收多种类型(向量、图形或文字)的观测结果,并将这些观测结果发送到它们各自的大脑计算决策(可作为向量或是文字),然后从大脑接收决策用来行动。查看以下表格了解改动内容。这些改动需要修改API。

若想了解这些改动会如何影响使用ML-Agents v0.2或更早版本构建的环境,请访问:https://github.com/Unity-Technol ... s/Migrating-v0.3.md

旧 新 State(状态) VectorObservation(向量观测) Observation(观测)
Visual Observation(视觉观测) (新) Text Observation(文本观测) Action(动作) Vector Action(向量动作) (新) Text Action(文本动作)


在部分观测下学习
将语义从状态改为观测的其中一个原因是,在多数环境中代理从不会展示环境的完整状态。相反它们会收到部分观测结果,通常包含本地或不完整的信息。因为给代理提供完整状态的代价通常过高,有时还不确定该如何展示其状态。为了解决这个问题,我们通过记忆增强型代理(Memory-Enhanced Agents)在学习环境内加入了二个方法处理部分观测。

首个记忆增强方法是观测堆栈(Observation-Stacking)。这能让代理追踪一个情节中的过去十个观测结果,并把它们提供给大脑进行决策。第二种记忆形式则是为神经网络加入一个可选的递归层。这些递归神经网络(RNN)能够在隐藏状态追踪重要信息。你可以将其看作是代理的记忆。

使用Docker虚拟机进行简单配置(预览版)
开发者们使用ML-Agents遇到的一个更为频繁的问题不在ML-Agents本身,而是在于正确安装所有的前提条件,例如:Python和TensorFlow。

我们希望让Unity和C#开发者的使用过程尽可能简单。为了达到这个目的我们使用了Docker虚拟机,它能包含所有使用ML-Agents进行训练的必要条件。

为了训练大脑,只要安装Docker,以Linux为目标构建Unity环境,并使用环境名称启动Docker虚拟机即可。

示例环境
我们在ML-Agents v0.3中加入了四个全新的示例环境:Banana Collectors(香蕉收集者)、Soccer Twos(双人足球)、Bouncer(弹跳者)和Hallway(通道)。前二个是多代理环境,环境中的代理会与代理互相交互,它们可以互相合作、竞争或是同时存在二种行为。

Banana Collectors(香蕉收集者)
在香蕉收集者中,多个代理在一个区域内移动,尝试收集尽可能多的奖励香蕉,避免收集扣除奖励的紫色香蕉。特别之处在于,代理之间可以互相发射激光、冻结对手。这个环境中,代理们可以学习如何为香蕉斗争,或者和平分享,这取决于场景中的奖励香蕉数量。

223637jyjnyn7qnn1g37ts.gif


Soccer Twos(双人足球)
双人足球包含一个2v2环境,每个队伍包含一名前锋和一名守门员,每名球员都通过使用各自不同的奖励函数和大脑进行训练。

223626g6bcl2d222nla2l2.gif

Bouncer(弹跳者 )
弹跳者是新推出的“按需决策”功能示例。在这个环境中,代理可以给自己施加作用力,从而在平台中弹跳,并尝试与漂浮香蕉碰撞。这个环境的特别之处是,代理只会在它落到地上时对下一个弹跳方向做决策,所以弹跳会在不同的时间间隔发生。

223632yknnj4ti40l6ily1.gif

Hallway(通道)
第四个环境叫通道提供了对代理记忆功能测试,可以使用递归神经网络作为可选模型类型进行测试,这个同时也是记忆增强型代理的典型案例。在这其中,代理必须使用本地视角来探索过道,发现方块的颜色,然后使用这些信息来向奖励目标移动。

223629t3jmc5qs5emmmdiz.gif

除了新环境,我们还改进了Push Block(推方块)和Wall Jump(跳墙)环境,并为所有示例环境提供全新的统一外观。我们希望这些改动会让社区的开发者能够更轻松地在这些环境中训练自己的模型,并从这些环境中获得作品的灵感。

结语
ML-Agents v0.3 Beta目前热然在测试中,我们希望热爱机器学习的开发者多多尝试这些新功能,并让我们了解到你的看法获得反馈,以改进我们的机器学习代理工具。

如果你有任何问题,欢迎在Github反馈给我们,你也可以通过邮件ML-联系我们。使用Unity 机器学习代理工具ML-Agents,尽情享受机器学习给你带来的创作快乐吧!更多精彩内容尽在 Unity中文官方论坛(UnityChina.cn)! 机器学习锐亚教育

锐亚教育 锐亚科技 unity unity教程