Unity机器学习代理ML-Agents v0.2版本发布

Unity机器学习代理最新版ML-Agents v0.2现已发布!在本版本里,我们作了以下改进:

为Unity SDK和Python API增加了新特性

更多新示例环境

改进了默认的增强学习算法(PPO)

修复Bug及小功能改进

在这篇文章中,我们将重点介绍一些主要的新增功能。

下载ML-Agents v0.2

下载地址:

https://github.com/Unity-Technologies/ml-agents

发行说明:

https://github.com/Unity-Technologies/ml-agents/releases/tag/0.2.0

新的连续控制和平台环境

很多开发者反馈给我们希望有更多的示例环境。所以在ML-Agents v0.2版本中包含了四个新的环境。其中二个是新的连续控制环境,另外二个展示新的课程学习特性的平台环境。

ML-Agents v0.2新特性

课程学习

课程学习是一种训练机器学习模型的方法,它会对同一个问题逐渐增加难度,来让模型每次都接受最适合的挑战。

这种方法由来已久,因为这是人类的典型学习方法。如果你能回想我们的小学教育,所学习的课程和知识点都是有一定次序。例如:我们先学算数再学代数。学习代数后,学习的微积分。我们在早期课程中所学到的技能和知识都为以后的课程提供了学习基础。同样的原理可以应用到机器学习中,在简单的任务上进行训练,是为后续更困难的任务提供基础。

课程学习中的数学课程示例:课程中的题目从简单到复杂,每个题目都基于前一个题目演变

当我们思考强化学习是如何运作的时候,在训练过程中代理偶尔会得到的奖励,这会作为主要学习信号。在更复杂或困难的任务中,这种奖励往往是稀少的,而且很少得到。

例如:在任务中代理需要将方块推起来测量墙的高度。训练代理将以一个随机策略作为完成此任务的起点。这个开始策略由于是随机的,很可能会让代理在场景中瞎转,也可能永远无法准确地测量墙的高度来获得奖励。但如果我们让代理从一个简单的任务开始,比如朝着没有障碍的目标前进,那么代理就可以很容易地学会完成这个任务。从这里开始,我们可以通过逐渐增加墙的大小来慢慢提高任务的难度,直到代理能够完成一开始不可能完成的任务,测出墙的高度。在我们的ML-Agents v0.2中就包含这样的一个环境,叫Wall Area。

课程训练场景的演示 : 场景中逐渐增高的墙阻碍了通往目标的道路

要想在实际操作里看到效果,观察下面这二条学习曲线。它们都显示了对使用PPO训练的大脑得到的奖励,这组训练使用了相同的训练超参数和来自32个同时运行的代理提供的数据。

橙色线是大脑直接使用完整高度的墙来进行训练的,而蓝色线是大脑通过课程学习任务一点点增加墙的高度来训练的。如你所见,没有使用课程学习,代理要获得奖励很困难,即使在300万步之后仍然没有完成任务。我们认为,通过精心设计的课程,使用增强学习训练的代理将能在较短的时间里顺利完成任务,否则就会困难得多。

蓝线对应使用课程学习训练的大脑

橙色线对应没有使用课程学习训练的大脑

垂直的蓝色点线对应于在课程训练期间的课程变化

那么它是如何工作的?为了定义一个课程,第一步就是决定环境中的哪些参数会改变。在Wall Area环境中,墙的高度是会改变的。我们可以将它定义为我们场景中的学院对象的重置参数,并通过Python API来进行调整。然后我们创建一个简单的JSON文件来描述课程的结构。

在训练过程中,我们可以通过这个JSON文件来确定墙的高度在哪个点将会发生什么变化,可以根据已经发生的训练步骤的百分比决定,也可以根据代理最近获得的平均奖励决定。这些完成后,我们只要通过使用课程文件标记(–curriculum-file)指向JSON文件来打开ppo.py即可,我们将使用课程学习来进行训练。当然,我们可以通过TensorBoard来跟踪当前的课程和进展。

下面是一个JSON文件的示例:定义了Wall Area环境的课程。

{

"measure" : "reward",

"thresholds" : [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5],

"min_lesson_length" : 2,

"signal_smoothing" : true,

"parameters" :

{

"min_wall_height" : [0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5],

"max_wall_height" : [1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0]

}

}

如果你成功创建了机器学习环境,却很难让自己的代理解决问题,我们鼓励你尝试使用课程学习,我们很乐意听取你们从中发现了什么。

广播

