OpenAI研究 学习灵巧

任务
Dactyl 是一个使用Shadow Dexterous Hand操纵对象的系统 。我们将一个物体(例如方块或棱镜)放在手掌中,然后让 Dactyl 将其重新定位到不同的方向;例如,旋转块以在顶部放置一个新面孔。该网络仅观察指尖的坐标和来自三个常规 RGB 相机的图像。
虽然第一只类人手是在几十年前开发出来的,但使用它们有效地操纵物体一直是机器人控制领域的一个长期挑战。与 运动等其他问题不同,使用传统机器人方法进行灵巧操作的进展缓慢,而且 目前的技术 在现实世界中操作物体的能力仍然有限。
重新定向手中的物体需要解决以下问题:
- 在现实世界中工作。 强化学习在模拟和视频游戏中取得了许多成功,但在现实世界中取得的成果相对有限。我们在物理机器人上测试 Dactyl。
- 高维控制。 Shadow Dexterous Hand 有 24 个自由度,而典型的机器人手臂只有 7 个自由度。
- 嘈杂和部分观察。 Dactyl 在物理世界中工作,因此必须处理嘈杂和延迟的传感器读数。当指尖传感器被其他手指或物体遮挡时,Dactyl 必须处理部分信息。物理系统的许多方面,如摩擦和滑移,都无法直接观察到,必须进行推断。
- 操纵多个物体。 Dactyl 被设计得足够灵活,可以重新定位多种对象。这意味着我们的方法不能使用仅适用于特定对象几何的策略。
我们的方法
Dactyl 学习完全在模拟中解决对象重定向任务,无需任何人工输入。在此训练阶段之后,学习到的策略无需任何微调即可在真实机器人上运行。

机器人操作的学习方法面临两难境地。模拟机器人可以轻松提供足够的数据来训练复杂的策略,但大多数操作问题无法足够准确地建模,无法将这些策略转移到真实机器人。即使对两个物体接触时发生的情况进行建模——操作中最基本的问题——也是一个 活跃的研究领域 ,没有广泛接受的解决方案。直接在物理机器人上进行训练允许策略从现实世界的物理学中学习,但今天的算法需要多年的经验才能解决对象重新定向等问题。
我们的方法, 域随机化,在旨在提供各种体验而不是最大化真实性的模拟中学习。这为我们提供了两种方法中最好的:通过在模拟中学习,我们可以通过扩大规模来快速收集更多经验,并且通过不再强调现实主义,我们可以解决模拟器只能近似建模的问题。
OpenAI 和 其他人已经证明 ,域随机化可以解决越来越复杂的问题——域随机化甚至被 用来训练 OpenAI Five。在这里,我们想看看扩大域随机化是否可以解决机器人当前方法无法解决的任务。

我们 使用MuJoCo物理引擎构建了 机器人设置的 模拟版本 。该模拟只是对真实机器人的粗略近似:
- 测量摩擦、阻尼和滚动阻力等物理属性既麻烦又困难。随着机器人经历磨损,它们也会随着时间而改变。
- MuJoCo 是一个 刚体 模拟器,这意味着它无法模拟手指尖处的可变形橡胶或肌腱的拉伸。
- 我们的机器人只能通过反复接触来操纵物体。然而,众所周知,接触力很难在模拟中准确再现。
通过校准其参数以匹配机器人行为,可以使模拟更加逼真,但其中许多影响根本无法在当前模拟器中准确建模。
相反,我们在随机选择物理和视觉属性的模拟环境分布上训练策略。随机值是一种自然的方式来表示我们对物理系统的不确定性,并且还可以防止过度拟合到单个模拟环境。如果一个策略可以在所有模拟环境中完成任务,它就更有可能在现实世界中完成它。
学习控制
通过构建支持迁移的模拟,我们将现实世界中控制机器人的问题简化为在模拟中完成任务,这是一个非常适合强化学习的问题。虽然在模拟手中操纵物体的任务已经 有些困难,但要学习在随机物理参数的所有组合中这样做要困难得多。
为了跨环境泛化,政策能够在具有不同动态的环境中采取不同的行动是有帮助的。由于无法从单一观察中推断出大多数动力学参数,因此我们使用了 LSTM—— 一种具有记忆的神经网络——使网络能够了解环境的动力学。LSTM 在模拟中实现的旋转次数是没有记忆的策略的两倍。
Dactyl 使用 Rapid进行学习,Rapid 是近端策略优化的大规模实施,旨在让 OpenAI Five 解决 Dota 2 问题。我们使用与 OpenAI Five 不同的模型架构、环境和超参数,但我们使用相同的算法和训练代码。Rapid 使用 6144 个 CPU 内核和 8 个 GPU 来训练我们的策略,在 50 小时内收集了大约一百年的经验。
对于开发和测试,我们针对具有嵌入式运动跟踪传感器的对象验证了我们的控制策略,以隔离我们的控制和视觉网络的性能。
学会看
Dactyl 旨在能够操纵任意对象,而不仅仅是那些经过特殊修改以支持跟踪的对象。因此,Dactyl 使用常规的 RGB 相机图像来估计物体的位置和方向。
我们使用卷积神经网络训练姿势估计器。神经网络从机器人手周围的三个摄像头获取视频流,并输出物体的估计位置和方向。我们使用多个摄像头来解决歧义和遮挡。我们再次使用域随机化仅在使用Unity游戏开发平台的模拟中训练该网络 ,该平台可以模拟比 Mujoco 更广泛的视觉现象。
通过结合这两个独立的网络,即根据物体的姿态重新定向物体的控制网络和将来自相机的图像映射到物体姿态的视觉网络,Dactyl 可以通过观察物体来操纵物体。

