unity进阶怎么学(这是份值得收藏的Unity强化学习指南)

点击上方关注,All in AI中国

作者——João Ramos

上周,我和我的两位同事Pedro Quintas和Pedro Caldeira进行了一些实验。在实验中,他们使用了Unity ml-agents(09https://github.com/Unity-Technologies/ml-agents)。我认为这是一个很好的契机,能够与社区分享我们的成果,并向你展示应该如何扩展强化学习知识。

如果你不知道Unity ml-agents是什么,请允许我提供一个简短的介绍。Unity ml-agents是一个"开源的Unity插件,它能使游戏和模拟器成为你训练智能代理的环境"。在我看来,它是一个很好的框架,可以帮助新手开始学习深度学习和强化学习。因为它可以使你看到正在发生的事情,而不仅仅是看到在终端上的数字和字母。

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

unity进阶怎么学(这是份值得收藏的Unity强化学习指南)(1)

好,现在你了解了这个工具的功能,下面就让我们讨论这个项目吧!

我们使用了Unity ml-agents创建了一个代理。它的外形像是一只"蜘蛛",但只有4条腿。我们为小""蜘蛛""创造了一个移动平台。

unity进阶怎么学(这是份值得收藏的Unity强化学习指南)(2)

这就是Unity building,接下来我们一起谈谈强化学习!在开始时,和往常一样,""蜘蛛""(agent)只知道它在平台上的位置和方向,其余的它都一无所知。由于我们的目标是让两只""蜘蛛""互相争斗(不告诉它们该怎么做),所以我们必须设法教它们。现在就是强化学习大展身手的时候了。在这篇文章中,我会默认为你知道强化学习背后的基本理论。如果你是新手,那么这里有初学者指南!(https://skymind.ai/wiki/deep-reinforcement-learning)

所以,就像任何一个"懵懂的"代理一样,我们必须"教"它。通过奖惩来训练它,经过一番反复试验,""蜘蛛""终于知道如何站起来走路了!基本上,每次它们的身体接触到地面时,我们都给予了惩罚。因为如果它们的身体在地面上,这意味着它们没有用腿行走,或者说它们的腿没有产生足够的力。通过给予惩罚,我们能告诉""蜘蛛""这些行为是不好的,它们应该避免这些行为。

让我们概括一下到目前为止的情况:

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

- 我们教我们的"蜘蛛"站起来,让它们学会行走。

下一步是教它们学会战斗!为了改变"蜘蛛"的行为使它们能够战斗,我们必须改变奖惩机制。因此,如果其中一只"蜘蛛"走出平台,或者身体与地面进行了接触,它将获得非常严重的惩罚。

再一次强调,如果我们没有良好的奖惩机制,它们就会不断犯错。所以当一只"蜘蛛"面对另一只"蜘蛛"时,我们给了它奖励,当"蜘蛛"朝另一只"蜘蛛"的方向行进时,我们给予了更好的奖励。这使得两只"蜘蛛"会朝着另一只"蜘蛛"的方向前进,并且在某些时候,其中一只"蜘蛛"会将另一只"蜘蛛"扔出平台。(这只是一个证明我的观点的简单例子)

unity进阶怎么学(这是份值得收藏的Unity强化学习指南)(3)

此外,它们自己也认识到,只要把对方打倒在地,就能赢得胜利。所以在同一时刻,他们开始"摔跤"。这是一个非常有趣的观察。

同时,我们还使用移动平台测试了我们的代理,以创建一个更加困难的环境:

unity进阶怎么学(这是份值得收藏的Unity强化学习指南)(4)

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

可观测向量(代理即指蜘蛛)

代理关于自身的信息:

- 关于代理关节的信息

- 使代理身体前进的向前向量e

- 代理在平台中的位置

关于对手的信息:

- 能够向上移动对手身体的向前向量

- 对手在平台中的位置

奖励函数

  • 代理不能站立会受到惩罚,使对手摔倒会获得奖励,攻击对手,令对手摔倒是代理的主要目标。
  • 代理从平台上掉下来会受到惩罚,不会得到奖励。我们希望代理学习战斗方法,不限制以特定方式击倒对手。
  • 代理前进和推对手会获得奖励,后退或者自己被推会受到惩罚。我们奖励战斗积极的代理,并惩罚战斗风格偏向逃避或喜欢逃跑的代理。

基于前面的观点,我们创建了以下内容:

  • 如果代理的身体接触了地面:-1.0分
  • 如果对手的身体接触了地面: 1.0分。
  • 如果代理不在平台上:-1.0分
  • 0.003(归一化速度(对手位置 - 代理位置)) 0.001(前向归一化(对手位置 - 代理位置))

最后,我们试图通过使用类人生物作为代理来进行进一步研究。难度呈指数级增长,因为"蜘蛛"只有有8个关节,而类人生物有12个。这增加了可能的运动组合的总数。所以,我们最终没有取得满意的结果,但看起来非常有趣:

unity进阶怎么学(这是份值得收藏的Unity强化学习指南)(5)

总之,Unity ml-agents允许你非常容易地构建一些有趣的东西。 我认为这是开始学习这门学科的好方法。

unity进阶怎么学(这是份值得收藏的Unity强化学习指南)(6)

编译出品

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页