使用Unity ml-agent进行深度强化学习

2019 年 6 月 23 日 AI研习社

本文为 AI 研习社编译的技术博客,原标题 :

Deep Reinforcement Learning using Unity ml-agents

作者 | João Ramos

翻译 | 通夜       编辑 | 王立鱼

原文链接:

https://towardsdatascience.com/deep-reinforcement-learning-using-unity-ml-agents-8af8d407dd5a

注:本文的相关链接请访问文末【阅读原文】

大家好 !

上周,我和我的两个同事,佩德罗·昆塔斯和佩德罗·卡尔代拉做了一些实验,使用的是Unity的ml -agents,我认为这是一个伟大的时刻,与社区分享我们的结果,并向你展示如何扩展你的强化学习知识。 

如果你不知道Unity ml-agents是什么,让我给你一个简单的介绍。Unity ml-agents是一个“用游戏和模拟环境来训练智能体的开源Unity插件,”。在我看来,这是一个可以对开始学习深度学习和强化学习来说很好的框架,因为它可以看到正在发生的事情,而不仅仅是在终端上看到数字和字母。 

在开始展示我们的小项目之前,让我先展示一下框架已经创建的一些场景。

好了,现在您已经了解了这个工具的功能和外观,让我们来讨论一下这个项目! 

我们使用了Unity ml-agents创建的一个智能体。它基本上是一只蜘蛛,但只有四条腿。然后我们为这只小“蜘蛛”创造了一个移动平台来让它四处移动。

那只是Unity的搭建,让我们谈谈强化学习吧!一开始,和往常一样,蜘蛛(agent)只知道它在平台上的位置和方向。因为我们的目标是让两只蜘蛛互相争斗(不告诉它们该做什么),所以他必须设法教它们。这时强化学习就开始起作用了。我假设在读这篇文章的你知道强化学习背后的基本理论。如果你是新手,这里有一个初学者指南:

https://skymind.ai/wiki/deep-reinforcement-learning

所以,就像任何一个普通的“愚蠢的智能体”一样,我们必须“教”它。我们通过当他们有好的行为时给予好的奖励,当他们有坏的行为时给予坏的奖励来教我们的智能体。经过反复试验,智能体们终于学会了如何站立和行走!基本上,每次他们的身体接触到地面,我们都会给他们不好的奖励。因为如果它们的身体在地上,这意味着它们的四条腿不在地上,或者它们的腿没有产生足够的力。(他们应该站起来)。通过给坏的奖励,我们告诉他们这些行为不好,他们应该避免。

让我们概括一下到目前为止我们所做的:

  • -我们使用ml-agents创建了一个Unity环境。

  • -我们教我们的蜘蛛站起来,平衡它的脚来走路。

下一步是教他们打架!为了改变蜘蛛的行为使它们能够战斗,我们必须改变它们的奖励。所以,如果其中一只蜘蛛离开了平台,或者被尸体碰在地上,它将会得到一个非常糟糕的奖励。  

另外,如果当它们做了我们想让它们做的,而我们没有给它们一个好的奖励,它们就不会继续重复那些行为。所以当一只蜘蛛面对另一只蜘蛛时,我们给了它们很好的奖励,当蜘蛛朝着另一只蜘蛛的方向前进时,我们给了它们更好的奖励。这使得两只蜘蛛朝着另一只蜘蛛的方向前进,在某个时候,其中一只蜘蛛会把另一只蜘蛛扔出平台。(这只是一个简单的例子来证明我的观点)  

此外,他们自己也学会了用拳头把对方打在地上就能赢。所以在同一时刻,他们开始“摔跤”。这是一个非常有趣的观察。  

此外,我们还用一个移动平台测试了我们的智能体,以创建一个更困难的环境:  

如果你想复制我的结果,这里有更多关于我的可观察向量和奖励函数的信息:  

  可观测向量

