OpenAI研究 用机械手解魔方
我们训练了一对神经网络,用类人机器人的手来解魔方。神经网络完全在模拟中训练,使用与OpenAI Five相同的强化学习代码,并 结合一种称为自动域随机化 (ADR) 的新技术。该系统可以处理它在训练期间从未见过的情况,例如被一只 毛绒长颈鹿刺激。这表明强化学习不仅仅是虚拟任务的工具,还可以解决需要前所未有的灵巧性的物理世界问题。
人类的双手让我们解决了各种各样的任务。在过去 60 年的机器人技术中,人类用固定的双手完成的艰巨任务需要为 每项任务设计定制机器人。作为替代方案,人们花了 数十年的时间尝试使用通用机器人硬件,但由于其高度自由,收效甚微。特别是,我们在这里使用的硬件并不是新的——我们使用的机器人手已经存在了 15 年——但软件方法是。
自 2017 年 5 月以来,我们一直在尝试训练类人的机械手来解 魔方。我们设定这个目标是因为我们相信成功训练这样的机械手来完成复杂的操作任务为通用机器人奠定了基础。我们在 2017 年 7 月模拟解决了魔方。但截至 2018 年 7 月,我们只能 操作 机器人上的一个块。现在,我们已经达到了最初的目标。
魔方的完整解决方案。该视频实时播放,未进行任何编辑。
单手解魔方即使对人类来说也是一项具有挑战性的任务,孩子们需要几年的时间才能获得掌握它所需的灵活性。我们的机器人 仍然没有完善它的技术 ,因为它在 60% 的时间内解决了 Rubik 的魔方(并且只有 20% 的时间用于最 困难的 争夺)。
我们的方法
我们使用 强化学习 和 Kociemba 算法 来选择解决方案步骤,训练神经网络在 模拟中解决魔方。A[A]
我们专注于目前机器难以掌握的问题:感知和灵巧操控。因此,我们训练我们的神经网络以实现由 Kociemba 算法生成的所需的面部旋转和立方体翻转。