如今三种大脑类型,也就是内部(internal)、启发式(heuristic)和玩家(player)大脑,都加入了“广播”功能,默认情况下这个功能是激活的。

在活动状态下,所有与该大脑相连的代理的状态、操作和奖励都可通过Python API来获得。这与v0.1版本不同,在之前的版本中,只有外部大脑可以向Python API发送信息。该功能可用于记录、分析或存储来自Python的这些大脑类型的信息。具体来说,这个功能使模仿学习变得可能,来自玩家、启发式、或者内部大脑的数据能被作为监督信号来训练一个独立的网络,而不需要定义一个奖励功能,或者额外增加一个奖励功能来增强训练信号。我们认为这能给游戏开发者在思考如何让游戏更智能时提供一个新思路。

检视窗口中的 Brain组件加入了“Broadcas(广播)”

灵活的监控器

我们重写了代理监控(Agent Monitor),让它的可用性更强。原来的监控器只能显示代理的固定的一组统计数据,新的监控器现在可以显示与代理相关的任何所需信息。而你只需要调用Monitor.Log()来把信息显示在屏幕上,或是场景中的代理上。

3D平衡小球环境中使用监控器来显示各种训练信息

小结

文章的最后,我们很高兴宣布,Unity将会举办一个Unity机器学习社区挑战赛。无论你是机器学习专家,或是对如何将ML-Agents应用到游戏感兴趣,这个挑战赛都是你学习、探索和获取灵感的最佳机会。我们会在明天公布Unity机器学习挑战赛的信息,尽情关注Unity官方社区(unitychina.cn) 及Unity Connect平台!

Unity机器学习系列文章

社区挑战赛

Neon挑战赛

为期1个半月,由Unity举办的《Neon挑战赛》全球开启,寻找最具创意的你!感兴趣的朋友们请访问Unity Connect了解详情。

地址:https://connect.unity.com/challenges/neon

机器学习社区挑战赛

地址:https://connect.unity.com/challenges/ml-agents-1

本文来自企鹅号 - Unity中国媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯玄武实验室的专栏

让 iPhone “崩溃” 又有了新方法:只需要一个视频

玄武实验室在 10 月 15 日就发现了视频样本,在深入分析后,我们在微信后台对能够触发这种漏洞的恶意视频进行检测和拦截,保护了大量用户免遭攻击。

5532
来自专栏快乐八哥

数据可视化-EChart2.0使用总结1

图表是企业级Web开发必不可少的一个功能点。也是“数据可视化的一个具体呈现”。今天看到阮一峰翻译的“数据可视化:基本图表”一文,同时梳理一下公司现在项目使用的E...

2665
来自专栏互联网技术栈

七周七并发模型

以上每种模型都有各自的甜区。  这个模型适用于解决并发问题、并行问题,还是两者皆可?  这个模型适用于哪种并行架构?  这个模型是否有利于我们写出容...

712
来自专栏软件开发 -- 分享 互助 成长

结构化分析和方法

结构化分析方法(SA)是一种面向数据流的需求分析方法,适用于分析大型数据处理系统,是一种简单、实用的方法。 基本思想是自顶向下逐层分解。分析结果有一套分层的数据...

2086
来自专栏Albert陈凯

R语言的优劣

https://www.zhihu.com/question/19611094 作者:艾华丰 链接:https://www.zhihu.com/questio...

2513
来自专栏林浩威的专栏

使用机器学习算法打造一个简单的“微博指数”

写这篇文章的契机,是我在某天看完腾讯指数的推送后,突发奇想,想自己实现类似这样的一个东西,感觉蛮好玩的。然后就在上周末,利用了一些空余时间,写了一个简单的舆情监...

7174
来自专栏机器之心

业界 | 英伟达开源硬件加速项目NVDLA:一种标准化的推断加速框架

3399

数据“厨师”ETL竞赛:今天的数据能做些什么?

它们是一个烹饪比赛的电视系列节目,享有盛名的厨师们撸起袖子,争相做出完美的菜肴。基于一个设定的主题,结合厨师们的经验,创造力和想象力,将可能有问题的食材转化为最...

2345
来自专栏腾讯大讲堂的专栏

AI异常计算点的监控调度

1707
来自专栏生信技能树

芯片数据分析,so easy?

我最早接触的高通量数据就是RNA-seq,后来接触的也基本是高通量测序结果而不是芯片数据,因此我从来没有分析过一次芯片数据,而最近有一个学员在看生信技能树在腾讯...

2173

扫码关注云+社区