agent关于自身的信息:

  • - agent关于其关节的信息

  • - agent在平台上的向上和向前向量

  • - agent在平台上的位置  

关于对手的信息:

  • -对手身体的向上和向前的矢量

  • -对手在平台上的位置

  奖励函数

智能体不能站起来应该受到惩罚,使得对手摔倒应该得到奖励,这是智能体的主要目标。  

智能体从平台上摔下来应该受到惩罚,但不应该得到奖励。我们希望智能体们学习的战斗方法,不包括以特定的方式击溃平台来让对手稍微早一点倒下。  

智能体应该因为去推对手而得到奖励,应该因为抽离或让自己被推而受到惩罚。这奖励了一种积极的战斗风格,惩罚了更多的逃避风格,包括逃跑。  

基于前面的几点,我们创建了如下的奖励:  

如果代理在地板上:-1.0分  

如果对手在地上:1.0分。 

如果代理不在平台上:-1.0分 

0.003*(标准化的速度*(对手位置-智能体位置)) +0.001*(前进的标准化矢量*(对手位置-智能体位置)) 

最后,我们尝试更进一步,使用类人机器人作为智能体。难度呈指数级增长,因为蜘蛛有8个关节,而类人机器人有12个。这增加了可能的组合动作的总数。所以,我们最终并没有得到惊人的结果,但这看起来很有趣:  

总之,Unity ml-agents允许您非常容易地构建一些有趣的东西。我认为这是开始学习这门学科的好方法。请随时与我分享你的问题和结果! 

作为这个方向的下一个项目,我想为无人机模拟和自动驾驶创造一个环境。如果你有什么想法,请联系我! 

谢谢!

想要继续查看该篇文章相关链接和参考文献?

点击底部【阅读原文】即可访问:

https://ai.yanxishe.com/page/TextTranslation/1632

你可能还想看


 点击阅读原文,查看本文更多内容

登录查看更多
5

相关内容

《强化学习—使用 Open AI、TensorFlow和Keras实现》174页pdf
专知会员服务
136+阅读 · 2020年3月1日
深度强化学习策略梯度教程,53页ppt
专知会员服务
178+阅读 · 2020年2月1日
【强化学习】深度强化学习初学者指南
专知会员服务
179+阅读 · 2019年12月14日
使用强化学习训练机械臂完成人类任务
AI研习社
13+阅读 · 2019年3月23日
强化学习的未来——第一部分
AI研习社
9+阅读 · 2019年1月2日
DeepMind:用PopArt进行多任务深度强化学习
论智
29+阅读 · 2018年9月14日
深度强化学习入门,这一篇就够了!
机器学习算法与Python学习
27+阅读 · 2018年8月17日
【干货】强化学习介绍
人工智能学家
13+阅读 · 2018年6月24日
【强化学习】强化学习/增强学习/再励学习介绍
产业智能官
10+阅读 · 2018年2月23日
【深度强化学习】深度强化学习揭秘
产业智能官
20+阅读 · 2017年11月13日
Relational Deep Reinforcement Learning
Arxiv
10+阅读 · 2018年6月28日
Arxiv
11+阅读 · 2018年4月25日
VIP会员
相关资讯
使用强化学习训练机械臂完成人类任务
AI研习社
13+阅读 · 2019年3月23日
强化学习的未来——第一部分
AI研习社
9+阅读 · 2019年1月2日
DeepMind:用PopArt进行多任务深度强化学习
论智
29+阅读 · 2018年9月14日
深度强化学习入门,这一篇就够了!
机器学习算法与Python学习
27+阅读 · 2018年8月17日
【干货】强化学习介绍
人工智能学家
13+阅读 · 2018年6月24日
【强化学习】强化学习/增强学习/再励学习介绍
产业智能官
10+阅读 · 2018年2月23日
【深度强化学习】深度强化学习揭秘
产业智能官
20+阅读 · 2017年11月13日
Top
微信扫码咨询专知VIP会员