【视频】| OpenAI开源机器人仿真软件Roboschool:已整合OpenAI Gym 学界-机器之心

选自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/
点击阅读原文,查看全部嘉宾阵容并报名参与机器之心 GMIS 2017 ↓↓↓