【论文翻译】Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks

最近集中火力肝imitation learning。。MAML是一个重要的方法论,写给自己凑活看的。。。。开始


  • Abstract

    • 本文针对meta-learning提供了一种模型不可知的的算法,适用于任何基于梯度下降的模型,可以应用于不同的学习问题:分类/回归/RL。meta-learning的目标是:“基于不同的任务进行训练,接下来只需要少数训练样本就可以完成新任务”。在“从新任务中获取的少量训练数据”上进行少量“梯度下降步”就可以得到很好的性能。实际上,我们的方法,使得训练出来的模型很容易进行微调。我们证明:这种方法在“小样本图像分类”问题具有很好的性能,以及小样本回归问题。同时加速了policy gredient RL的微调。
  • 1. Introduction

    • 快速学习是人类智力的一个标志。我们希望AI做到:从少数几个例子中快速学习和适应,并当数据越来越多的时候继续保持适应。这种快速而灵活的学习方式是具有挑战性的,因为agent必须将其先验与少量的新信息结合起来,同时避免对新数据的过度拟合。此外,先验和新数据的形式将取决于任务。因此,为了最大的适用性,meta-learning的机制应该对任务和完成任务所需的计算形式有通用性。
    • 本文工作集中于神经网络,但是会讲解如何把方法应用于不同的架构和问题设置。关键思想是:通过训练,得到模型的初始化参数。接下来在拿到一个新任务时,模型基于初始化参数,只使用少量参数,进行几个梯度下降步,就可以在新任务获取很好的表现。和以前的meta-learning不同,我们的算法不扩展参数规模,对模型架构也没有约束,可以很方便的与全连接,卷积,循环网络结合。它还可以与各种损失函数一起使用,包括可微监督损失和不可微强化学习目标。
    • 从特征学习的角度来看,这个过程(训练一个模型的参数,使一些梯度步骤,就可以在一个新的任务上产生良好的性能)可以看作是:构建一个可以适用于许多任务的内部表示。如果一个内部表示是适用于许多任务的,那么微调参数就可以获得很好的性能。从动态系统的角度来看,我们的学习过程可以看作是:使对“新任务的损失函数”对于参数的敏感性最大化,也就是说当敏感性很高时,参数的微小改变就可以大大提升任务的性能。
    • 我们的算法可以加速RL,并且作为一种初始化方案,大大优于pre-train。
  • 2. Model-Agnostic Meta-Learning

    • 我们的目标是能够rapid adaptation。问题经常被描述为“few-shot learning”。

    • 2.1. Meta-Learning Problem Set-Up

      • few-shot meta-learning的目标是:只使用很少的样本以及迭代数,就可以成功地适应新的任务。 

      • 每个task的描述是 :T = { L(x1,a1,...,xH,aH) , q(x1) , q(xt+1|xt,at) , H }。其中L是损失函数,q(x1)是初始状态的的分布,q(xt+1|xt,at)是从当前observation到下一个observation的transition的分布,episode的长度为H。在独立同分布的监督学习问题中,H=1。模型在每个时间步t选择一个输出at,从而生成一个长H的样本。损失函数L的值是实数,可以是误分类损失,也可以是MDP的一个代价函数(因具体任务而异)。

      • 在meta-learning的场景中,我们希望模型能够适应的任务分布为p(T)。在K-shot learning设定中,我们希望模型通过训练后,能够实现“只需要K个样本就可以学习一个新任务Ti”,其中这K个样本从qi中获取,LTi是在新任务Ti上生成的反馈。在meta-training阶段,从任务分布p(T)中采样一个任务Ti,针对整个任务模型使用K个样本进行训练,并且产生对应的loss LTi。并用从任务Ti中采样的新样本,进行测试。使用如下方式来提升模型f:“从qi采样新数据,探索:在新数据上的test error与模型参数的关联。”实际上,在任务Ti上的测试误差,在meta-learning过程中,充当了训练误差。在meta-learning阶段结束后,从p(T)采样新的任务,并在此新任务上测量meta-performance。

    • 2.2. A Model-Agnostic Meta-Learning Algorithm

      • 问题症结在于:如何创建一个通用性好的内部表示呢?因为模型需要在新的任务上使用“梯度学习法则”进行微调,所以我们的目的在于:学习到这么一个模型,在针对“从p(T)中采样得到的新任务”时,“梯度学习法则”可以在这个模型上立竿见影,并且不会过拟合。实际上,我们的目的在于找到一组模型参数,参数对任务的改变很敏感,以至于很微小的参数变可以可以在损失函数上获得巨大的提升(损失函数对应的任务采样自p(T))。我们对模型的具体细节不做假设,只假设参数向量是θ,并且损失函数在θ附近是比较平滑的,可以使用“基于梯度的学习算法”。
      • 我们假设模型为fθ。当模型成功地适应了一个新任务Ti时,参数变成了θi′。其中参数θi′是通过在新任务Ti上进行几个梯度下降步得到的。比如说,如果只使用一个梯度下降步,那么:
      • 其中,步长可以是固定的,也可以通过meta-learn进行学习。为了简单起见,我们只考虑一个梯度下降步。
      • meta-objective如下所示:【该式的含义:找出这么一个θi‘,使得θi‘对所有采样自p(T)的任务Ti,都可以较好的结果】
      • 注意,meta-optimization是基于参数θ的,而objective是使用“ 被更新的模型参数θ′ ”进行计算的。任务间的meta-optimization基于SGD,参数θ按照下面的方式进行更新,其中β是meta步长:
      •           
      • 完整的算法如下:
      •     【论文翻译】Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks_第1张图片
      • MAML meta-gradient 的更新涉及了“梯度中的梯度”。从计算上讲,这需要额外的反向传播穿过f,来计算黑森向量的乘积。在我们的实验中,我们会丢弃这个额外的反向BP来进行对比。
  • 3. Species of MAML

    • 本节讨论针对监督学习和RL的MAML。他们的区别在于:损失函数的形式不同&任务的数据是如何生成的&数据如何展示给模型。但是,底层的adaption机制是一样的。
    • 3.1. Supervised Regression and Classification

      • 小样本学习在监督学习领域被研究的很好,研究目标是:从少量的“关于某个任务的输入-输出对”来学习一个新的函数,前提是已经从相似的任务中获取了一些先验数据。举个例子:一个模型之前已经见过许多种类的物体了,现在只让这个模型看几个电动车的样本,然后希望模型能学会对电动车图片进行分类。同样的,在小样本回归问题上,当在许多“具有相似统计特性的函数”上进行训练以后,对于某个新的连续值函数,当给出几个从函数中采样出的数据点以后,模型能够立刻学习出函数的表达式,从而较好的预测函数的输出。
      • 为了用meta-learning的形式说明监督回归问题和分类问题,令H=1,并且扔掉时间下标t,因为模型接受单个输入,输出单个输出,而不是序列。任务Ti从qi中生成K个独立同分布的observation x,任务的损失是“x对应的输出和目标y之间的误差”。
      • 监督分类和回归问题常用的两个损失函数是交叉熵和均方误差。
      • 回归任务使用均方误差函数:
      •           
      • 其中,x(j), y(j)是从任务Ti中采样到的输入-输出对。在K -shot regression tasks中,每个任务提供k个输入-输出对。
      • 相似的,对于离散的分类问题,我们使用交叉熵损失函数,形式如下:
      •                              
      • K-shot classi- fication tasks针对每个类别使用k个输入-输出对,那么对于N类分类问题,就具有N*K个样本。

      • 当给出任务分布以后,损失函数就可以插入2.2部分,得到具体的meta-learning,算法如下:

      •              【论文翻译】Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks_第2张图片

    • 3.2. Reinforcement Learning

      • 在强化学习中,小样本学习的目标就是:当agent面对一个新任务时,只使用少量的经验就可以快速获得一个策略。例如,agent可能会学习如何快速的在迷宫进行导航,以便在面对一个新的迷宫时,它使用少量样本就可以学习如何到达出口。本节讨论如何将MAML应用于RL。
      • 每个强化学习任务Ti包含:初始状态分布 qi (x1),transition分布 qi(xt+1|xt , at ),损失函数LTi对应于奖励函数R。整个任务是一个长度为H的MDP。基于小样本学习问题,只允许基于少量样本对新任务进行学习。所有的任务都服从p(T )分布。学习到的模型是一个策略:在每一个时间步t ∈ {1, ..., H },把状态xt映射到动作at上的分布。任务Ti的损失函数如下:
      •       
      • 对于K-shot reinforcement learning问题,K rollouts from fθ and task Ti, (x1,a1,...xH), and the corresponding rewards R(xt , at ), may be used for adaptation on a new task Ti 。由于动力学未知,期望的奖励是无法微分的。我们使用policy gredients来估计梯度,梯度被用来model gradient update(s) 和 meta-optimization。由于梯度更新使用的是on-policy,each additional gradient step during the adaptation of fθ requires new samples from the current policy fθi′ 。算法详情如下:
      •                      【论文翻译】Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks_第3张图片
      • 算法和算法2具有相同结构,不同之处在于step5和8从“任务Ti对应的环境”中采样轨迹。在对这个方法进行具体实现的时候,可以使用许多近期提出的“基于policy gredient的改进算法,比如state or action-dependent baselines and trust regions”。

