当前位置: 首页 > 科技观察

ICLR2021研究采矿游戏技能包?有序记忆决策网络帮你实现

时间:2023-03-12 22:17:00 科技观察

假设你给机器看一段很长的游戏视频,里面有砍树、打猎、盖房子等等,你的模型能不能从这个非结构化的视频中自动学习呢?发现这些有意义的技能包?在现实世界中,人类尤其具有将复杂任务有效分解为多个子任务的能力。这种能力帮助人类加快自己的学习过程,在面对新环境时实现更好的泛化。传统方法主要围绕概率图形模型展开。这些工作将子任务结构建模为潜在变量,并从学习后验中提取子任务身份。在一篇ICLR2021论文中,MIT-IBMLab干创团队与蒙特利尔大学合作提出:能否设计出更智能的神经网络,让子任务结构自动出现在模仿学习中?具体来说,研究人员设计了一个循环决策网络,使子任务结构可以反映在每一步的表示中。在这项研究中,研究人员提出了有序记忆决策网络(OMPN)。该模型可以通过正常行为克隆发现子任务层次结构,从非结构化演示中恢复子任务边界。Craft和Dial上的实验表明,子任务层次结构从模型自然演变而来,无需任何额外的人工注释。论文地址:https://openreview.net/pdf?id=vcopnwZ7bC项目地址:https://github.com/Ordered-Memory-RL/Memory子任务如何表达?研究人员提供了一个网格世界的例子来说明。该示例具有不同的成分,例如代理可以拾取的草,以及代理使用它们的工厂。假设agent要完成桥接任务,可以分解成树状的多层结构。其中,根任务可分为“捡原料”和“搭桥”。“捡原料”又可分为“捡草”和“捡木”。为了能够实现上面的结构,agent的内存在每一步应该如何“更新”呢?下图中,内存被分为不同的层级,对应不同层级的子任务。当't=1'时,模型只从根任务“建桥”开始,“扩展”得到“拾取材料”,然后进一步“扩展”为“拾起木头”。这里的“展开”(蓝色箭头)可以理解为一种“规划算子”,从最底层的记忆中产生动作。在“t<3”时,“拾取材料”被复制,但是当“拾取木头”完成时,即在“t=3”时,子任务被“更新”。这里的“更新”可以看作是各个子任务的内部更新,“更新”之后的“拾取原料”可以“展开”得到下一个子任务“拾草”。同理“建桥”被复制到't=5'时“更新”(“取原料”完成),然后“展开”为“建桥”和“去工厂”。在这样一个过程中,就可以定义“展开高度”,即每一个时刻发生“展开”的记忆位置。研究人员还观察到,通过观察“展开高度”的变化,可以据此确定子任务的边界。例如,从't=2'到't=3',展开的位置是从最低级到中级,表示低级子任务完成。从't=4'到't=5',扩展位置从最低级到最高级,表示低级和中级子任务都完成了。所以目标是通过合理的网络设计,使模型收敛于上述内存更新规则。具体包括:如果模型认为当前底层子任务已经完成,需要输出高层扩展位置,从高层子任务开始扩展。如果模型认为当前底层子任务还没有完成,就需要输出低扩展位置,复制高层任务,实现长期依赖。网络设计的数据流效果如下:Taskdecompositionfrombehaviorcloning主要实验结果表明,正确的子任务结构确实可以在行为克隆后的模型中体现出来,并且在这个过程中,没有额外的任务边界标注。在下面的示例中,代理的轨迹和部署位置的变化被可视化。学习后,模型学会在每个子任务结束时增加部署高度。在每个子任务的进行过程中,保持较低的部署高度,这符合前面提到的直觉。在Craft任务中,模型需要完成4个子任务“搭建床”。在拨号任务中,模型需要控制机械臂连续按下4个数字。在厨房任务中,模型需要连续控制四台家电。