有史以来最精彩的自问自答:OpenAI 转方块的机械手

640?wx_fmt=gif

机械手任务之三 - 转鸡蛋,示意图

来源:AI 科技评论

摘要:今年 2 月,OpenAI 发起了一组机械手挑战,他们在基于 MuJoCo 物理模拟器的 Gym 环境中新设计了含有机械臂末端控制、机械手拿取物体的两组八个有难度的、早期强化学习算法已经不足以直接解决的问题。


这些具有一定难度的任务 OpenAI 自己也在研究,他们认为这是深度强化学习发展到新时代之后可以作为新标杆的算法测试任务,而且也欢迎其它机构与学校的研究人员一同研究这些任务,把深度强化学习的表现推上新的台阶。


(美国时间 7 月 30 日),OpenAI 已经就机械手任务之二的「转方块」出了自己答案,展示了一个异常灵活的转方块的机械手。而且更精彩的是,这个完全在模拟器中强化学习学到的方案还可以不需任何微调就直接迁移到真实的机械手上


640?wx_fmt=gif

机械手任务之二 - 转方块,真实机械手上运行


OpenAI 也制作了一个酷炫的介绍视频,请看下方。




OpenAI 把这套系统称作 Dactyl。OpenAI 过去一年中研究强化学习系统的偏好思路再次得到了体现:在完全模拟的环境中训练,然后把训练结果迁移到现实世界的机械结构中。


得益于可以大规模高速并行训练的模拟环境以及 OpenAI 在过去的研究中积累的系统设计与变量选择经验,这样的做法已经可以得到很好的效果。强化学习算法方面,OpenAI 再次选择了之前在 DOTA2 5v5 AI 中使用的 PPO(近端策略优化),这当然也再次展示了 PPO 作为通用强化学习算法的优越性。当然,系统最大的亮点还是可以完全在虚拟环境中训练,不需要对真实世界有准确的物理模型也可以直接迁移到真实机械手、真实物体的控制上。


640?wx_fmt=gif

两指夹住旋转、滑动、手指同步旋转,三种 Dactyl 完全自动学到的与人类类似的运动模式


任务介绍


任务中使用的机械手模型是参照 Shadow Dexterous Hand 设计的。这是一个完全仿照人手设计的具有 20 个驱动自由度、4 个半驱动自由度、共 24 个关节的机械手,它的大小也和人手大小相同。任务的要求是在机械手的掌心放置一个方块或者六棱柱,然后要求机械手把它翻转到一个指定的角度,比如把某个侧面翻到上方。系统只能观察到五指指尖的空间坐标以及三个固定角度的彩色摄像机采集到的画面。


640?wx_fmt=jpeg


虽然这种机械手面世已经有几十年了,但是如何让它像人类一样高效地控制物体一直都是机器人控制领域的老大难问题。与空间定位移动之类的问题不同,非常多自由度的机械手控制用传统控制方法不仅运行缓慢,而且必须对自由度做出一些限制,这也就随之限制了它们控制真实世界物体的能力。


想通过深度强化学习的方法让机械手翻转一个物体,需要考虑这几个问题:


  • 能在真实世界中工作。强化学习虽然已经在很多模拟器环境以及游戏中展现出了优秀的表现,但是强化学习解决真实世界任务的研究仍然非常有限。OpenAI 的最终目标就是要让 Dactyl 在真实的机器人上完成任务。

  • 高自由度控制。一般的机械臂(比如末端为夹子的工业机械臂)只有 7 个自由度,而机械手有多达 24 个自由度,仅仅是不让 5 个指头打架都有相当的难度。

  • 有噪声的部分信息观察。Dactyl 在真实世界中工作的时候不可避免地会遇到传感器读数的噪声和延迟问题。当某一个手指的传感器受到其它手指或者物体的影响而无法返回读数的时候,Dactyl 只能在部分信息的状况下工作。而且,真实物理系统许多细节(比如摩擦和滑动)是无法直接观察到的,系统必须自己做出推断。

  • 能操作多个物体。Dactyl 的设计目标是要足够灵活,能够翻转、定向多种不同种类的物体。这就意味着不能选用只对某一些特定的几何形状有效的策略。


