Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

机器人仿真软件Roboschool:已整合OpenAI Gym

近日,OpenAI 在其官方博客上宣布推出 Roboschool,一款用于机器人仿真的开源软件,它基于 Bullet 物理引擎,并已实现与 OpenAI 之前发行的 Gym 之间的整合,也使得在同一环境中同时训练多个智能体变得简单。


我们推出了 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 个环境,并解释它们与其它已有环境的不同之处。

20170516090029.png

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

交互和稳健的控制

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


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

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


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


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

多参与者

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


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

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


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

image (3).png

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


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

  • 智能体 1(绿色)学习到其在顶部有时能击中球,所以它就移动到顶部。

  • 智能体 2(紫色)发现其对手在顶部,于是它将球击向底部并适应其他远处的智能体。

  • 智能体 1 最后发现如果它向底部移去就能击中球,但现在它开始守在底部,因为智能体 2 现在经常将球击向底部。

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


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

产业OpenAI工程Roboschool开源
暂无评论
暂无评论~