技术控

    今日:0| 主题:63445
收藏本版 (1)
最新软件应用技术尽在掌握

[其他] 最前沿 之 谷歌的协作机械臂

[复制链接]
銩失Dё愛° 发表于 2016-10-7 19:30:05
453 3

最前沿 之 谷歌的协作机械臂

最前沿 之 谷歌的协作机械臂

  本文由我和李艺颖共同撰写。
  1 前言

   前几天也就是2016年10月3号,Google Research Blog上发表了最新的Blog,介绍他们在机器人上的工作:  https:// research.googleblog.com /2016/10/how-robots-can-acquire-new-skills-from.html   
   

最前沿 之 谷歌的协作机械臂

最前沿 之 谷歌的协作机械臂
现在Google们都喜欢发文章+写博客的套路,似乎不太需要我们做面向大众的解读了。因此,本文决定不介绍他们基本的工作了,我们来研究一下他们的具体工作,来点干货。
  这次Google联合了Google Brain和DeepMind一起搞,一次发了四篇文章(够狠,链接转自官方博客):
   【1】  Deep Reinforcement Learning for Robotic Manipulation   . Shixiang Gu, Ethan Holly, Timothy Lillicrap, Sergey Levine. [  video   ]
   【2】  Deep Visual Foresight for Planning Robot Motion   . Chelsea Finn, Sergey Levine. [  video   ] [  data   ]
   【3】  Collective Robot Reinforcement Learning with Distributed Asynchronous Guided Policy Search   .
   Ali Yahya, Adrian Li, Mrinal Kalakrishnan, Yevgen Chebotar, Sergey Levine. [  video   ]
   【4】  Path Integral Guided Policy Search   . Yevgen Chebotar, Mrinal Kalakrishnan, Ali Yahya, Adrian Li, Stefan Schaal, Sergey Levine. [  video   ]
  所以,今天我们来以快速的分析一下这四篇文章。
  2 Deep Reinforcement Learning for Robotic Manipulation

  

最前沿 之 谷歌的协作机械臂

最前沿 之 谷歌的协作机械臂
  这篇文章的题目弄得很大,用深度增强学习来解决机器人的操纵问题。具体一点就是让机器人从零开始学会开门。
  文章中表示实现让机械臂自己学会开门就是他们的贡献,他们是第一个做出这个demonstration的。当然,这么说也是ok的。
  对于理论上的创新,他们表示他们拓展了NAF算法,变成异步NAF。我表示异步的思想早就有了,而且他们的异步NAF的实现方式实在是太太太简单了。就是
   用多个线程收集不同机器人的数据,然后用一个线程去训练,并且训练线程在服务器上,训练后不断把最新的神经网络参数传递给每一个机器人用于新的采样
   可能让机器人自己开门这个任务在我看来是本来就能实现的,所以其实并没有太多震撼的地方。而且,在这篇文章中,并 不使用视觉输入!
  不使用视觉输入,声称能让机器人学会开门有多大意义呢?
  从文章中可以看到,对于开门这个任务,门把手的位置的给定的:
  In addition, we append a target position to the state, which depends on the task: for the door opening, this is the handle position when the door is closed and the quaternion measurement of the sensor attached to the door frame.
   大家看到了吧,不但门把手的位置,连门的姿态也就是四元数quaternion也是有传感器来测量的。那么,这样号称做了一个很屌的Demonstration真的有意思吗?比较 质疑这篇文章的贡献 。这里使用的神经网络也只是两个200的全连接神经网络。某种程度上讲,其实这个任务的状态输入是低维而不是高维的。我觉得如果这篇文章能够完全使用图像输入来实现端到端自学习的话,那么就很厉害!虽然该团队之前有  一篇文章   就是用视觉输入,但是用了十几台机器人,并且训练几个月来收集数据。现在这个任务只要几小时,不过没有视觉,意义不够大。
   关于NAF算法,可以参考本专栏的: DQN从入门到放弃7 连续控制DQN算法-NAF - 智能单元 - 知乎专栏
   关于DDPG算法,可以参考本人的CSDN blog:  Paper Reading 3:Continuous control with Deep Reinforcement Learning   
   关于DDPG的源码复现,可以参考本人的github:  GitHub - songrotek/DDPG: Reimplementation of DDPG(Continuous Control with Deep Reinforcement Learning) based on OpenAI Gym + Tensorflow   
  3 Deep Visual Foresight for Planning Robot Motion

   

