【新智元导读】斯坦福大学计算机视觉实验室李飞飞团队的最新研究提出一个新的机器人学习框架:神经任务编程(NTP),在机械臂的物品堆叠、分拣和桌面清理三类任务中,证明该框架具有强大的泛化到未知任务的能力。李飞飞表示这虽然是探索性的进步,但这是一个非常吸引人的课题。
论文下载:https://arxiv.org/pdf/1710.01813.pdf
GitHub地址:https://github.com/StanfordVL/ntp
摘要
在这项研究中,我们提出一种新型机器人学习框架,称为神经任务编程(Neural Task Programming,NTP),它将从演示到神经程序推导(neural program induction)的 few-shot learning 想法结合起来。NTP将一个任务规范(例如,一个任务的视频演示)作为输入,并递归地将其分解为更精细的子任务规范。这些规范被馈入一个分层的神经程序,其中底层程序是可以与环境交互的可调用子程序。我们在三个机器人操作任务中验证了我们的方法。NTP在具有分层结构和组合结构的序列任务中实现了强大的泛化(generalization)能力。实验结果表明,NTP通过不断增加的长度,可变拓扑和变化的目标学习很好地拓展到未知任务。
在复杂的操作任务中,例如物体分类、装配和清理,需要在机器人和环境之间的长时间交互中进行连续的决策。在复杂的任务中进行规划以及适应新的任务目标和初始条件,是机器人技术的一个长期挑战。
让我们试想一个在仓库环境中的物体分类任务——它需要分类、从仓库中检索,最后打包装运。每个任务都是一组基本的分层的序列,例如 pick_up、move_to 和 drop_into,它们可以被组合成操纵子任务,例如抓起和放下(grasping and placing)。这个问题有很大的变化空间:仓库中的不同物体位图、子任务的排列、不同长度的任务列表等等,这就导致形成一个很大的任务空间。
图1:(上)在测试时,NTP实例化一个任务条件策略(一个神经程序),通过解释演示任务执行指定任务。(下)我们分别在模拟环境和实际环境中的方块堆叠(A,B),物体分类(C,D)和桌面清理(图8)任务评估NTP。
举个例子,图1中,(C)显示了一个物体分类任务的简化设置。任务是将4个类别的物体移到到4个箱子里。在各类别和容器之间总共有256种可能的映射,并且对象实例的可变数目进一步增加了复杂性。在本文中,我们试图解决复杂任务规划领域的两个挑战,即(a)推广到新任务目标的学习策略,以及(b)用于长期环境交互的原语( primitives)的层次组合。
图2:神经任务编程(NTP):给定一个输入程序,一个任务规范和当前的环境观察,NTP模型预测子级程序运行,子级程序应作为输入的任务规范的子序列 。
我们提出神经任务编程(NTP),这是一个统一的,任务不可知的学习算法,可以应用于具有潜在分层结构的各种任务。NTP的一个关键的基本思想是学习跨任务和域共享的可重用表示。NTP解释一个任务规范(图1左),并将分层策略实例化为一个神经程序(图1中),其中底层程序是可在环境中执行的原始动作。任务规范被定义为描述任务过程和最终目标的时间序列。它可以是记录状态轨迹的第一或第三人称的视频任务演示,或者甚至是一个语言指令列表。在这项研究中,我们使用任务演示作为任务规范。
我们尝试了两种形式的任务演示:任务中对象的位置轨迹,以及任务的第三人称视频演示。NTP将任务的目标从输入规范中解码,并将其分解为子任务,并通过闭环反馈与环境交互,直到达到目标(图1右)。每个程序调用将作为输入环境观察和任务规范,生成下一个子程序和相应的子任务规范。分层结构的最低层是通过机器人API捕获的符号动作。这种层次分解有助于信息隐藏和模块化,因为低层的模块只访问与它们的功能相关的相应子任务规范。它防止模型在训练数据上学习假依赖关系,从而产生更好的可重用性。本质上,NTP解决了任务推广的一个关键挑战:跨任务转移的元学习(meta-learning)和分层模型( hierarchical model),从而扩展到更复杂的任务。因此,NTP具有神经编程和分层RL的优势,同时弥补了它们的不足。
NTP推理过程
我们证明NTP可以扩展为三种任务结构的变化:
1)任务长度:由于问题大小的增加而改变步数(例如,有更多的物体需要运送);
2)任务拓扑:子任务的灵活排列和组合,以达到相同的最终目标(例如,以不同的顺序操纵物体);
3)任务语义:不同的任务定义和成功条件(例如,将对象放入不同的容器)。
网络实现细节 (放大查看)
研究的主要贡献
1)我们的主要贡献是提出一个新的建模框架:NTP,可以实现分层任务的元学习。
2)我们在模拟环境以及实际的机器人实验中对单臂操作任务进行NTP的评估:方块堆叠,物体分类和桌面清理。
3)我们的研究表明,NTP可以实现知识迁移,以及基于one-shot演示的新任务的推广,新任务包括增加长度,变化拓扑和改变语义,而不限制初始配置。
4)我们还表明NTP可以通过视觉输入(图像和视频)进行端到端的训练。
图3:在块堆叠任务中NTP的执行跟踪示例。
图4:任务结构的可变性包括改变成功条件(任务语义)、可变子任务排列(任务拓扑)和改变任务大小(任务长度)。我们评估了NTP模型推广到这三种类型变化的能力。
图5:任务长度与成功率
图6:任务语义与成功率
图7:可见状态NTP与成功率
结论和未来的研究
本研究中,我们提出神经任务编程(NTP),这是一种元学习框架,它可以学习模块化和可重用的神经程序,用于分层任务。我们展示了NTP在3类机器人操作任务中的优势,这些任务需要长时间、复杂的环境交互。NTP实现了对任务长度、拓扑和语义的泛化。这项工作使我们有机会使用可泛化的神经程序来建模分层任务。至于未来的工作,我们计划:1)改进状态编码器,以提取更多的任务突出信息,例如对象关系,2)设计更丰富的API,以及3)扩展这个框架,以在真实的机器人环境中处理更复杂的任务。