首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >学界 | OpenAI开源机器人仿真软件Roboschool:已整合OpenAI Gym

学界 | OpenAI开源机器人仿真软件Roboschool:已整合OpenAI Gym

作者头像
机器之心
发布2018-05-07 15:33:59
1.3K1
发布2018-05-07 15:33:59
举报
文章被收录于专栏:机器之心机器之心机器之心

选自OpenAI

作者:JOHN SCHULMAN、JACK CLARK、OLEG KLIMOV

机器之心编译

参与:黄小天、蒋思源

近日,OpenAI 在其官方博客上宣布推出 Roboschool,一款用于机器人仿真的开源软件,它基于 Bullet 物理引擎,并已实现与 OpenAI 之前发行的 Gym 之间的整合,也使得在同一环境中同时训练多个智能体变得简单。机器之心对该文进行了编译,并在文中附上了 Roboschool 和 OpenAI Gym 的 GitHub 项目地址。官方博客地址请见文末。

我们推出了 Roboschool,一款用于机器人仿真的开源软件,已与 OpenAI Gym 相整合。

  • Roboschool 项目地址:https://github.com/openai/roboschool
  • OpenAI Gym 项目地址:https://github.com/openai/gym
视频内容

3 个控制策略分别运行在 3 个彼此不同的机器人上,并在 Roboschool 中互相竞争。你可以通过运行 agent_zoo/demo_race1.py 重新演示这一场景。每次你运行这个脚本,会随机出现一组的机器人。

Roboschool 提供了模拟控制机器人的 OpenAI Gym 新环境。这些环境中的 8 个作为 MuJoCo 预存而实现自由替换,再调试就可以生成更多的逼真动作。我们同样涵盖了若干个具有挑战性的新环境。

Roboschool 也使得在相同环境中同时训练多个智能体变得简单。

在我们推出 Gym 之后,很多用户反馈了这样一个问题,MuJoCo 组件需要一个付费的许可证(尽管 MuJoCo 最近为个人和课堂教学增加了免费的学生许可证)。Roboschool 不再有这一限制,使得每个人皆可进行研究而无需担心预算。Roboschool 基于 Bullet Physics Engine(一个开源、受到广泛许可的物理库),该库已用于其他仿真软件,比如 Gazebo 和 V-REP。

环境

Roboschool 搭载有 12 个环境,其中有 Mujoco 用户熟悉的任务以及新挑战,比如类人步行者任务(the Humanoid walker task)的更难版本,多玩家 Pong 环境。我们计划不断扩展这一集合,并期待来自更多研究社区的贡献。

对于现有的 MuJoCo 环境,除了将其移植到 Bullet 之外,我们已经将其修改得更逼真。以下是我们移植的 3 个环境,并解释它们与其它已有环境的不同之处。

在 GitHub 库 agent_zoo 文件夹中你可以找到所有环境的训练策略。你同样也可以访问 demo_race 脚本来启动 3 个机器人之间的竞争。

交互和稳健的控制

在 OpenAI Gym 之前的若干个环境中,其目标是学习一个步行控制器。然而,这些环境包含了问题的一个基本版本,即目标设为简单地前进。实际上,行走策略将学习一个单循环轨迹,并留下大部分状态空间。进而,最后的策略将倾向于非常脆弱:很小的一个推动常常导致机器人崩溃并摔倒。

我们已添加了另外两个 3D 类人环境,这使得运动问题更加有趣、更具挑战性。这些环境需要交互式控制——机器人必须跑向旗帜,在这一过程中其姿态会随机变化。

视频内容

HumanoidFlagrun 被设计用来教机器人减速和转向。目标是机器人跑向旗帜,其姿态随机发生变化。

HumanoidFlagrunHarder 允许机器人摔倒,并给它时间重新站立起来。它也以直立或躺在地上的方式开始每一个 episode,并且机器人遭到白色立方体的持续轰击以使其偏离轨迹。

我们同时为 HumanoidFlagrun 和 HumanoidFlagrunHarder 提供已训练的策略。虽然智能体行走并不像普通人那样快速与自然,但这些策略可以从很多情景下恢复,它们也知道如何引导智能体。这种策略本身就是一种多层感知机,其并没有内部状态,所以我们相信是智能体在某些情况下会使用它们的手臂储存信息。

多参与者

Roboschool 能让你在同一环境下同时运行和训练多个智能体。我们最开始推出了 RoboschoolPong,但随后会推出更多的环境。

通过对多参与者的训练,你可以训练两个同样的智能体互为双方(所以智能体在和它自己玩),你也可以使用同样的算法训练两个不同的智能体,或甚至你能为智能体设置两种不同的算法。

视频内容

两个智能体互为对手学习玩 RoboschoolPong

多智能体设定展示了一些有趣的挑战。如果你同时训练两个玩家,你看到的学习曲线就如下图所示,该学习曲线由策略梯度法训练得出:

pong 的学习曲线,其中策略更新与策略梯度算法同时运行。

下面是对这一学习过程具体的解读:

  • 智能体 1(绿色)学习到其在顶部有时能击中球,所以它就移动到顶部。
  • 智能体 2(紫色)发现其对手在顶部,于是它将球击向底部并适应其他远处的智能体。
  • 智能体 1 最后发现如果它向底部移去就能击中球,但现在它开始守在底部,因为智能体 2 现在经常将球击向底部。

由这种方式,策略就已经震荡了,且经过几个小时的训练,两个智能体都没有学到任何有用的信息。对于生成对抗网络来说,对抗性设定是一个很实用的技巧,但我们认为这是一个十分有趣的研究问题,因为这种相互作用即使在简单的环境中都会产生复杂的策略,其也提供了一种很自然的课程。

研究社区已经为 OpenAI Gym 构建环境付出了很多努力,其中有一些是基于开源物理模拟器。在最近的项目中,研究者构建了一组 OpenAI Gym,其可以通过开源物理模拟器 DART 替代 MuJoCo。这表明甚至可以在两个物理模拟器 MuJoCo 和 DART 之间转移策略。

原文链接:https://blog.openai.com/roboschool/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-05-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器之心 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档