雷锋网 AI 科技评论消息,OpenAI 今日发布了一个用于模拟机器人的控制训练的开源软件 Roboschool,根据介绍,其整合了前段时间发布的 OpenAI Gym。
OpenAI Gym 是一款研发与比较强化算法的工具包,此前用户反馈的问题在于价格。虽然已经向个人或有课程学习需要的学生免费开放,但负责机器人控制的 MuJoCo 组件依然需要收费。
不过在基于 OpenAI Gym 环境的 Roboschool 里,用户不必再担心这一额外花费。据雷锋网了解,有八个模拟器可以作为 MoJoCo 组件的免费替代品,还能进行重新调试,以产生更多逼真的动作。另外四个任务则提供了更具挑战的任务,比如类人直立行走的任务,或是多玩家乒乓赛(multiplayer Pong)。
这样一来,Roboschool 得以让用户更方便地在同一个场景中同时训练多个智能体。OpenAI 表示,他们希望随着时间推移,能够获得更多的集合拓展,此外也期待社区后续的产出贡献。
如视频所示,你可以在 Roboschool 的界面上让三个不同的机器人进行跑步竞赛。而在 agent_zoo/demo_race1.py. 上运行此脚本时,每次都会随机出现不同的机器人
OpenAI 团队已经将 MuJoCo 上的一些模拟器移植到 Bullet 上,并做了逼真化的处理。下图的三个模拟器都有了不同程度的改进。比如 Walker2d 在缓慢走动时,细节更加真实;而原有的蚂蚁(Ant)变得更「重」了一些,这样它就需要借助四条腿来前进;人类行走者甚至还借鉴了能量损耗原则(=转矩×角速度),并以「跑偏」的形式显现出来。
在 agent_zoo 文件夹中,你可以看到三个模拟器的不同训练原则;并在 demo_race 里找到他们三个的跑步比赛视频 demoj 脚本
此前的 OpenAI Gym 模拟器旨在掌握步行控制的要义,只需要学会简单地前进就够了。但实际情况可能复杂许多,且有很多地方尚未被探索过,因此模拟器的单循环策略开始变得不管用, 可能轻轻推模拟器一把,都会让机器人摔个狗啃泥而动弹不得,更不要说完成任务了。
为了解决这一问题,在全新的 Roboschool 中,OpenAI 的研究者设计了两个 3D 类人的模拟器,而在训练任务 HumanoidFlagrun 中,机器人需要朝着不断变动位置的旗子跑去,这一过程能够训练机器人学会放缓速度并转动方向。
而在「困难模式」的 HumanoidFlagrunHarder 中,机器人被赋予「跌倒」的权利,并尝试用双腿站起来。因此,任务的一开始,很可能机器人是躺在地上的。此外,机器人还要抵御不时的「攻击」(见视频),防止因为来自四面八方砸来的小白块而摔倒。
HumanoidFlagrun 和 HumanoidFlagrunHarder 的训练策略也已经在 GitHub 上开源。虽然机器人的步伐看上去并不那么快,形态也不像人般自然,但它所采取的策略已经足以应对非常多的状况,也知道如何控制机器人。我们可以把这个策略当作一个多层感知机,甚于它没有内部状态,我们认为,在某些情况下,智能体应该是采用了自己的手臂存储信息。
就像雷锋网在前文所提及的一样,Roboschool 致力于让用户在同一模拟器上训练多个智能体,而 RoboschoolPong 就是一个很好的开始,与此同时,还有一大波模拟器正在路上。
通过「左右互博」的乒乓球赛,用户得以在两方同时训练同一个智能体,或是采用同样的算法训练两个不同的智能体,甚至,你也可以让两个独立智能体自行训练(如下面视频所示)。
多智能体的设定也带来了一些有意思的挑战。如果你同时训练两方玩家,你很可能会看到如下图所示的曲线图:
策略更新与策略梯度同时进行
将会呈现如下结果:
智能体 1(绿线)学到在顶部可以成功回球,因此它经常往顶部移动;
智能体 2(紫线)发现对手经常往顶部移动,因此会试着往底部回球;
智能体 1 随后也学会要往底部移动才能成功回球,而且智能体 2 经常往底部回球,因此它也经常「驻守」底部了。
经历这样的循环后,策略开始震荡,而经历了数小时的训练后,双方都没法再学到什么有用的内容了。而在 GANs 中,在对抗性中进行学习屡试不爽,而 OpenAI 团队的人认为这是一个非常有意思的研究问题。即便是在简单的环境中,双方的交互也会产生复杂的策略,也能提供符合实际的借鉴。
除了上文介绍的 Roboschool 外,OpenAI 团队也在 OpenAI Gym 中做了不少研究工作。详情可以参考以下链接:
Roboschool 的 GitHub 页面:https://github.com/openai/roboschool
OpenAI Gym 的 GitHub 页面:https://github.com/openai/gym