机械鸡 2018-07-31
选自OpenAI,机器之心编译。
OpenAI 训练了一个机械臂,能够非常灵巧地控制物体。据介绍,该系统名为 Dactyl,经过了完全模拟训练,能够把知识迁移到现实中,即使用 OpenAI 一直以来研究的技术把训练得到的知识应用到真实物理环境中。Dactyl 使用了 OpenAI 在Dota2 系统 中使用的同一通用强化学习算法与代码。结果显示,没有对物理世界准确建模的情况下,在模拟环境中训练智能体并用它解决现实任务是可以做到的。
任务
Dactyl 是一个使用机械臂操控物体的系统。我们把一个方块或棱柱放在其手掌,然后要求 Dactyl 重置该物品的方向。例如,旋转方块,使其另外一面朝上。网络仅观察指尖坐标和三个常规 RGB 摄像头中的影像即可。
尽管几十年前人们就开发了首个机械臂,但长期以来,利用它们有效地操控物体一直是机械臂控制领域的一大难题。与其他问题(如移动)不同,使用传统机械臂技术实现灵活操控一直进展缓慢,而利用现有技术也很难操控现实世界中的物体。
用机械臂改变物体方向需要解决以下问题:
方法
Dactyl 学习完全在模拟中解决目标再定向任务,而无需任何人工输入。在完成训练阶段后,学习的策略可以在不需要任何微调的情况下迁移到机械臂。
Dactyl 实现 50 次连续旋转测试最大值。
机械操作的学习方法身处一个两难境地。模拟的机械臂可以很轻松的提供足够的数据来训练复杂的策略,但大多数的操作问题不能实现精确建模,这些策略进而也不能应用到真实机械臂上。即使是对两物体触碰后的变化进行建模——这是操作中最基础的问题——也是一个活跃研究领域,目前仍未有被广泛认可的解决方案。直接在物理机械臂上进行训练可以让策略在现实世界的物理中学习,但今天的算法需要多年的经验来解决像物体再定向这样的问题。
我们的方法是域随机化(domain randomization),这种方法通过在模拟场景中学习而不是尽量现实化,且模拟场景通过设计提供了各式各样的经验。这给了我们最好的方法:通过在模拟中学习,我们可以通过扩展来收集更多的经验,通过不强调现实意义,我们可以解决模拟器只能近似模拟的问题。
OpenAI 和一些其他组织也表示,域随机化可以处理越来越复杂的问题——域随机化甚至还用来训练 OpenAI Five。现在,我们想要看扩展域随机化是否能够解决当前机械臂技术中无法解决的问题。
我们通过使用 MuJoCo 物理引擎构建了机械臂系统的模拟版本。这个模拟仅仅是真实机械臂的粗略近似:
通过校准参数来匹配机械臂行为能使仿真更加逼真。但在目前的模拟器中,许多这样的效果没办法被精确建模。
相反,我们在分布式模拟环境中训练策略,其中物理和视觉属性是随机选择的。随机值是表示物理系统不确定性的自然方式,也能防止对单个模拟环境的过拟合。如果训练出的策略能够完成所有模拟环境的任务,它就很有可能完成真实世界的任务。
学习如何控制
通过构建支持迁移的模拟,我们减少了在实际场景中控制机械臂完成模拟任务的问题,该问题非常适合使用强化学习进行求解。虽然通过模拟的手臂操作一个物体已经非常困难了,但是在所有随机物理参数组合下学习如何操作物体要更难。
为了泛化到不同的环境,如果相同的策略能在不同的动力学环境中执行不同的动作,那无疑会非常有用。但是大多数动力学参数(dynamics parameters)并不能从单个观察样本中直接推断出,因此我们使用一种带记忆的神经网络 LSTM,这种记忆机制使得网络能学习动力学环境。LSTM 相比于不带记忆的策略大约实现了两倍的旋转。
Dactyl 使用 Rapid 进行学习,Rapid 是近端策略优化的大规模实现,它允许 OpenAI Five 解决 Dota 2 任务。我们使用了与 OpenAI Five 不同的模型架构、环境和超参数,但还是使用了相同的算法和训练代码。Rapid 使用 6144 个 CPU 核心与 8 张 GPU 来训练我们的策略,且智能体在 50 个小时内大约获得了 100 年的经验。
对于开发与测试,我们针对具有嵌入式运动追踪传感器的物体验证了控制策略,其中该传感器能分离控制与视觉网络的性能。
学习如何观察
Dactyl 旨在能操作任意目标,而不仅仅是那些经过特殊处理以支持追踪的目标。因此,Dactyl 使用常规的 RGB 摄像图来估计目标的位置与反向。
我们使用卷积神经网络训练一个姿态估计器,该神经网络能从位于机械臂周围的三个摄像头获取视频流输入,并输出估计的目标位置与方向。此外,使用三个摄像头能有效解决图像模糊和遮挡等问题。我们再次使用领域随机化训练该网络,并在 Unity 游戏开发平台上进行模拟,该平台相比于 Mujoco 可以建模更广泛的视觉现象。
控制网络能在给定姿态估计的情况下再调整目标,而视觉网络能将从摄像头获取的图像映射到目标的姿态。通过结合这两个独立的网络,Dactyl 能在观察到目标后就对它做一些操作。
用于学习评估方块姿态的训练图像样本。
结果
出现的行为
当部署了我们的系统时,我们注意到 Dactyl 使用了丰富的「掌中灵巧操控策略」(in-hand dexterous manipulation strategies)集合来求解任务。这些策略也被人类所常用。然而,我们并没有明确地教过他们这些策略;所有的行为都是自动发现的。
由Dactyl自动学习到的灵巧操控行为示例。
Dactyl 抓握类型(根据 GRASP taxonomy)。从左上到右下:指尖捏、掌捏、三脚架、四脚架、强力抓握和五指精确抓握。
我们观察到对于精确抓握,例如指尖捏,Dactyl 使用拇指和小指。人类更倾向于使用拇指以及食指或中指。然而,由于额外的自由度,机械臂的小指更加灵活,这也许解释了 Dactyl 为什么更钟爱用小指。这意味着 Dactyl 可以重新发现人类的抓握行为,但能将其进行调整以更好地适应其自身的极限和能力。
迁移能力
我们测试了 Dactyl 在丢掉它掌中物体之前可以实现多少次旋转,是超时,还是能成功实现 50 次旋转。在模拟环境训练的策略使机械臂能成功地在真实世界种成功地操控物体。
Dactyl 实验设置,包含机械臂、相空间运动追踪摄像机和 Basler RGB 摄像机。
对于方块操控任务,结合随机化的训练策略相比没有使用随机化的训练策略可以实现更多的旋转次数,如下所示。此外,使用结合视觉姿态估计的控制网络可以实现与直接从运动追踪传感器读取姿态相近的性能。
学习进展
大部分的训练时间都被用来使策略对不同的物理动态更加鲁棒。在模拟环境中不使用随机化来学习旋转物体需要大约 3 年的模拟经验,而在完全随机化的模拟环境中实现相似性能需要大约 100 年的模拟经验。
有和没有随机化过程的模拟经验(年)对应的学习进展。
惊喜之处
不足之处
我们还惊讶地发现有几项常用的技术并没有提升我们的结果。