OpenAI 的解决方法


总的来说,OpenAI 完全在模拟器环境中、不借助任何人类输入进行,让 Dactyl 通过强化学习训练物体定向任务。在训练结束后,学到的策略不需要任何微调环节就可以直接在真实机器人上工作。


不过其实,学习机器人控制方法面临着两难的困境。模拟环境中的机器人固然可以轻松地获得大量数据、训练出足够复杂的策略,但是大多数控制问题本身的建模都不够精确,导致学习到的策略难以迁移到真实世界的机器人上。即便只是对「两个物体接触」这样的简单现象建模,都还是一个开放性的科研问题,没有什么广为接受的、足够好的模型。直接在真实的机器人上进行训练自然可以根据真实世界的物理规律学习到好的策略,不过真实世界中的训练就只能按照真实世界的速度运行,目前的强化学习算法受限于样本效率问题,需要相当于好几年的尝试经验才能够解决物体转向这样的已经相对简单的问题。(财大气粗的谷歌还真的就这样做了,具体请见今天推文的第二篇。可以说,谷歌利用自己的财力优势替整个领域尝试了很多仅仅理论上可行的研究方法)


OpenAI 的训练技巧具体来说是「任务随机化」(domain randomization),它并不追求建模的最佳拟真化,而是在充满了丰富的变化的环境中学习到各种知识和经验。这样的做法兼备了模拟器和真实环境学习两种做法的优点:在模拟器环境中学习,可以让模拟器运行速度高于真实世界速度,快速积累经验;同时用「多变」替代了「逼真」之后,它也可以在模拟器只能近似建模的任务中得到更好的表现。


包括 OpenAI 在内的许多研究者都已经通过实验展示出了任务随机化对于越来越复杂的任务的明显的提升作用,近期的最有力的例子就是 OpenAI 训练出的 DOTA2 5v5 AI。在这个机械手控制的任务中,OpenAI 也是在探索大规模运行的任务随机化能否带来超出现有机器人控制方法的表现。


MuJoCo 物理模拟器相比真实的物理系统有这些不足:


  • 在真实机器人和方块上测量摩擦、阻尼、翻转阻力等物理属性很麻烦、很困难。而且随着机械手磨损、这些值也会逐渐发生变化;模拟器中只有带有固定参数的近似模型;

  • MuJoCo 是一个刚体运动的模拟器,这意味着它无法模拟机械手指尖的橡胶发生的接触形变,也无法模拟手指上肌腱的拉伸;

  • 在这个任务中机械手只能够靠多次接触方块来改变方块的方向,但接触力又众所周知地难以准确在模拟器中复现。


如果仔细地调节模拟器中的参数,模拟的机械手的行为确实可以和真实机械手的行为做到比较好的匹配,但是上面的这些作用以目前的模拟器就很难准确建模了,调节参数也无济于事。


所以 OpenAI 转而使用的方法是使用大规模分布式的模拟训练环境,而且这些环境中的物理属性和视觉特征都是随机选择的。随机地选择这些值是一种很自然的表征各种真实物理系统的不确定性的做法,当然这样也可以防止系统过拟合到一组特定的环境设置中。根据 OpenAI 研究人员们的想法,如果一种策略在所有这些不同的模拟环境中都可以完成任务,那么它也就很有可能可以直接在真实环境中完成任务。


在开发和测试阶段,OpenAI 通过内置的运动控制传感器对学习到的机械手控制策略进行验证,这也是为了能够隔绝 Dactyl 自身的控制网络与视觉网络,可以对系统表现做出「客观」的评价。


640?wx_fmt=jpeg

系统设计示意图 - 模拟环境中训练


A. 分布式工作站从大量随机环境中收集经验


B. 通过强化学习训练控制策略。这个策略根据物体的位姿和五个手指指尖的位置选择接下来的行动


