题目暂且翻译为《少量样本模仿学习》
原文链接百度云 提取码:hxf8
模仿学习已经广泛的应用于许多场景,但是这需要做特征工程或者需要大量的训练样本。但是这与实际需求是不相符合的。真正的机器人因该能够在任何任务中给出少量的示范例子,就能够快速泛化到新的场景,处理相同的任务,而不需要在做具体的任务工程。在这篇文章中我们提出一个meta-learning的框架以便达到这种能力,我们称之为“One-Shot Imitation Learning”。
机器人应该在不需要新的系统交互时间就可以学习处理新的任务(上面提到的能力)。为了解决这个问题,我们必须处理两个广泛的问题:
1、第一个问题是关于机器人的敏捷性:机器人应该如何处理、提取复杂的目标,并且如何使用一个合理的配置来完成这项任务
2、第二个问题是关于机器人的交互能力:机器人如何传达手头任务的意图,以便机器人能在更广泛的初始条件下复制它。
Demonstrations(示范例子)是一种十分方便的信息形式,我们可以使用这个来帮助机器人克服这两个困难。使用Demonstrations可以直白的从本质上交流任何操作任务,同时提供执行该任务所需的特定运动技能的线索。
相比于语言,使用Demonstrations有两个根本上的好处:
1、机器人不需要语言知识,它可以和人类交流复杂的任务而不必说语言
2、有许多任务是难以使用语言来表的
让机器人从Demonstrations中学习已经有很多成功的应用,但是他们依然需要细心的特征工程或是大量的系统交互时间。
这与我们所需要的相差甚远。我们希望给机器人示范一个确定的任务,一次或几次,他就能够立即泛化到新的环境中处理相同的任务,而不需要长时间的系统交互或者是只掌握个别任务的知识。
模仿学习考虑解决这样一个问题:从观察Demonstrations中学习获得能力
模仿学习有两条主线:
1、行为克隆,即从观察到行动的监督学习
2、反向强化学习,其中一个奖励函数被用来估计demonstrations为(或是最接近的)最优行为
模仿学习在过去已经取得了一些列令人印象深刻的结果,但是它将每种技能分开考虑,学会模仿一种技能并不会加速学习模仿下一种技能。
少量样本学习、强化学习、元学习已经成功的应用到许多领域,但是他们都没有考虑将其应用到模仿学习的领域。
强化学习的缺点:需要大量的训练样本和需要一个定义在当前任务上的具体的奖励函数。前者是需要消耗大量时间的,后者可能比提供一个demonstrations更加困难。
多任务学习和迁移学习考虑的是解决在单一任务上学习可使用性和重复使用的策略。然而,尽管获得大量技能的速度比单独获得每种技能所需的速度要快,但是这些方法并不能提供从单个demonstration中轻松获取新技能的能力。
我们的方法十分依靠在一个demonstrations上的 attention model 和一个在当前观察者上的 attention model
为了训练神经网络,我们采用模仿学习算法例如: behavioral cloning and DAGGER,这些算法仅仅需要demonstrations,而不需要具体的奖励函数。这将会更有可扩展性的潜力,应为描述一个任务常常比设计一个具体的好用的奖励函数更简单。
对每个样本任务,我们抽取了一个demonstration,同时有一个小的batch的observation-action的键值对。如何训练这个策略:但条件满足当前的观测者和范例时,对期望的行为做出回归,无论行为是连续值还是离散值,使用l2正则化或者交叉熵最小化损失,优化器使用Adamax,学习率为0.001.
本文为推积木这个任务提出的结构是本文最主要的贡献之一。结构包括三部分: the demonstration network,the context network, and the manipulation network.
1、demonstration network:该演示网络接收一个演示轨迹作为输入,并生成一个嵌入的演示供策略使用。这种嵌入的大小与演示的长度以及环境中的块数成线性关系。
(1)Temporal Dropout:每一个demonstration之间可能相隔几百甚至几千步,这将会非常耗费时间和消耗内存。因此在训练阶段随机丢弃时间步数上的一个子集,称这个操作为Temporal Dropout。在测试阶段我们抽取多规格的下采样序列,使用他们中的每一个来计算下一层的结果,利用这些结果来产生一个相似的估计。在实验中我们发现这会持续提高策略的表现能力。
(2)Neighborhood Attention:在下采样demonstration之后,我们采用一系列操作由dilated temporal convolution and neighborhood attention组成。下面将更加详细的介绍第二个操作。
我们的网络需要能够处理不同数量的积木块,他必须有一个模块能够处理有不同维度的输入。 Soft attention将不同维度的输入输出成固定的维度,这样会造成信息损失。因此我们需要一个操作能够将可变化维度的输入映射到输出有相应的维度。直观地说,我们并没有因为处理所有输入而得到一个输出,而是有与输入一样多的输出,并且每个输出处理与其对应的输入相关的所有其他输入。
2、Context network
这个网络是我们模型最关键的一部分。它处理当前的状态和由demonstration network所产生的embeding,然后输出一个context embedding,它的长度不由demonstration的长度决定。因此它被迫只能获取相关信息,这将被用于 manipulation network.
(1)Attention over demonstration:上下文网络首先计算一个查询向量作为当前状态的函数,然后使用它来处理演示嵌入中的不同时间步骤。在相同的时间中,对不同积木块上的注意力权重求和,每一个时间步骤产生一个权重。这种临时注意力权重的结果是一个向量,它的大小和环境中的积木块数是向适应的。然后我们使用 neighborhood attention在每个block的embeddings之间传播参数。
(2)Attention over current state:之前的操作产生一个embedding,他的大小不依赖于demonstration但是取决于积木块的数量。然后我们在当前的状态上使用标准的soft attention来产生一个固定的向量,记忆内容仅由每个块的位置组成,与机器人的状态一起形成上下文嵌入,然后将其传递给操作网络。
直观地说,虽然环境中的对象数量可能有所不同,但是在操作操作的每个阶段,相关对象的数量都很小,而且通常是固定的。具体到积木堆垛环境,机器人只需要注意它试图拾取的积木的位置(源积木),以及它试图放在上面的积木的位置(目标积木)。因此,一个良好的训练网络可以学习来匹配当前状态与相应阶段的演示,并推断出源和目标块的身份表示为soft attention权重在不同的块,然后用于提取相应的位置传递给操作网络。虽然我们没有在训练中强制执行这种解释,但是我们的实验分析支持这种对学习策略如何在内部工作的解释。
3、 Manipulation network :这是最简单一个模块。从原积木块和目标积木块提取信息之后,使用简单的MLP网络计算出在当前状态下把一个积木块堆叠到另外一个积木块上的所需要的行为。这种分工打开了模块化训练的可能性:操作网络可以被训练来完成这个简单的过程,而不需要知道演示或环境中存在的两个以上块。我们把这种可能性留给将来的工作。
看原文,这里不赘述。
在这项工作中,我们提出了一个简单的模型,它将一个任务的成功演示映射到一个有效的策略,从而在新情况下解决该任务。我们证明了该方法对一组块堆积任务的有效性。未来的工作有很多令人兴奋的方向。我们计划将框架扩展到图像数据形式的演示,这将允许更多的端到端学习,而不需要单独的感知模块。我们还感兴趣的是,在一个演示不能完全解决目标中的模糊性的情况下,使策略能够以多个演示为条件。此外,最重要的是,我们希望将我们的方法扩展到更大范围和更广泛的任务分配上,并探索其发展成为通用机器人模仿学习系统的潜力,该系统将能够完成各种各样的任务。