借助于手臂,人类可以完全各种各样的任务。而在机器人过去 60 年的发展历程中,人类通过双手可以完成各项复杂的任务,但却需要针对每项任务设计特定的机器人。
那么,机器人是否可以像人一样玩魔方呢?自 2017 年 5 月以来,OpenAI 的研究者一直在尝试训练类人机械手来解决玩魔方问题。2017 年 7 月,他们在模拟环境下实现了机械手玩魔方。但截至 2018 年 7 月,研究者只能实现玩简单魔方。现在,他们终于实现了机械手玩魔方的目标。
单手玩魔方对于人类来说都很困难。所以,OpenAI 的技术还不是足够完善,目前,OpenAI 的技术可以让机器人解决 60% 的魔方情况,在最困难的魔方上只能解决 20%。
在机械手玩魔方的过程中,研究者还对其施加了各式各样的干扰,如戴橡胶手套、绑住食指和中指、蒙上一块布、「假长颈鹿」干扰和用笔戳等。值得欣慰的是,OpenAI 的机械手在各种干扰下依然不为所动,淡定地玩「自己的」魔方。
论文地址:https://d4mucfpksywv.cloudfront.net/papers/solving-rubiks-cube.pdf
两项任务
在论文中,OpenAI 的研究者考虑了两项都使用影子灵巧手指(Shadow Dexterous Hand)的不同任务:魔方块的重定向和完成魔方。
魔方块重定向
魔方块重定向任务是为了旋转方块到期望的目标方向上。如果一个方块的旋转弧度与目标方向保持在 0.4 之内,则认为该方块旋转到了正确的方向,然后也就生成一个新的随机目标(即另一个方块也开始旋转)。
完成魔方
研究者提出利用相同的影子灵巧手指来解决魔方任务。简言之,魔方是一种内部具有 6 种自由度的益智游戏,包含 26 个通过接头和弹簧系统相连的方块。每个方块有 6 个面,可以自由旋转,从而带动整个魔方转动。如果魔方的 6 个面都成为一种颜色,则认为魔方任务完成。
方法
研究者训练神经网络,并利用强化学习来完成魔方任务。他们在训练过程中遇到了一个最大挑战,即在模拟中需要创建足够多样化的环境,从而尽可能多地捕捉到真实世界的物理状态。摩擦力、弹性和力度这些因素对于复杂的魔方或机械手而言是难以测量和建模的,并且发现仅仅依靠域随机化是不够的。
基于此,研究者提出利用自动域随机化的方法在模拟中不断地生成越来越困难的环境。
自动域随机化(ADR)
ADR 从单一的、非随机环境开始,这里神经网络尝试学习解决魔方问题。当神经网络在任务表现上变得更好并达到了性能门槛后,随机化域的数量自动增加,使得任务变得更难解决。神经网络继续学习,直到性能达到最好,然后再增加随机化的环境,如此反复。
通过 ADR,研究者可以训练一个神经网络,用于解决真实机器人手中的魔方问题。这是因为 ADR 输入的各种环境信息可以让网络接触到各种各样的随机模拟。
(d)将模型迁移到真实世界。研究者使用三个摄像机获得魔方的姿态信息,并使用 CNN 进行处理,同时使用 3D 姿态捕捉系统获得机器人手指的位置信息。而魔方的朝向则使用同一个视觉状态评估器或 Giiker 方块——一个有着内部嵌入传感器的方法输入到策略网络中。
行为、奖励和目标
研究者在策略网络上使用了循环神经网络的架构。他们使用有着 ReLU 激活函数的全连接层作为输入层,并使用一个单层 LSTM 层进行处理。
价值网络和策略网络是分开的,但是两者有着一样的架构。研究者将 LSTM 输出映射为一个标量值。
图 12:(a)价值网络和(b)策略网络的模型架构。
视觉模型
图 13:在每一面中间有一个缺口的魔方。(a)是模拟状态;(b)是现实中的魔方。
为了模拟魔方的视觉信息,研究者使用左、上、右三个摄像机捕捉图像,然后使用 ResNet50 提取每个图像的特征。这些特征向量被展开、级联、然后输入进一个堆栈式全连接层,用于预测魔方的整体状态,包括位置、朝向和角度等。
整体的架构如图所示:
实验结果
参考链接:
https://openai.com/blog/solving-rubiks-cube/