最前沿 之 谷歌的协作机械臂

最前沿 之 谷歌的协作机械臂
这篇文章和深度增强学习没有直接关系,完全另外一个思路。为什么研究这个,我们先来说说 机器人学习之难难在哪?
  机器人学习之难难在环境不完全可见,难在没有Model!
  在控制领域,有一种任务相对比较好做,比如火箭发射!(当然也是很难的大工程),但是火箭发射上个世纪就解决了,人类甚至可以发射探测器到很远的地方,火星探测器也上了好几次了。Elon Musk前不久才提出他的火星登陆计划:
  

最前沿 之 谷歌的协作机械臂

最前沿 之 谷歌的协作机械臂
  为什么人类早早就能把探测器发送到那么远的地方,却连“简单”的让机器人开个门都那么难?
   因为对于航天工程,我们可以精确的计算探测器,火箭的运动模型(运动方程),我们可以精确的计算出火箭在怎样的推力下会达到的轨迹,因此我们可以精确的控制。我们有足够的人力,足够的资源来进行数学计算,我们也就能够实现很好的控制。但是 对于机器人开门这种事,我们没法算
  为什么?
  
       
  • 每个门都可能不一样,门把手也不一样   
  • 机器人的位置不固定,门的位置也不固定。  
  我们可以针对某个特定的门精确计算来实现控制,但是我们不可能遍历所有的门,更何况对于一个新的门怎么办?大家看到了,这里没有所谓的Model模型,我们无法建立模型,特别是如果我们只使用摄像头,类似人的第一视角,那么我们得到的信息更是有限。每时每刻的控制都将不一样。这就是机器人学习难的原因。
  所以,深度增强学习的很多方式都是所谓的Model-Free的方法,也就是不需要模型,通过trial-and-error来学会整个过程。
  可是,人类并不仅仅是通过trial-and-error来学习的。我们人类其实在大脑里能够构建一些基本的模型的,也就是比如门把手的位置,很多东西的位置,在我们大脑中是有概念的,我们也能够预测他们的位移。特别是足球的守门员,就需要掌握一项技能,那就是预判球的位置。
  所以,问题就这么来了:我们能不能来预测一下物体的位置,从而帮助机器人抓取物品?
  这篇文章也就做了这个事,弄了一个物体预测模型来预测物体的位置。本质上是未来研究model-based的方法。
  个人看法:model-based和model-free方法结合起来用能使机器人学习发挥出更大威力。
  关于预测模型,其实这篇文章也不新鲜了,之前就有文章研究预测atari游戏的画面的,也有文章预测汽车的运行轨迹的。只是这篇文章比较具体,面向机器人控制的具体问题,把预测模型和机器人控制MPC直接结合在一起,从而形成了一个确实的demo。
   所以,重复一下, 这篇文章的关键不是弄成一个预测模型,而是真正把模型给用在机器人控制上。在文章中,作者也是说的很明确,没有夸大的成分:
  The primary contribution of our paper is to demonstrate that deep predictive models of video can be used by real physical robotic systems to manipulate previously unseen objects.
  我们稍微来说一下这个深度预测模型:
   

最前沿 之 谷歌的协作机械臂

