我们知道,无论是深度学习还是深度增强学习,都是一种表示经验的办法,都需要通过样本获取和表达经验。但是,深度增强学习DRL的样本获取比一般的深度学习(比如收集图片、打标签,当然也很费劲,很多实际的工程问题第一个难题就是收集样本)还要昂贵的多,不仅仅是费时费力,还要昂贵。这也就是为什么deepmind要从游戏玩起的原因。因此最近几年,如何利用在仿真环境中学习到的知识提高真实世界学习效率变成深度增强学习热点之一也就很容易理解了。前一段时间,李飞飞实验室发表了一篇论文,基本功能是在房间里找东西,也涉及到从仿真到真实的一个过程,主要是用的fine-tuning的办法。
今天这篇论文也是deepmind出品,作者在6月份的icml大会上讲了一篇叫progressive nets的论文,主要是利用很特殊的一种transfer learning的方法实现不同任务间的经验借鉴,其中提到可以应用到从仿真到实际机器人。今年10月份,作者有单独写了一篇论文来说明这个应用,就是这篇论文了Sim-to-Real Robot Learning from Pixels with Progressive Nets。
我们(论文)提出了一种叫progressive networks来桥接模拟和现实世界,把模拟环境中学习到的策略转移到现实世界中。Progressive network是一个可以重用把从low-level的视觉特征到high-level的策略转移到新任务上,而且能简单组合实现复杂的技巧的通用框架。
先看一下网络结构吧:
应该比较容易理解的,每一列是一个任务,第一个任务没啥特别的,老老实实训练就行了,训练好了之后参数就冻结了(这点是不同于fine-tuning的),第二个任务在随机初始化参数后,训练中每层的输入除了自己上一层的输出外,还有前面任务的对应层的输出(要经过adapter function,图中标记为a)。所以每层的函数如下:
k表示本任务,j<k表示之前的任务,i表示层。
因为都是应用于模拟到现实,progressive network表现出了不同于fine-tuning的特点。首先不用因为fine-tuning改变任务的参数。其次每一列任务都是不同的,不同的输入,显然更能适应实际的机器人。最后,后面任务可以任意改变自己的网络连接,单独的层次之间的转移学习也是可以的,适应性更广。
论文自己做的测试是真实的Jaco机器臂和The MuJoCo physics simulator模拟环境,效果如下:
两个都用了图像输入,但是差别也是显而易见的。
测试的网络如下:
模拟环境测试结果如下:
转移到真实环境的测试效果如下:
效果还是相当惊人的。论文还通过改变物体的颜色或者透视变化、各种不同的参数来影响学习效果,从下图可以看到progressive比fine-tuning要鲁棒的多。
最后一个测试,在机器人中增加传感器输入(模拟环境是没有的),效果如下(第三列是仅仅训练了传感器输入的):