翻译:One-shot Imitation Learning

本文翻译自OpenAI论文《One-shot Imitation Learning》,作者:Yan DuanMarcin AndrychowiczBradly C. StadieJonathan HoJonas SchneiderIlya SutskeverPieter AbbeelWojciech Zaremba,原文链接:https://arxiv.org/abs/1703.07326。

水平有限,见谅。

1. 介绍

 在本文中,我们探讨了One-shot模仿学习的背景,其目标是在面对一个新的,未知的任务时,最大化学习策略的性能,并且只有一个任务的示教作为输入。 对于我们所考虑的任务,一旦获得了示教,我们期望该策略在没有任何额外系统交互的情况下取得良好的性能。

       我们在一个大范围的任务上训练策略,其中任务的数量可能是无限的。 对于每个训练任务,我们都假定有一组可行的示例。我们的学习的策略以(1)当前观察,和(2)一个成功完成了同一个任务不同实例的演示(this demonstration is fixed for the duration of the episode)作为输入。而策略则输出当前控制。我们注意到,同一任务的任何一对demonstrations都为神经网络策略提供了监督训练样本,其中一个示例被视为输入,而另一个示例被视为输出。

      为了使这个模型工作,我们主要使用soft attention来处理与demonstration相对应的(可能长的)状态-动作序列,以及处理由环境中物体位置信息构成的向量。Soft attention在两种类型输入上的应用使模型具有更强的泛化能力。尤其是在图1所示的堆叠积木任务中,我们的神经网络策略在训练数据中未出现过的、新的方块布局情况下同样表现良好。

      这种方法,如果通过对各种各样的任务和演示的训练适当地扩大规模,能够成功地使机器人学会在实际环境中处理复杂任务。

2. 相关工作

      模仿学习主要有两种,一是行为复制,通过监督学习模仿从观察到动作;另一个是逆强化学习(Inverse reinforcement learning),根据示教评估出一个奖赏函数,并将示教作为(或近似)最优行为。虽然这些工作取得了一系列令人印象深刻的机器人技术成果,但它将每个技能分开考虑,并且学会了模仿一个技能并不能加速学习模仿下一个技能。

      我们的方法在很大程度上依赖于an attention model over the demonstration and an attention model over the current observation 。

3. One Shot Imitation Learning

3.1. 问题描述

      我们用T表示任务的一个分布,t~T表示一个个体,D(t)表示任务t的示例的一个分布。πtheta(a|o,d)表示一个策略,其中a是一个动作(action),o是一个观察(observation),d是一段示教(demonstration),theta是策略的参数。一个示教d~D(t)是观察-动作序列:d = [(o1, a1), (o2, a2), ··· , (oT, aT)]。我们假定任务T的分布已知,并且对于每一个任务t∈T我们能够得到成功的示教。我们假定每个任务有一些标量值评估函数Rt(d)(例如一个表示成功的二进制值),虽然这个在训练时不需要。目标是最大化提高策略的预期性能。

3.2. Example Settings

      为了阐明问题的设定,我们描述了两个具体的例子,我们也将在后面的实验中进行研究。

3.2.1. 粒子导航

      粒子导航问题是一个非常简单的任务。在每一个任务中,我们控制一个点机器人到达一个具体的路标点,且不同的任务由不同的路标点区分。如图2所示,一个任务可以是到达橙色方形,另一个任务可以是到达绿色三角形。智能体接收自己的2D位置信息和其他路标点的2D位置信息。每一个任务不同示例智能体和路标点的初始位置不同。

      没有示教时,机器人不知道应该向哪个路标点移动,也不会完成任务。因此,这个设定体现了One-shot模仿的实质,即通过示教来传达任务。 模仿学习之后,智能体就能够从示教中识别出目标路标点,并在任务的新实例中到达同样的路标。


3.2.2. 堆叠木块

      现在我们考虑一个更有挑战性的任务设定,需要更先进的机械臂技能,并且不同的任务共享一个组成结构,这使我们能够探索、泛化未知的任务。在堆叠木块任务中,目标是控制7自由度Fetch机械臂将各种不同的木块叠成用户想要的构形。每种构形都由一系列排列成不同高度的塔组成,可以用字符串来标识,例如ghij 或者ab cd ef gh,如图3所示。每一个构形对应于不同的任务。在典型的任务中,观察是目标物相对于夹具的位置信息(x,y,z),以及夹具是打开还是关闭的信息。 不同的任务实例中目标物的数量可能会有所不同。

        