用于学习估计块姿态的示例训练图像。
结果
在部署我们的系统时,我们注意到 Dactyl 使用了一套丰富的 手巧操作策略 来解决任务。这些策略也被人类普遍使用。但是,我们并没有明确地将它们教给我们的系统;所有行为都是自主发现的。

根据 GRASP 分类法掌握 Dactyl 类型。从左上到右下:Tip Pinch、Palmar Pinch、Tripod、Quadpod、Power grass 和 5 Finger Precision grass。
我们观察到,对于精确抓握,例如 Tip Pinch 抓握,Dactyl 使用拇指和小指。人类倾向于使用拇指和食指或中指代替。然而,由于 额外的自由度,机器人手的小指更加灵活,这或许可以解释为什么 Dactyl 更喜欢它。这意味着 Dactyl 可以重新发现人类的抓握能力,但可以对其进行调整以更好地适应其自身身体的局限性和能力。
传输性能
我们测试了 Dactyl 在掉落物体、超时或达到 50 次成功之前可以旋转多少圈。我们纯粹在模拟中训练的政策能够成功地操纵现实世界中的物体。

配备 Shadow Dexterous Hand、PhaseSpace 运动跟踪相机和 Basler RGB 相机的 Dactyl 实验室设置。
对于块操作任务,经过随机化训练的策略可以比未经随机化训练的策略实现更多的旋转,如下面的结果所示。此外,使用具有从视觉估计的姿势的控制网络几乎与直接从运动跟踪传感器读取姿势一样好。
随机化 | 对象跟踪 | 最大成功次数 | 成功的中位数 |
所有随机化 | 想象 | 46 | 11.5 |
所有随机化 | 运动追踪 | 50 | 13 |
没有随机化 | 运动追踪 | 6个 | 0 |
学习进度
绝大多数训练时间都花在了使策略对不同的物理动力学具有鲁棒性上。学习在没有随机化的模拟中旋转对象需要大约 3 年的模拟经验,而在完全随机化的模拟中实现类似的性能需要大约 100 年的经验。
经过多年的模拟经验,有和没有随机化的学习进展。
是什么让我们感到惊讶
- 触觉感知对于操纵真实世界的物体不是必需的。我们的机器人只接收五个指尖的位置以及立方体的位置和方向。虽然机器人手的指尖上有触摸传感器,但我们不需要使用它们。通常,我们发现使用可以在模拟器中有效建模的有限传感器集比使用具有难以建模的值的丰富传感器集更好的性能。
- 为一个对象开发的随机化推广到具有相似属性的其他对象。在针对操纵块的问题开发了我们的系统之后,我们打印了一个八角棱柱,使用它的形状训练了一个新策略,并尝试操纵它。令我们有些惊讶的是,它仅使用我们为块设计的随机化就实现了高性能。相比之下,操纵球体的策略只能连续取得几次成功,这可能是因为我们没有随机化任何模拟滚动行为的模拟参数。
- 对于物理机器人,良好的系统工程与良好的算法一样重要。有一次,我们注意到一位工程师在运行完全相同的策略时始终取得比其他人更好的性能。后来我们发现他有一台速度更快的笔记本电脑,其中隐藏了一个会降低性能的时序错误。错误修复后,团队其他成员的性能得到改善。
什么没有成功
我们还惊讶地发现,许多常用的技术并没有改善我们的结果。
- 减少反应时间并没有提高性能。传统观点认为,减少动作之间的时间应该会提高性能,因为状态之间的变化更小,因此更容易预测。我们当前的动作间隔时间为 80 毫秒,小于 150-250 毫秒的人类反应时间,但明显大于大约 25 毫秒的神经网络计算时间。令人惊讶的是,将动作之间的时间减少到 40 毫秒需要额外的训练时间,但并没有显着提高现实世界中的性能。与当今常用的线性模型相比,这条经验法则可能不太适用于神经网络模型。
- 使用真实数据来训练我们的视觉策略并没有什么不同。在早期的实验中,我们结合使用了模拟数据和真实数据来改进我们的模型。真实数据是从我们针对具有嵌入式跟踪标记的对象的策略试验中收集的。然而,与模拟数据相比,真实数据具有明显的缺点。来自跟踪标记的位置信息具有延迟和测量误差。更糟糕的是,真实数据很容易因常见的配置更改而失效,这使得收集足够有用的数据变得很麻烦。随着我们方法的发展,我们的仅模拟器错误得到改善,直到它与我们混合使用模拟和真实数据的错误相匹配。我们最终的视觉模型是在没有真实数据的情况下训练的。
这个项目完成了 OpenAI 在过去两年中一直追求的人工智能开发的完整周期:我们开发了 一种新的学习算法,大规模扩展它来解决 困难的模拟任务,然后将所得系统应用于现实世界。以越来越大的规模重复这个循环 是我们追求的主要途径,以提高当今 AI 系统向安全通用人工智能发展的能力。