有序记忆决策网络在游戏技能挖掘中的应用
设想一下,如果您向机器展示了一段长时间的游戏录像,其中包含了砍树、打猎和建房等活动,您的模型是否能够从这些非结构化的视频中自动识别出有意义的技能包呢?
在现实生活中,人类具备将复杂任务有效拆解为多个子任务的能力,这种能力使得我们在面对新环境时能够加速学习并获得更好的泛化能力。
传统的方法主要依赖于概率图模型,这些方法通过潜在变量来建模子任务结构,并从学习到的后验中提取子任务的标识。在一篇发表于ICLR 2021的论文中,MIT-IBM实验室的研究团队与蒙特利尔大学合作提出了一个问题:是否可以设计出更智能的神经网络,使得子任务结构能够在模仿学习中自动生成?为此,研究者们设计了一种循环决策网络,使得子任务结构能够在每一步的表征中得到体现。
在这项研究中,研究者们提出了有序记忆决策网络(OMPN)。该模型能够通过正常的行为克隆来发现子任务的层级结构,并从非结构化示范中恢复子任务的边界。在CRaft和Dial上的实验结果显示,子任务的层次结构会在没有任何人类额外标注的情况下自然演化出来。

论文地址:https://openReview.net/pdf?id=vcopnwZ7bC 项目地址:https://Github.coM/ORdeRed-MeMoRy-RL/ MeMoRy 如何表达子任务?
研究者提供了一个网格世界的示例来说明这一点。在该示例中,有多种原材料(例如草)供智能体拾取,同时还有一个工厂供智能体使用这些原材料。假设智能体想要完成搭桥任务,这个任务可以拆分成树状的多层结构,根任务可以进一步分为“拾取原料”和“制造桥梁”。“拾取原料”又可以细分为“拾取草”和“拾取木头”。

为了实现上述结构,智能体在每一步中的记忆需要如何进行“更新”?在下图中,记忆被划分为不同的级别,以对应不同层次的子任务。当时刻‘t=1’时,模型从根任务“搭建桥梁”开始,并“展开”得到“拾取原料”,然后进一步“展开”为“拾取木头”。这里的“展开”(蓝色箭头)可以看作是一种“规划操作”,其动作来自最低层级的记忆。在时刻‘t<3’时,“拾取原料”会被复制,但当“拾取木头”完成后,即‘t=3’时,该子任务会进行“更新”。这“更新”可以理解为每个子任务的内部更新,而“更新”后的“拾取原料”通过“展开”重新得到下一个子任务“拾取草”。同样,“搭建桥梁”将持续被复制,直到在‘t=5’(“拾取原料”完成)时进行“更新”,然后“展开”为“制造桥梁”和“前往工厂”。

在这一过程中,可以定义“展开高度”,即每一时刻发生“展开”的记忆位置。研究者还观察到,通过监测“展开高度”的变化,可以确定子任务的边界。例如,从‘t=2’到‘t=3’,扩展位置从最低级别到中间级别,表明低级别子任务已完成。而从‘t=4’到‘t=5’,扩展位置由最低级别到最高级别,表明低级别和中级别子任务均已完成。因此,目标是通过合理的网络设计,使模型能够收敛到上述记忆更新规则。具体包括:
如果模型认为当前底层子任务已完成,则需要输出高展开位置,并从高层子任务中展开;如果认为当前底层子任务未完成,则需要输出低展开位置,并复制高层任务,以实现长期依赖。
网络设计的数据流效果如下:

从行为克隆中进行任务分解
实验结果表明,正确的子任务结构能够通过行为克隆在模型中得到体现,并且在这个过程中没有任何额外的任务边界标注。在接下来的示例中,智能体的轨迹及其展开位置变化被可视化。经过学习,模型学会在每个子任务即将结束时提高展开高度。在每个子任务进行过程中,展开高度保持在较低水平,这与之前的直觉相符。

在CRaft任务中,模型需要完成四个子任务以“造床”。

在Dial任务中,模型需要控制机械臂依次按下四个数字。

在KItchen任务中,模型需要连续操控四个家电。
