日报标题:买个家用机器人端茶倒水,这次也许是近在眼前了
1 前言
如果问你“家用机器人真正实用化还需要多久?”我说的是那种可以端茶倒水,帮你干这干那的机器人,可能你的回答是 10 年,15 年。但是现在,深度增强学习的不断发展,很可能将时间缩短到 5 年。
2016 年 9 月 16 号,Li Feifei 组(了解 ImageNet 的知友们肯定都熟悉)放出了最新的 Paper:
Target-driven Visual Navigation in Indoor Scenes using Deep Reinforcement Learning
做了什么事呢?使用深度增强学习实现目标驱动的视觉导航。说的简单一点就是机器人找东西,有一个地面机器人,让机器人去找一本书,或者去冰箱,机器人就自己去了,然后能找到物体停下。大家先看一下官方的视频:
Target-driven Visual Navigation in Indoor Scenes using Deep Reinforcement Learni—在线播放—优酷网,视频高清在线观看" >http://v.youku.com/v_show/id_XMTczMTM5Mzk4OA==.html
实现机器人找东西有多困难呢?
very hard! 下文我们会说一下传统机器人学的方法。
采用深度增强学习实现又有多大的意义?
先说结论。简单的说就是以前为了实现机器人找东西这个事情,我们需要做大量的工作,大量的 hand-engineering,但是现在,采用深度增强学习,我们只需要使用神经网络。就是机器人只根据实时看到的画面还有目标选择动作,这和人类的行为很像。并且整个过程都是学习来的。这种方法具有革命性的意义。
还记得之前那篇文章吗?最前沿:从虚拟到现实,迁移深度增强学习让机器人革命成为可能! - 智能单元 - 知乎专栏 那篇 Paper 作者研究如何通过迁移学习将不同场景学到的知识移植过来。特别是从虚拟到现实的迁移。但是,这篇文章想了个更简单的做法——我们造一个非常仿真的环境不就完了。
因此,这篇文章中,作者构建了一个非常好的仿真环境(如上图),并且通过在高度仿真的环境中训练,然后迁移到真实场景中。这种方法被证明是有效的。那么想象一下,如果构建了一个更复杂更真实的场景,然后让机器人在里面无限次的训练学习,掌握技能之后,再移植到现实世界。这将是 game-changing 的事情。让家用机器人能够端茶倒水将不再那么困难。
下面,我们来好好分析一下这篇文章的意义。最重要的是深度增强学习的意义。
2 机器人找东西,传统的方法怎么做?
假设我们面前有一台轮式机器人,有摄像头,可控制,上面还有一个机械臂。我们希望能够跟机器人说去帮我拿一个杯子过来。然后机器人能够自主的去厨房找到一个杯子,用机械臂拿起来,最后送到我手上。那么为了实现这么一个任务,我们首先需要实现的就是去找到杯子这个任务。我们再进一步假设房间里的东西都是静止的,然后要求机器人能够去找房间中的各种物品。
OK,在这种假设下,传统的机器人学告诉我们要怎么实现这个系统呢?
Step 1:建图 Mapping 和定位 Localization 也就是 SLAM
要想找东西,总得先知道自己在哪,还要知道房间的结构好规划路线。因此,我们得先利用机器人上面的传感器比如摄像头、雷达等构建整个场景,因为要找东西,有的高,有的低,所以最好还是 3d 场景。
Step 2:构建语义地图 Semantic Map
要找东西,当然要知道东西在哪里了。因此,这一步需要我们在上一步得到的地图上添加语义,也就是各种东西的位置信息。或者反过来也可以给 3d 地图里面的每个东西贴标签,这是冰箱,我就贴上冰箱的标志,那是门,那我就贴上门的标签。大家可以看到,这需要计算机视觉的物体检测(Object Detection)技术,比如我们可以使用 YOLO 或者 Fast R-CNN 算法在 SLAM 的同时进行物体检测,为物体贴上标签。比如上图所示,我们知道桌子,椅子,柜子的具体位置。做完这一步,我们不但知道整个房屋的构造,机器人自己的位置,也知道每一个物体的相对位置。
Step 3:路径规划(Path Planning)
有了地图和定位,再加上目标位置,ok,万事俱备了。我们只要根据这个设计出一条最佳的路径,然后让机器人走就行了。这就是路径规划需要干的事情。
小结一下
在传统的机器人学中,要实现机器人找东西这件事,需要完成上面三大任务。真是太复杂。单单 SLAM 都是一个很大的研究课题了。而这中间需要的计算量,需要的人力工程,都是非常多的。那么,这篇 Paper 是怎么做的呢?
3 深度增强学习是怎么做的?
深度增强学习的思路就完全不是机器人学的思路了,而是人的思路。上一节我们说又要建图,又要路径规划的。问题是:我们人需要这么做吗?不得不承认,我们人具备自动在大脑中构建 3d 场景的能力,但是对于找东西我们并不需要这么做。我们人就是大致知道东西的位置,然后往那个方向上走就行了。
因此,深度增强学习要仅使用 2D 的视觉信息来完成找东西的任务!
如上图所示,机器人找东西的任务变成:看到图像,选择行走动作,直到找到想要的物体,停下。
这篇文章的创新点在哪呢?
就是将目标图像作为输入!老实说这个创新点非常简单,也蛮低级的,而且仅针对这种目标能够具化的任务有效。但是对于机器人找东西而言,等于和人一样给个目标图像,然后让你去找到它。这样做的好处就是神经网络具有通用性。之前,如果只用当前看到的图像作为输入,那么每找一个东西,都要单独训练一个网络。现在,把目标图像作为输入进行训练,那么就可以使这个网络不管输入什么目标都 ok,也就具备了通用性。
这篇文章采用了 A3C 算法,也就是 Deepmind 提出的当前深度增强学习最强的算法来训练,主要就是神经网络的模型变了,还有多线程训练的方式做了一点改变(也就是同时开启多个 Agent 训练多个场景多个任务)。甚至,还根据不同场景搞不同的神经网络来输出,这算不算通用我得打个问号。
为了让观察的图像输入和目标图像输入能够和在一起,为两个图像采用了相同的预训练好的神经网络(使用 ImageNet 训练的深度残差网络)。
要理解整个训练过程,需要熟悉 A3C 算法,鉴于篇幅,这里就不细讲了。本专栏将陆续发布更多文章介绍深度增强学习的各种算法。
对于这个成果我们应该思考一个问题是:神经网络是如何让机器人找东西的?
4 深度神经网络通过学习学到了什么?
它并没有记住物体的位置,更不知道房屋的结构。但它记住了在每一个位置,通向各个物体的行为方法。
比如说,冰箱在左前方 5 米,那么机器人在这个位置的时候根据看到的图像做出向左前方走的动作。它只是知道要这么走,它知道这个轨迹,但是并不知道其他。
反过来想,传统的机器人学方法可以通过记录轨迹来控制吗?
当然是可以,但是同样的,SLAM 和语义地图还有路径规划都是避开不了的工程。而采用深度增强学习,我们是让机器人通过不断试错的方法来找到这条路径,而不是计算。
5 小结与展望
深度增强学习确实是一种非常模仿人类行为的思路。在真实环境中,我们确实很难让机器人通过试错来找到正确的行为方式,但是如果我们能够构建非常逼真的仿真环境的话,我们就很有希望在仿真环境中训练机器人,然后迁移到真实场景中。这样的话,让机器人通过自学习来掌握各种技能就真不是说说而已了。我怀疑 DeepMind 已经在构建非常好的仿真环境训练他们的机器人,也许 DeepMind 的下一个重量级工作就是深度增强学习的机器人了!
声明:本文为原创文章,未经作者允许不得转载!
本文图片来源于 Paper 及网络。