3.3. 算法

      为了训练神经网络策略,我们可以在序列决策问题中使用任何策略学习算法。比如,如果在训练任务中有奖赏,我们可以使用强化学习来优化策略。本文中,我们主要采用模仿学习算法,比如行为克隆和DAGGER,只需要示教而无须确定的奖赏函数。这可能具有更好的可扩展性,因为示教任务往往比指定设定好的奖励函数更容易。

      我们首先为每个任务收集一组示例,并在其中的动作中添加噪声,以便在轨迹空间中有更广泛的覆盖。在每次训练迭代中,我们对任务列表(包括替换)进行采样。对于每个采样任务,我们采样一个demonstration以及一小批observation-action对。The policy is trained to regress against the desired actions when conditioned on the current observation and the demonstration, by minimizing an l2 or cross-entropy loss based on whether actions are continuous or discrete. 在所有的实验中,我们使用Adamax以0.001的学习率进行优化。

4. 模型结构

       原则上,一个通用神经网络可以学习从示范和当前观察到适当行动的映射,但我们发现使用适当的架构非常重要。我们学习堆叠方块的结构是本文的主要贡献之一,我们相信它代表着处理更复杂任务的One-shot模仿学习架构。虽然粒子任务比较简单,但是我们也发现决策架构是重要的,我们在5.1节中考虑几个选择。

4.1. 粒子导航结构

      对于这个问题我们考虑三种结构。

      (1)Plain LSTM(Long Short-Term Memory

      (2)LSTM with attention

      (3)Final state with attention:这个架构并不是关注整个示教轨迹,而只是看示教中的最终状态(已经足以传达任务),并对路标点进行加权。 然后像前面的架构一样进行。

      注意:这三种结构越来越针对特定的粒子导航任务,这表明了表达性和泛化性之间的潜在折衷。 我们将在第5.1节中量化这个权衡。

4.2. 堆叠木块结构

      对于木块堆叠任务,策略结构最好具有以下属性:

      (1)比较容易的应用于具有不同块数的任务实例。

      (2)它应该自然的泛化到同一个任务的不同排列方式。 例如,即使仅在任务abcd上进行了训练,策略在任务dcba上也应该执行得很好。

      (3)它应该适应可变长度的演示。

      我们提出的结构由三个模块组成:示教网络,特征网络(context network)和执行器网络(manipulation network)。这些模块重点应用了neighborhood attention operation。 我们首先详细地介绍这个operation,然后描述每一个模块。

4.2.1. Neighborhood attention

      由于我们的神经网络处理的任务的方块数量是变化的,所以它需要有能够处理变化维度输入的模块。Soft attention是一种将可变维度输入映射到固定维度输出的natural operation。但是与输入相比这样做可能会丢失信息。这是不可取的,因为示教中包含的信息量随着木块数量的增加而增长。因此,我们需要一个可以将变化维度输入映射到具有不变维度的输出的operation。直观地说,对于所有输入,我们有许多输出就如输入一样多,并且每个输出都与其相应的输入有关。

      Attention的输入包括query q,context vectors {cj}列表,memory vectors {mj}列表。第i个attention weight由下式给出


其中v是学习权重向量。Attention的输出是记忆内容的加权组合,其中权重通过attention权重上的softmax操作给出。于是我们有,

注意输出的维数和memory vectors维数一样。Attention operation可以泛化到多query heads,在这种情况下,输入向量就像queries一样多。

      现在我们转向neighborhood attention。我们假定环境中有B个木块。我们用Srobot表示机器人的状态(在堆叠积木实验中,包含的信息为抓手是否打开或关闭),和每个木块的坐标如(x1, y1, z1), ···, (xB, yB, zB)。Neighborhood attention的输入是相同维数的embeddings列 h1, . . . , hB ,其可以是list of block positions的投影的结果,或者是之前的neighborhood attention operation的输出。给定这个embedding列表,我们使用两个单独的线性层来计算每个木块的query向量和context embedding:

注:embedding用向量的形式表示一些东西,类似于对一些属性进行编码,减少参数,降低数据量。

要提取的memory content由每个木块的坐标组成,并与input embedding连接。第i个query result由下述soft attention operation给出:


直观地说,这个operation允许每个木块查询与其自身相关的其它木块(例如找到最近的木块),并提取查询的信息。 图4中显示了该操作的图示。


    然后将收集的结果与每个木块自己的信息结合起来,产生每个木块的output embedding。 具体来说,我们有


      在实践中,每个木块我们使用multiple query heads,以便每个resulti的大小与查询头的数量成正比。

4.2.2. 示教网络

      如图5所示,示教网络接收一个示教轨迹作为输入,并产生一个供策略使用的demonstration的embedding。该embedding的大小随着demonstration长度和环境中木块的数量而线性增长。


      对于木块堆叠,示教可以跨越数百到数千个时间步长,并且使用如此长的序列进行训练对于时间和内存都有比较高的要求。因此,我们在训练过程中随机丢弃了一些时间步骤的子集,这个操作我们称为temporal dropout。我们用p表示为被丢弃的时间步长的比例。在我们的实验中,p=0.95,这将示教的长度减少了20倍。在测试期间,我们可以采样多个下采样(downsampled)轨迹,使用它们中的每一个来计算下游结果,并对这些结果进行平均以产生评价集。如节5.2.3所示,这会不断提高策略的性能。

    对示教下采样之后,我们应用一系列operations,包括dilated temporal convolution (Yu & Koltun,2016) and neighborhood attention

4.2.3. Context网络

      Context网络是我们模型的关键。如图6所示,它处理示教网络产生的当前状态和embedding,并输出一个context embedding,其大小不取决于示教的长度或者环境中的木块的数量。因此,它只能捕获manipulation网络将使用的相关信息。


 Context网络从计算一个query vector作为当前状态函数开始,which is then used to attend over the different time steps in the demonstration embedding。相同时间步长内不同木块的attention weights加在一起,以产生每个时间步长的单一权重。Temporal attention的结果是一个向量,其大小与环境中木块的数量成正比。然后,我们应用neighborhood attention越过每个木块的embedding来传播信息。 在这个状态下,使用一个LSTM单元来解密权重并重复多次

  前面的sequence of operations产生一个embedding,其大小与示教的长度无关,但仍取决于木块的数量。然后,我们使用标准的soft attention来产生固定维数的向量,其中memory content仅由每个木块的位置组成,其与机器人的状态一起组成输入传递到manipulation网络。

  直观地说,尽管环境中的对象的数目可以变化,但是在manipulation operation的每个阶段,相关对象的数目是小的并且通常是固定的。对于木块堆叠环境来说,机器人只需要注意要拾取的木块的位置(源块),以及要放置的木块的位置( 目标块)。因此,一个训练有素的网络可以学习如何将当前状态与示教中的相应阶段进行匹配,并且推导出源块和目标快的身份(应该是根据soft attention weights确定的),然后用于提取相应的位置并传递到manipulation网络。虽然我们在训练中不强调这种解释,但是我们的实验分析支持对学习策略如何在内部工作的解释。

4.2.4. Manipulation network

  Manipulation网络是最简单的部分。如图7所示,在提取源木块和目标木块的信息之后,使用简单的MLP网络来计算完成当前堆叠木块所需的动作。这种分工开辟了模块化训练的可能性:manipulation网络可能被训练完成这个简单的程序,而不知道示教或环境中存在的两个以上的块。 我们为将来的工作留下这种可能性。


5. 实验

5.2. 堆叠木块

      粒子导航的任务很好地示范了在一个简单的场景中泛化的挑战。然而,这些任务不能共享一个组合结构,使得评估其泛化到新任务时具有挑战性。 每项任务所需的技能和信息内容也很简单。因此,我们对第3.2.2节中描述的木块堆叠任务进行了进一步的实验。 这些实验旨在回答以下问题:

      (1)考虑可以离线收集足够的数据,行为克隆的训练与DAGGER相比如何呢?

      (2)

      为回答这些问题,我们比较下述结构的性能:

      (1)DAGGER:我们使用这个结构的描述在节4.2,且用DAGGER训练了策略。

      (2)BC:我们使用了上述的结构,但是训练策略用的是行为克隆。

      (3)Final state:这个结构关注最终的状态而不是整个示教轨迹上。对于木块堆叠任务,最终状态唯一地对应一个任务,并且不需要附加信息。然而,一个完整的轨迹,包含任务解决方案中间阶段的信息,可以更容易地训练最优策略,因为它可以学习直接依赖示教,而无需将中间步骤记入其参数。这与塑造奖赏可以显着影响强化学习性能的方式有关。两种调节策略之间的比较将告诉我们这个假设是否有效。 我们使用DAGGER来训练这个策略。

      (4)Snapshot:这个结构注重轨迹的“snapshot”,它包括沿着示教轨迹的每个阶段的最后一帧。这假设在测试时将示教分割成多个阶段,which gives it an unfair advantage compared to the other conditioning strategics。因此,它比关注整个轨迹会表现更好,并且可以作为一个参考,告诉我们侧重在完全轨迹的策略是否优于将示教分段化的策略。 我们再一次使用DAGGER来培训这个政策。