C. 训练一个 CNN 根据三路模拟环境中的摄像头画面估计物体的位姿


640?wx_fmt=jpeg

系统设计示意图 - 迁移到真实世界


D. 位姿估计网络和控制策略网络共同工作,把任务从虚拟环境迁移到真实环境


学习控制


通过构建可以支持迁移的模拟环境,OpenAI 把真实世界的机器人控制问题简化为了模拟环境中完成任务的问题,现在它就很适合用强化学习解决。当然了,即便是在模拟器中,控制如此多自由度的机械手完成任务仍然是一个有挑战性的目标,何况不同的模拟环境中还有不同的随机物理属性,这意味着物体的运动方式都会与真实世界有所不同。


为了能够在不同的环境之间泛化,策略最好能够在不同物理参数的环境中做出不同的行为。考虑到大多数的动态物理参数都无法从单次观察中得出推断结果,OpenAI 选用了带有一定记忆能力的 LSTM 网络架构,实际上在模拟环境中基于 LSTM 得到的策略做出的旋转动作也要比其它不具有记忆能力的策略多一倍。


Dactyl 使用的大规模分布式 PPO 实现「Rapid」是和 DOTA2 5v5 AI 一样的。在这个任务中,模型架构、环境、超参数有所区别,但算法和训练代码是一致的。Rapid 训练策略使用了 6144 个 CPU 和 8 个 GPU,训练 50 小时就可以采集到相当于真实世界中 100 年长度的经验。


学习观察


OpenAI 的设计目标是让 Dactyl 能够控制任意的物体,不局限于那些经过专门的改动以后更好追踪的物体。所以 Dactyl 也就选用了一组正常的彩色摄像头对物体的位置和姿态进行估计。


OpenAI 训练了一个 CNN 用来估计位姿。这个网络把布置在机械手周围的三个摄像头采集的视频流作为输入,然后输出估计的物体位置和物体姿态。多个摄像头的使用是为了避免判断不清以及信号延迟。训练这个网络时 OpenAI 也使用了任务随机化的做法,环境随之暂时切换为了 Unity 游戏开发平台,它对各种视觉效果的支持丰富程度要比 MuJoCo 高得多。


「控制」与「观察」两个独立的网络互相配合,控制网络可以根据给定的物体位姿重新调整它的位姿,视觉网络根据摄像头采集的画面确认物体当前的实际位姿。Dactyl 就这样通过观察控制了手里的物体。


640?wx_fmt=jpeg

学习位姿估计的图像的一些示例


实验结果


逐渐产生的行为


在部署系统的时候,OpenAI 的研究人员们注意到 Dactyl 会使用一系列丰富的灵活手掌内操纵技巧来解决在这个任务;人类其实也经常会使用这些技巧。而及这些技巧并不需要人类显式地教会算法,它们全都是算法自己发掘、自己学到的。


640?wx_fmt=gif


两指夹住旋转、滑动、手指同步旋转,三种 Dactyl 完全自动学到的与人类类似的运动模式


640?wx_fmt=jpeg


Dactyl 学到的六种不同的握持姿势。根据握持分类学,从左上到右下依次为:指尖捏、掌心捏、三指握持、四指握持、强力握持以及 5 指精确握持。


OpenAI 通过观察发现,对于几种高精确度的握持方法,比如两指指尖捏,Dactyl 倾向于使用大拇指和小拇指;人类比较习惯的自然是用大拇指+食指或者大拇指+中指。不过值得指出的是,机械手的小拇指比人类的多出一个自由度,更为灵活,这可以作为 Dactyl 学会了这样行为的一个解释。这也可以理解为,Dactyl 一面可以自己发现人类常用的手部姿态,同时也可以重新适应这些姿态,让它们更符合自己的肢体的限制和能力。


