原标题:学界|从监督式到DAgger,综述论文描绘模仿学习全貌选自arXiv作者:Alexa
原标题:学界|从监督式到DAgger,综述论文描绘模仿学习全貌
选自arXiv
作者:AlexandreAttia、SharoneDayan
机器之心编译
参与:Panda、黄小天、蒋思源
模仿学习是学习器尝试模仿专家行为从而获取最佳性能的一系列任务。目前主流方法包括监督式模仿学习、随机混合迭代学习和数据聚合模拟学习等方法。本论文全面概述了当前的模拟学习算法及其收敛性保障,有助于读者深入了解这一领域。
论文:GlobaloverviewofImitationLearning
摘要:模仿学习是学习器尝试模仿专家级行为从而获取最佳表现的一系列任务。近期,该领域提出了数种算法。在此论文中,我们旨在给出这些算法的整体回顾,展示他们的主要特征并在性能和缺点上做出对比。
3.顶尖算法和收敛保证
从示范中学习(LfD,LearningfromDemonstration)是一个从专家给出的轨迹中学习复杂行为的实践框架,即使非常少或者不准确。我们在下面列出并对比了模型学习中最常用到的一些算法,且在自动驾驶汽车上进行实验对比这些模型算法间的不同。下面这些算法的理论证明和直观定理展示在附录部分。
3.1监督学习
解决模仿学习的首个方法是监督学习。我们有一个由专家给出的训练轨迹集合,其中单个训练轨迹包含观察结果的序列专家行为的序列。监督式模仿学习的背后动机是训练一个分类器基于观察来模仿专家的行为。
这是一种被动的方法,目的是通过被动的观察全部轨迹学习到一种目标策略。监督式模仿学习的目标是在专家的驱动下于所有状态上训练一个策略,而专家只有在求解该目标时才提供信息。此外,我们需要假不同轨迹中的专家行为是独立同分布的。
3.2前馈训练
在最糟糕的情况中,我们与经典监督式学习有相同的收敛,但总体讲,收敛是次线性的(sublinear),并且专家策略成功恢复了模型策略的错误。因此,前馈训练算法应该比之前算法表现更好。
3.3基于搜索的结构预测(SEARN)
SEARN的想法来自DauméIIIetal.(2009)[3],其并没有学习一些全局模型与搜索(一般模型的标准设置),而是简单地学习一个分类器以最优地搜索每一个决策。算法通过在每一步上遵循专家行动开始,迭代地收集示范并利用它们训练新策略。根据之前所有训练策略以及专家行动的混合,它通过采取行动编译了新的episodes。最后,它慢慢地学习遵循混合策略并停止依赖专家以决定其要采取的行动。
简言之,该算法试图学习一个分类器,引导我们通过搜索空间。它的运作是通过保持当前策略以试图使用它生成新的训练数据,进而学习一个新策略(新分类器)。当学习了一个新分类器之后,我们用旧分类器进行插值。这一迭代如图2所示。
然而,这一基于搜索的结构预测可能过于乐观,并在实践中面临挑战,这主要因为其初始化方法不同于最优策略。下面我们将详细描述克服这一问题的其他方法。
3.4随机混合迭代学习(SMILe)
SMILe同样由Ross和Bagnell(2010)[2]提出,以纠正前馈训练算法中的一些困难问题。它是一个基于SEARN的随机混合算法,利用其优点可以使实现更加简单,而且与专家的交互要求也较低。它在多次迭代中训练一个随机静态策略,接着利用训练策略的「几何」随机混合。
具体而言,我们从一个完全遵循专家行动的策略π_0开始。在每次迭代中,我们训练一个策略π_i以在以前的策略π_i-1诱导的轨迹下模仿专家。接着,我们将新的训练策略添加到先前的几何折扣因子α(1α)^(i1)的策略混合中。因此,新的策略π_i是i策略的混合,其中使用专家行动的概率为(1α)^i。算法3描述了SMILe算法。
图1:前馈训练和SMILe算法在自动驾驶汽车上的对比
3.5基于归约(Reduction)的主动模拟学习(RAIL)
RAIL是一种理想化的算法,其目的是用于实现理论目标的分析。但是,主要由于在早期迭代中使用了未标注的状态分布(可以与d_π有很大的差异),这种算法在实际应用上可能有很多低效的地方。
3.6数据集聚合(Dagger)
3.6.1DAgger
Ross和Bagnell在2010年提出了DAgger[5]算法来解决从示范中学习的问题。DAgger是一种迭代式的策略训练算法,使用了一种归约到在线(reductiontoonline)的学习方法。在每次迭代中,我们都在该学习器所遇到过的所有状态上重新训练主要分类器。DAgger的主要优势是使用了专家(expert)来教学习器如何从过去的错误中恢复过来。这是一种基于Follow-The-Leader算法(每一次迭代都是一个在线学习示例)的主动式方法(我们需要读取专家本身)。
我们从完全由专家教授的第一个策略π_0开始,运行π_0,看学习器访问了什么配置。我们生成一个新的数据集,其中包含有关如何从π_0的错误中恢复的信息。因为我们希望同时有来自π_0和π_1的信息,所以我们联合使用起始的仅有专家的轨迹和新生成的轨迹来训练π_1。我们在每次迭代过程中都重复这一过程。我们选择在验证测试上表现最好的策略。
SEARN[3]和DAgger之间的主要算法差异是每次迭代过程中分类器的学习以及将它们组合成一个策略方面。DAgger可以组合在所有迭代中获得的训练信号,与之相反,SEARN仅在第i次迭代上训练,即不聚合数据集。SEARN是第一种实用的方法,之后是DAgger。DAgger对复杂问题和简单问题都适用;当收集的数据越多时,它的效果就越好,但仅需少量迭代就有效果。所以对手写识别和自动驾驶等很多应用而言,DAgger都很有用。
3.6.2DAggerbycoaching
使用DAgger时,策略空间可能与学习策略空间相距甚远,这会限制学习能力,也可能无法根据状态推断得到信息。为了防止出现这种情况,HHHDauméIII等人在2012年提出了DAggerbycoaching算法[6]。使用这一算法,我们可以执行易于学习的动作,即在学习器的学习能力范围内。当动作太难时,教练(coach)会降低目标然后渐进地教授。
算法5描述了DAgger算法和DAggerbycoaching算法。
图2:在自动驾驶汽车任务上的DAgger算法图示
图3:在手写字符识别任务上的DAgger、SMILe、SEARN和监督式方法的表现比较。基准只是一个独立预测每个字符的支持向量机(SVM)。α=1(相当于纯策略迭代方法)和α=0.8的SEARN和DAgger在这一任务上表现更好(来自DAgger原论文[5])。
3.7使用示范的近似策略迭代(APID)
具体来说,我们设置一个API的环境,然后使用专家提供的额外信息(尽管这些信息很少或不准确)。V^π和Q^π表示π的价值函数和动作-价值函数,V和Q表示最优策略π的价值函数和动作-价值函数。我们有一个交互数据集分别对应一个专家示例集合,也就是一个包含n个示例的(状态,动作)对样本分别对应于一个包含m个示例的(状态、示范动作)对。为了编码专家的次优性,我们为动作-价值最优策略增加了一个变量,以允许偶尔违反约束条件。最后,我们得到一个有约束的优化问题。在这种方法中,我们不必获取确切的Bellman算子T^π,只需要样本即可,由此我们可以使用ProjectedBellman误差。
3.8聚合值以进行模拟(AggreVaTe)
我们使用表示在状态s执行动作a的期望未来cost-to-go,之后再执行t-1个步骤的策略π。
和DAgger算法完全一样,AggreVaTe通过与学习器交互来收集数据,方式如下: