选自OpenAI
机器之心编译
本文发布八个仿真机器人环境和 Hindsight Experience Replay 的基线实现,这是过去一年的成果总结作者已用这些环境来训练实体机器人用到的模型,并同时发布乐一系列的机器人研究需求。
这次的发布包括了四个用到了 Fetch 研究平台(Fetch research platform)的环境和四个用到了 ShadowHand 机器人的平台。这些平台中包含的改造任务比 Gym 上现有的 MuJoCo 持续控制环境要难一点,所有的 MuJoCo 任务都可以简单地被最近发布的算法比如 PPO 解决。此外,我们新发布的环境使用真实的机器人模型,并需要智能体解决实际问题。
环境
该项目发布了 8 个 Gym 机器人环境,使用的是 MuJoCo 物理模拟器。这些环境包括:
Gym 是 OpenAI 发布的用于开发和比较强化学习算法的工具包。它可以教智能体很多事情,比如行走、跑动甚至玩乒乓球等。
Fetch
(左图)FetchReach-v0:Fetch 需要移动它的终端效应器到目标位置上。(右图)FetchSlide-v0:Fetch 需要打击一个冰球以使其滑动穿过长桌,然后停在目标位置上。
(左图)FetchPush-v0:Fetch 推动箱子直到其到达预定目标地点。(右图)FetchPickAndPlace-v0:Fetch 必须从桌子上用它的钳子拿起一个箱子然后移动到桌子上指定的地点。
ShadowHand
(左图)HandReach-v0:ShadowHand 用它的拇指和一个选定的其他手指延展到手掌上指定的地点。(右图)HandManipulateBlock-v0:ShadowHand 必须操纵一个块直到它到达了指定的地点和姿势。
(左图)HandManipulateEgg-v0:ShadowHand 必须去操纵一个鸡蛋直到它到达了指定的地点和姿势。(右图)HandManipulatePen-v0:ShadowHand 必须去操纵一支笔直到它到达了指定的地点和姿势。
目标
所有新任务都有「目标」这一概念,比如幻灯片任务中冰球的期望位置或手块操纵任务中块的期望方向。默认情况下如果期望目标未实现,所有环境使用-1 的稀疏奖励,如果目标达成则使用 0。这与一系列旧的 Gym 连续控制问题中使用的形状奖励形成了鲜明对比,比如带有形状奖励的 Walker2d-v2。
我们也为每个环境引入了带有紧密奖励的变体。但是,我们相信稀疏奖励在机器人应用中更为现实,并鼓励每个人使用稀疏奖励变体。
Hindsight Experience Replay
除却这些新的机器人环境,我们也给出了 Hindsight Experience Replay(HER)的代码,它是一个可从失败中汲取教训的强化学习算法。我们的结果表明 HER 通过仅有的稀疏奖励可从绝大多数新机器人问题中习得成功的策略。下面我们也展示了一些未来研究的潜在方向,可以进一步提升 HER 在这些任务上的表现。
理解 HER
要理解 HER,我们需要先看一看 FetchSlide 的内容,一个我们要学习去滑动在桌子上的冰球然后打击目标的任务。我们第一次尝试非常可能失败。除非我们非常走运,后面几次同样也会失败。一般强化学习算法不会从这样的经验学习什么,因为他们的奖励(reward)是固定值(在这个案例中是-1),这样的奖励不包含学习信号,从而算法不会去学习。
HER 形式化的关键是人在直觉上的行动: 即使我们在任何特定的目标上还没有成功,但至少实现了一个不同的方法。所以为什么我们不假设使用我们开始时希望实现的目标,来替代我们最初原始设定的目标?按这样做的话,强化学习算法从它达到一定目标时就能得到一个学习信号;即使它不是我们原本想要达到的。如果我们重复这个过程,我们终将学到怎样去达成任意的目标,包括哪些我们非常想要达到的目标。
这个方法使我们可以学习怎样去在桌子上滑动一个冰球,即便我们的奖励是稀疏的,并且我们可能永远不会在早期击到目标。我们叫这个技术 Hindsight Experience Replay,因为它会在这一集结束之后选择目标的重放经验(一种在策略之外的强化学习算法像 DQN 或 DDPG)。HER 可以被任何策略之外的强化学习算法包含在内(举例,HER 可以被 DDPG 包括,我们写作「DDPG+HER」)。
结果
我们发现 HER 在基于目标的环境和稀疏奖励中表现得极其出色。我们在新的任务中对比了 DDPG+HER 和原版 DDPG,该对比中的所有环境分别包含稀疏和密集型奖励两种版本。
HandManipulateBlockRotateXYZ-v0 中四个不同配置下的中位测试成功率(曲线)和四分位距(阴影区域)。数据在训练期间进行绘制,并在每一种配置上使用五个随机 Seed 求均值。
带有稀疏奖励的 DDPG+HER 明显优于其它所有的配置,并且只有稀疏奖励能在这个挑战性的任务中学习到成功的策略。有趣的是,DDPG + HER 在密集奖励的情况下也能够学习,但表现并不好。此外,原版 DDPG 在两种情况下都没有较好的表现。我们发现这种趋势在大多数环境中都是正确的,读者可以在技术报告论文中查看详情。
研究问题:HER
虽然 HER 是很有前途的方式,它能用像我们在本文提出的机器人环境那样的稀疏奖励来学习基于目标的复杂任务,但它仍有很大的提升空间。与我们最近发布的 Requests for Research 2.0 相似,我们对如何具体提升 HER 有一些思考与探索。
使用基于目标的环境
引入「目标」的理念需要对现有的 Gym API 做若干反向兼容的更改:
下面是一个示例,它与其中一个基于目标的新环境交互,并执行目标替换:
import numpy as np
import gym
env = gym.make('FetchReach-v0')
obs = env.reset()
done = False
def policy(observation, desired_goal):
# Here you would implement your smarter policy. In this case,
# we just sample random actions.
return env.action_space.sample()
while not done:
action = policy(obs['observation'], obs['desired_goal'])
obs, reward, done, info = env.step(action)
# If we want, we can substitute a goal here and re-compute
# the reward. For instance, we can just pretend that the desired
# goal was what we achieved all along.
substitute_goal = obs['achieved_goal'].copy()
substitute_reward = env.compute_reward(
obs['achieved_goal'], substitute_goal, info)
print('reward is {}, substitute_reward is {}'.format(
reward, substitute_reward))
新的基于目标的环境可以被用于与 Gym 兼容的强化学习算法,比如 Baselines。用 gym.wrappers.FlattenDictWrapper 来向量化基于字典的观察空间为一个数组:
import numpy as np
import gym
env = gym.make('FetchReach-v0')
# Simply wrap the goal-based environment using FlattenDictWrapper
# and specify the keys that you would like to use.
env = gym.wrappers.FlattenDictWrapper(
env, dict_keys=['observation', 'desired_goal'])
# From now on, you can use the wrapper env as per usual:
ob = env.reset()
print(ob.shape) # is now just an np.array
原文链接:https://blog.openai.com/ingredients-for-robotics-research/
本文为机器之心编译,转载请联系本公众号获得授权。