( AI 科技评论注:多提供一个思考角度,从生物进化的角度来说,手指握持的方式是和手指的结构相互适应的。使用一个「类人」的机械手,学习到「类人」的握持姿势并不奇怪。另一方面,握持姿势的选择除了自由度,也与生物结构有关,食指比小拇指更有力、也更灵活,这与人类更常用食指也是相辅相成)


系统表现的迁移


OpenAI 在真实环境的机械手与摄像头配置上测试了 Dactyl 在物体脱手、或者时间用完之前能翻转的次数,最高计数 50 次。在模拟器环境中训练出的策略可以直接成功地操控真实世界中的物体。


640?wx_fmt=jpeg


对于控制方块的任务,使用了「任务随机化」训练得到的策略能成功完成翻转的次数要多得多,如下表。并且,通过摄像头信号估计位姿进行控制得到的结果和使用运动追踪传感器得到的结果差不多,这也体现出了视觉估计网络的高准确率。


640?wx_fmt=jpeg


学习过程


训练过程中的大多数时间都花在了提升策略在不同物理属性环境中的鲁棒性上。在不使用随机化时,在虚拟环境中学会翻转物体需要的经验大概相当于 3 年那么长,而在全面使用了随机化的设置下达到类似的表现需要大概相当于 100 年的经验。(不过我们也别忘了,不使用随机化时训练出的策略是无法直接迁移到真实世界的机器人的,因为学到的策略只针对模拟器中那一组特定的物理参数有效)


实验中的有趣发现


  • 对于真实世界物体的控制来说,触觉感知并不是必须的。Dactyl 接收到的信号只包括 5 个手指指尖的位置以及方块的位置和方向。机械手上确实带有触觉传感器,但是 OpenAI 并没有使用它们就可以达到目标。总地来说,相比于有一大批传感器、一大批难以建模的数值,OpenAI 认为一组数目有限但可以在模拟环境中高效建模的传感器可以帮助带来更好的表现。

  • 为某一个物体做的随机化设定可以泛化到其它属性类似的物体上。在控制方块的系统开发完成之后,OpenAI 制作了一个六棱柱,根据它的外型训练了一个新的策略,然后尝试让机械手控制它。有点出乎他们意料的是,只依靠一开始为控制方块设计的随机化设置,机械手就能很好地控制六棱柱了。相比之下,重新训练一个控制圆球的策略就不能连续成功很多次,可能是因为并没有针对转动行为设计适合的随机化模拟参数。

  • 对于真实机器人来说,好的系统工程和好的算法一样重要。在研究过程中,OpenAI 团队发现几个工程师都尝试一样的策略的时候,其中一位得到的表现总是要比其他几位的好得多。后来他们发现是因为这位工程师的笔记本电脑比较快,一个会影响表现的计时器 bug 从而就不会出现。这个 bug 解决之后,整个团队运行策略的表现都得到了提高。



没有达到预期效果的项目


除了上面的惊喜之外,OpenAI 也惊讶地发现一些强化学习连续控制中的常用技巧并没能帮助他们提高系统的表现。


  • 减短反应时间并没有提高系统表现。大家普遍认为减短做出动作的时间间隔能够提高系统表现,因为这样一来前后状态之间的变化会比较小,也就更容易预测。目前 OpenAI 设定的动作时间间隔是 80ms,要比人类一般的反应时间 150~250ms 短一些,但是仍然比神经网络计算所需的大概 25ms 左右的时间长得多。令人惊讶的是,把动作时间间隔缩短到 40ms 需要花费更长的训练时间,但同时并没有给真实世界机械手的表现带来可感的提升。有一种可能是,这种公认有效的做法用在神经网络模型上的效果确实要比用在目前广泛使用的线性控制模型的效果差一些。

  • 用真实数据训练视觉策略并没有带来什么提升。在早期的实验中,OpenAI 综合使用了模拟的以及真实的数据用来改进模型。真实数据的采集来自一个带有追踪标记的物体在测试策略的机械手上的实验过程。然而,真实数据相比模拟的数据有着显著的劣势。从追踪标记得到的位置信息带有延迟和测量误差,而且更糟糕的是,随便改变一点参数就会让已经采集到的真实数据变得完全没用。随着 OpenAI 持续改进自己的方法,只使用模拟数据训练的模型的表现也在不停提高,已经达到了模拟和真实数据混合训练的模型的错误率水平。最终使用的模型也就完全没有使用真实数据。