我们面临的最大挑战是在模拟中创建足够多样化的环境以捕捉现实世界的物理现象。对于像魔方或机械手这样复杂的物体,摩擦、弹性和动力学等因素很难测量和建模,我们发现仅靠域随机化是不够的。
为了克服这个问题,我们开发了一种称为自动域随机化(ADR)的新方法 ,它在模拟中不断地生成越来越困难的环境。[^footenote-adr]这使我们摆脱了对现实世界的准确模型,并使在模拟中学习的神经网络的迁移能够应用于现实世界。
ADR 从一个单一的、非随机化的环境开始,神经网络在其中学习解决魔方。随着神经网络在任务中变得更好并达到性能阈值,域随机化的数量会自动增加。这使得任务变得更加困难,因为神经网络现在必须学会泛化到更随机的环境。网络不断学习,直到它再次超过性能阈值,此时更多的随机化开始,并重复该过程。
ADR适用于魔方大小
我们随机化的参数之一是魔方的大小(上图)。ADR 从固定大小的魔方开始,随着训练的进行逐渐增加随机化范围。我们将相同的技术应用于所有其他参数,例如立方体的质量、机器人手指的摩擦力和手的视觉表面材料。因此,神经网络必须学会在所有这些越来越困难的条件下解决魔方。
自动与手动域随机化
域随机化要求我们手动指定随机化范围,这很困难,因为太多的随机化会使学习变得困难,但太少的随机化会阻碍转移到真实的机器人。ADR 通过在没有人为干预的情况下随时间自动扩大随机化范围来解决这个问题。ADR 消除了对领域知识的需求,使我们更容易将我们的方法应用于新任务。与手动域随机化相比,ADR 还使任务始终具有挑战性,训练永不收敛。
我们将 ADR 与块翻转任务上的手动域随机化进行了比较,我们已经有了一个 强大的基线。一开始,ADR 在真实机器人上的成功次数方面表现较差。但随着 ADR 增加熵(它是环境复杂性的度量),传输性能最终会在基线基础上翻倍——无需人工调整。
分析
鲁棒性测试
使用 ADR,我们能够在模拟中训练神经网络,从而解决真实机器人手上的魔方问题。这是因为 ADR 将网络暴露在无穷无尽的随机模拟中。正是这种在训练过程中接触到的复杂性让网络准备好从模拟世界转移到现实世界,因为它必须学会快速识别和适应它所面临的任何物理世界。
我们在解决魔方时应用于真实机器人手的扰动。所有视频实时播放。
为了测试我们方法的极限,我们在手解魔方时尝试了各种扰动。这不仅测试了我们控制网络的稳健性,还测试了我们的视觉网络,我们在这里使用它来估计立方体的位置和方向。
我们发现,我们使用 ADR 训练的系统对扰动具有惊人的鲁棒性,即使我们从未使用它们进行过训练:机器人可以在所有测试的扰动下成功地执行大多数翻转和面部旋转,尽管没有达到最佳性能。
紧急元学习
我们认为 元学习或学习学习是构建通用系统的重要先决条件,因为它使它们能够快速适应环境中不断变化的条件。ADR 背后的假设是,记忆增强网络与充分随机化的环境相结合会导致 出现元学习,其中网络实施一种学习算法,使其自身能够快速调整其行为以适应其部署的环境。乙[乙]
更具体地说,我们假设在无限复杂的环境中训练的具有有限容量的神经网络迫使网络学习一种特殊目的的学习算法,因为它不能记住每个单独环境的解决方案,并且不存在在所有随机化下都有效的单一稳健策略.
为了系统地测试这一点,我们测量了我们的神经网络在不同扰动(例如重置网络记忆、重置动力学或破坏关节)下每次翻转立方体(旋转立方体以使不同颜色面朝上)成功的时间。我们在模拟中执行这些实验,这使我们能够在受控环境中对超过 10,000 次试验的性能进行平均。
机器人因破坏随机关节而受损时的成功时间
一开始,随着神经网络成功实现更多翻转,每次连续成功的时间都会减少,因为网络学会了适应。当应用扰动时(上图中的垂直灰线),我们会看到成功时间的峰值。这是因为网络采用的策略在变化的环境中不起作用。然后网络重新学习新环境,我们再次看到成功时间减少到以前的基线。
我们还测量了失败概率并对面旋转(将顶面顺时针或逆时针旋转 90 度)进行了相同的实验,并找到了相同的适应模式。C[C]
请参阅我们的 论文 以获取完整结果。
了解我们的神经网络
可视化我们的网络使我们能够了解它们存储在内存中的内容。随着网络变得越来越复杂,这变得越来越重要。

我们的神经网络的记忆如上图所示。我们使用 可解释性工具箱中的一个构建块,即非负矩阵分解,将这个高维向量压缩成 6 组,并为每组分配一个独特的颜色。然后我们为每个时间步显示当前主导组的颜色。
我们发现每个记忆组都有一个与之相关的语义上有意义的行为。例如,我们可以通过仅查看网络内存的主导组来判断它是要旋转立方体还是在它发生之前顺时针旋转顶部 。
挑战
用机械手解魔方还是不容易的。我们的方法目前在应用需要 26 次面旋转的最大难度打乱时,有 20% 的时间可以解决 Rubik 的魔方 。对于需要 15 次旋转才能撤消的更简单的打乱,成功率为 60%。当 Rubik's Cube 被丢弃或达到超时时,我们认为尝试失败。然而,我们的网络能够从任何初始条件解决魔方。因此,如果立方体掉落,可以将其放回手中并继续求解。
我们通常发现我们的神经网络在前几次面部旋转和翻转过程中更有可能失败。之所以如此,是因为神经网络需要在早期旋转和翻转过程中平衡解决魔方与适应物理世界的问题。