【以下为个人总结】

简而言之,MAML做的事情就是:

                    找到这样一个theta——以这个theta为初始状态,在其他几个task的demo进行微调得到theta‘,计算loss(theta’),然后把这些loss(theta’)求和。如果这个sum(loss(theta’))已经收敛于一个很小的值了,那么这个theta就是我们要的theta。

【注意】本篇文章中在将MAML应用分类、回归、RL时:

                      “ 求解theta' 的lossfunction”和“基于sum来求解 theta使用的loss function”,是完全相同的loss function。即 Lv = Ltr 。之所以提这一点,是因为这两个函数在某些问题时是可以不同的。

                      “基于sum来求解 theta使用的loss function”是用来评估并更新theta,使得theta产生的action尽可能逼近真实的action,所以此处我们需要使用常见的loss function,比如MSEor交叉熵。

                      而“ 用来求解theta' 的loss function”,作用是让theta被更新到theta’,说白了就是需要这个loss function产生梯度来更新theta,【至于我们期望更新后的结果theta’是一个什么样的状态,这个问题待定。如果按照原作的方法,继续使用标准的loss function,固然会以一个比较好的方式收敛,此时得到的theta’是一个能逼近真实action的theta’,但针对具体Ti,我们其实不希望theta’是“能够逼近具体任务groundtruth的参数”。我们,真正希望得到的,是一个能够逼近通用参数的theta'。So,是不是还可以人为设计一些新的loss function函数?或者通过其他方式得到loss function?】。所以其实此处的loss function不一定要是标准的loss function(MSE or 交叉熵)。

个人理解,MAML的特点是:

           1.  在meta-training阶段,针对每个task的demo只需要进行微调,这意味着快速,对样本需求量少。

            2. 可以快速基于小样本数,小迭代数(这个我不确定),成功的学习一个新task(其实第二点之所以成功的机制,还是来源于第一点)。

 

 


你可能感兴趣的:(神经网络)