总结


对 OpenAI 来说,这个项目是他们过去两年中追求的完整 AI 研发循环的最好体现:先开发新的强化学习算法,再拓展它的运行规模、在模拟环境中训练解决困难的问题,最后再把得到的系统应用在真实世界中。以越来越大的规模沿着这种途径不停前进也是 OpenAI 为自己规划的通往安全的通用人工智能的主要路径。


OpenAI 已经展示了联通强化学习理论研究与现实世界问题探索的一座桥梁,我们也期待看到这个领域内更多的理论和现实世界问题联动的案例。


640?wx_fmt=jpeg

未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能,互联网和脑科学交叉研究机构。


未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测;开展互联网(城市)云脑研究计划,构建互联网(城市)云脑技术和企业图谱,为提升企业,行业与城市的智能水平服务。

  如果您对实验室的研究感兴趣,欢迎加入未来智能实验室线上平台。扫描以下二维码或点击本文左下角“阅读原文”

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/494885.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

寻找两个有序数组的中位数(虚拟数组图文详解)

思路一(暴力): 当看到这个题目的时候可能会觉的是不是系统高估了这个题目,这个这么简单,只需要将两个数组合并,排序然后合并就好了。这样做确实可以求出中位数,但是并不能说是完成题目的要求&am…

uva540

题目的意思大概就是现在让你做一个数据结构,具体的应该是一个队列,有一堆元素,这堆元素拥有两个特性,一是它的值,二是它所在的team值。这个队列满足以下的一些性质(操作)。 ENQUEUE(k) &#xf…

【决策】Waymo无人出租车年底发射,现已进入定价环节 | 公交部门竟成友军?...

开车栗 发自 凹非寺量子位 出品 | 公众号 QbitAI按照Waymo的计划,今年年底之前,他们的无人出租车服务就要进入市场了。现在,无人的士已进入了定价环节,紧张刺激。Waymo希望从此开始,人类能一点一点抛弃私家车&#xff…

盘点那些具有“爆款”潜力的智能家居产品

来源:OFweek 摘要:智能家居已经火了有一段时间,然而目前真正普及的家庭并不多。从长远来看,智能家居是一种更环保、智能、舒适、安全的人居环境,它涉及物联网、人工智能等相关技术,是人们理想的一种生活方式…

TCP/IP校验和(浅析+实例)

校验和的作用   按照协议的规定,报文到达每一层,首先验证校验和是否正确,丢弃掉不正确的报文,再才会进行后续操作。  那么校验和是怎么计算的呢?  校验和的计算方法(以 IP 首部中的校验和为例) 方法是计算16位的二…

4位数学家获得2018年菲尔兹奖

来源:科学网2018年菲尔兹奖8月1日在巴西里约热内卢市举行的第28届国际数学家大会上揭晓,获奖者为伊朗裔数学家Caucher Birkar、意大利数学家Alessio Figalli、德国数学家Peter Scholze,以及印澳裔数学家Akshay Venkatesh。4位获奖者对数学领域…

科学研究发现,盲人用时间感知空间

来源:中国科学报摘要:在书籍和电影中,盲人通常用超敏感的听力帮助他们在现实世界中穿梭。在书籍和电影中,盲人通常用超敏感的听力帮助他们在现实世界中穿梭。但是,8月1日发表在iScience杂志上的一项研究表明&#xff0…

传输层(学习笔记)

传输层基本概念: 传输层负责端与端之间的数据传,主要有两大知识点:TCP和UDP 五元组 在TCP/IP协议中, 用 “源IP”, “源端口号”, “目的IP”, “目的端口号”, “协议号” 这样一个五元组来标识一个通信(可以通过netstat -n查看); 端口号范…

C# 析构函数(Destructor)和终结器(Finalizer)——托管资源的释放

本文内容 使用析构函数释放资源 Object.Finalize 方法 资源的显式释放 使用析构函数释放资源 析构函数用于析构类的实例。 不能在结构中定义析构函数。只能对类使用析构函数。 一个类只能有一个析构函数。 无法继承或重载析构函数。 无法调用析构函数。它们是被自动调用的。 析…

教育部:建设100+AI特色专业, 500万AI人才缺口要补上!

来源:网络大数据摘要:为落实《国务院关于印发新一代人工智能发展规划的通知》,为我国新一代人工智能发展提供战略支撑,教育部在近日正式发布了《高等学校人工智能创新行动计划》。AI再次被提上国家级日程!为落实《国务院关于印发新…

TCP三次握手详解及面试题

为什么必须是三次握手? 大家都知道传输层(点击这里去传输层)中的TCP协议是面向连接的,提供可靠的连接服务,其中最出名的就是三次握手和四次挥手,今天先讲解三次握手(四次挥手点这里)…

git 撤销修改:未push 、已push

场景&#xff1a;不小心把一次错误的代码push到远程服务器上的分支上&#xff0c;需要立即删除/撤销这次代码提交。 具体方法&#xff0c;git命令&#xff1a; git loggit reset --hard <commit_id>git push origin HEAD --force【命令详解】 获取commit_id&#xff1…

一条光纤的传输容量高达 661Tbps(附论文)

来源&#xff1a;云头条摘要&#xff1a;研究人员将全世界目前的光纤容量塞入到一条链路中。社会对数据的渴求永无止境。事实上&#xff0c;想想这个就令人相当惊讶&#xff1a;平均的互联网流量是每秒几百兆兆位&#xff0c;耗电量约占我们发电量的8%。这一切用来传输猫咪即时…

tcp四次挥手,为什么是四次?

上一篇博客说了三次握手为什么是是三次&#xff08;点这里&#xff09;&#xff0c;那么现在就介绍一下四次挥手。大家都知道TCP是全双工的&#xff0c;再建立连接时的三次握手中的SYN和ACK一起发送&#xff0c;这里就会有疑问&#xff0c;为什么在四次挥手的时候没有将SYN和AC…

市值破万亿美金的苹果 近年在AI上搞了些新动作

来源&#xff1a;网易智能2007年&#xff0c;中石油在中国A股市场上市首日市值曾达到1.1万亿美元。11年之后&#xff0c;当地时间8月2日&#xff0c;苹果公司盘中市值也超过1万亿美金&#xff0c;成为继中石油后的第二家破万亿公司。苹果股价以207.39美元收盘&#xff0c;涨幅为…

网络层(学习笔记)

网络层 负责地址管理与路由选择&#xff0c;在复杂的通信环境中 IP协议 IP协议头格式 4位协议版本&#xff1a;IPV4/IPV6 4位头部长度&#xff1a;表示ip头有多长&#xff0c;最长60字节&#xff0c;最小20字节 8位服务类型&#xff1a;TOS字段&#xff08;最小延时&#xff…

jQuery 的各种练习

这个星期最大的感悟是&#xff0c;只有在实践中不断的总结&#xff0c;才能打下扎实基本功。这是本周主要做的东西&#xff1a; 第一个图主要为对jQuery ajax的练习。后面两个计算器和新浪微博页面为之前做好的页面&#xff0c;这次用一个load()函数把它们加载进来。不过中间的…

蜜糖变砒霜:90%美国公司区块链项目将不再重启

来源&#xff1a;雷锋网摘要&#xff1a;市场对区块链的“迷恋”来得轰轰烈烈&#xff0c;退得悄无声息。一方面是科技巨头占山为王&#xff0c;另一方面不少此前号称投入研发区块链的公司已经把目光收回&#xff0c;并且表示再也不会重启这些试点项目。有人觉得区块链就此沉寂…