最前沿 之 谷歌的协作机械臂
结构上搞的比较复杂。先说输入输出。输入有三个,一个是当前帧,当前的状态state和动作action,然后输出下一帧图像(预测)。
  中间的结构大致可以分成三部分:
  
       
  • CNN+LSTM部分,用于提取图像特征信息,不过这里的输出很特别,并没有使用反卷积直接生成图像,而是输出一个图像的mask蒙版。这个蒙版可以认为是计算出里面的物体的移动流也就是pixel flow。   
  • 状态和动作输入部分,将状态和动作从卷积层的中间插入。   
  • 图像生成部分。首先是利用中间的卷积层抽取多个卷积核然后与原始图像做卷积,得到变化后的图像transformed images,然后和mask一起生成pixel flow map F,然后F与原始图像一起生成下一帧的图像。  
   所以这个神经网络本质上是要学习出物体移动的像素流pixel flow,类似光流,从而计算出下一帧的图像。作者虽然限定了神经网络的结构,但是在学习训练时只使用视频,动作,状态数据做监督学习,也就是端到端的学习,中间的mask蒙版和像素流并没有单独的监督学习。 然而文章中并没有对mask和flow的具体表现形式做分析,是否就是产生出对物体运动的捕捉我比较怀疑。 只能说通过训练,神经网络确实学习了捕捉物体的运动并能够根据输入加以预测。
   接下来是这篇文章的区别其他文章的工作,直接使用这个预测模型与经典的MPC控制结合,来实现机械臂的控制。基本是思路就是利用预测模型预测不同动作未来的移动情况,从而选择最优的移动方式。这种方式取得成功说明利用预测模型进行机器人控制的可行性。 下一步进一步拓展深度预测模型将成为可能, 这也是这篇文章最大的意义。
  4 Path Integral Guided Policy Search

  

最前沿 之 谷歌的协作机械臂

最前沿 之 谷歌的协作机械臂
   这篇文章以及下一篇文章是对Sergey Levine提出的GPS算法的拓展和改进。关于GPS(Guided Policy Search)这个算法,我一直觉得不是一个好的算法,至少未来这个算法我认为没有必要(为什么之后说),但是这个算法展示性比深度增强学习算法强,能够直接应用到真实的机器人上。先说一下深度增强学习应用到机器人上最大的困难,就是 采样! 我们可以在仿真环境中千百万次的训练机器人,但是我们没办法在真实环境中这么做。时间不允许,机器人也不允许。以此同时,完全的高维输入,高维输出做机器人控制目前仍是是困难很大的。
   那么GPS是什么呢?
   它的想法非常简单,就是把问题先分解成不同的初始条件,比如开门,有的是这个角度,有的是那个角度。然后,针对不同的条件单独训练一个局部策略Local Policy。那么这个训练方式他这里 不管了!!!也就是你想用什么传统的控制算法都可以! 然后有了这些可以用的策略之后,就利用策略采集样本,只是把输入变了,比如变成视觉输入,然后利用样本训练一个网络来代替这些局部策略,也就是模仿学习Imitation Learning,通过这种方式实现视觉伺服。我表示 GPS很没意思。
   为什么没意思?
  就说机器人开门这件事吧。我们要实现视觉控制,也就是让机器人看着打开门,和人一样。我们希望即使门放在不同的角度位置机器人也可以开。按照深度增强学习做法,那必须是End-to-End啊,输入视觉信息,输出控制,然后训练。从Deep Reinforcement Learning for Robot Manipulation这篇我们大概可以猜测出,这样做失败了,所以那篇文章并没有使用视觉输入。但我现在就要视觉输入这么办?
   Imitation Learning!模仿学习
  神经网络啥都能学习,因此只要我们能够收集到好的输入输出样本,我们就可以训练。模仿学习就是这么干。我们可以利用人类获取样本。比如人拿着机械臂做几百次开门动作,然后记录这些动作作为样本进行训练。但是只是用人比较麻烦,不用人就用机器人控制的算法,比如LQR,我们就有model怎么啦。我们先利用机械臂的model信息和门的精确信息来优化出一条最优轨迹,然后这不就是样本了吗?为了实现神经网络的通用性,我们面对不同的门的角度位置弄多条对应的最优轨迹,然后收集所有样本进行训练。在拓展一下,就是反过来利用训练的神经网络生成样本,然后反过来让控制算法进行优化。
  所以,虽然GPS能够实现视觉伺服控制,但是其中间过程一点也不单纯。使用了太多额外的信息来做训练。
   在我看来,训练时也只使用视觉信息,不使用额外信息才是有用的算法。GPS最致命的地方也在这里,这个开门可以精确建模,可以有额外数据,但是很多其他任务可没有那么多额外数据可以弄。 GPS本质上不具备自学习能力,而只是传统方法的神经网络化。 监督学习无法使机器人超越传统方法。
  那么这篇文章又做了什么事呢?将LQR用一个model free的RL算法替代。PI2这个算法之前不是很了解,看了文章感觉就是一种进化算法。基本思想就是采用多种路径,然后让路径概率向着损失较小的方向靠。和CEM(交叉熵方法)也差不多。就是对于Cost,采样概率还有参数更新方式不一样。
  有了PI2算法,GPS就可以做到model free了。但是训练过程还是一样。PI2算法的使用过程中并不使用视觉信息。只是因此采用的方法不一样(比起LQR),能够通过训练来解决开门这种间断连续控制问题(要先让机械臂移动到门把手那里,然后抓住,旋转,打开)。在我看来,直接用深度增强学习算法比如DDPG甚至REINFORCE来训练local policy不就完了,最后再综合所有样本监督学习一个,效果肯定好。
  总的来说,GPS看似有用,实则鸡肋,改进它意义不大,还不如研究如何实现少样本学习。
  5 Collective Robot Reinforcement Learning with Distributed Asynchronous Guided Policy Search
   

最前沿 之 谷歌的协作机械臂

最前沿 之 谷歌的协作机械臂
这篇文章其实和Deep Reinforcement Learning for Robot Manipulation很类似,只是针对的算法不一样,说白了就将Guided Policy Search拓展成并行异步的版本,从而可以实现多机器人协同训练。
  ----------------------
  下面的分析来自李艺颖:
  从架构方面,这十分契合云机器人的主旨,机器人可以将它们各自的经验通过网络传递给其它机器人。斯坦福人工智能百年报告之《人工智能与2030年的生活》中也指出以家用机器人为例,多机器人协同能够使机器人“共享更多家庭内收集的数据集,反过来能提供给云端进行机器学习,进一步改进已经部署的机器人。”本文就是鉴于考虑到真实世界中环境具有多样性和复杂性,所以想到让机器人将自身经历传递给彼此,使它们在环境中相互配合来学习技能,同时机器人也基于自身任务的特定样本改进局部的策略。实验采用4个机器人,任务是基于视觉学习开门,4个机器人对应的门的姿态和外观也都有所不同,采用的算法是GPS,在它们反复尝试和共享经历中不断提高任务执行水平。多机器人提高了样本的多样性,提高了学习的泛化能力和可使用能力。
  -----------------------
  算法的做法依然是很简单。一句话就可以概括。就是几个机器人分别有一个local policy来优化,每个机器人面对的场景都不一样。然后训练,将样本上传服务器,在服务器上监督学习一个神经网络,然后用这个神经网络Global Policy来辅助采样优化local policy。
  只能说多机器人协助必然能够提升学习训练速度,但是这种idea非常简单,算法的改进也是非常简单。当然,我们也不得不承认,Google的整个实验难度很大,要训练好很难,甚至这个训练用的机械臂都是Google自己造的(话说Google高层不让卖)。
  6 小结

  Google似乎想惊艳一下大家,一次发四篇文章说他们的机器人进展。但是很可惜,从具体文章的内容和贡献来看,并没有太多惊艳的思想和效果。多机器人协助是必然,核心还在于算法的改进。当然,我们也必须承认,Google能够实现让机器人完全使用视觉来实现开门是一个不错的Demo,只是这个Demo是在当前算法框架下必然可以实现的,不过也只有土豪的Google能这么做。
   最后,大家也看到了, 让机器人学会开门竟然是21世纪的今天人类最前沿科技都还没很好解决的问题 ,可见人类的文明程度是有多低。但,这也就是我们研究机器人实现机器人革命的机会!
  声明:本文为原创文章,未经允许不得转载。另外本文的图片都来自于本文介绍的四篇paper和网络。
康效荧 发表于 2016-10-8 18:01:41
介是神马?!!
回复 支持 反对

使用道具 举报

z15852183594 发表于 2016-10-8 20:50:38
你长的比假奶粉的毒性都大,我看了就头大。
回复 支持 反对

使用道具 举报

Claudioa3 发表于 2016-11-20 12:33:42
是爷们的娘们的都帮顶!大力支持
回复 支持 反对

使用道具 举报

我要投稿

回页顶回复上一篇下一篇回列表
手机版/c.CoLaBug.com ( 粤ICP备05003221号 | 粤公网安备 44010402000842号 )

© 2001-2017 Comsenz Inc.

返回顶部 返回列表