论文阅读笔记《Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks Chelsea》

核心思想

  本文提出一种颇具野心的元学习算法用于解决小样本学习任务,题目中涵盖了三个关键词Model-Agnostic——无模型限制的,即该算法可以应用于多种类型的网络模型和任务类型;Meta-Learning——元学习,即该算法不是学习得到一种具体的模型,而是学习如何进行学习(learn to learn);Fast Adaptation——快速适应,即该算法能够在少量样本,有限迭代次数条件下快速适应新的任务。文章首先明确了元学习的任务目标——从少量的新数据中快速学习一个新的任务,并且训练得到的模型能够学习大量不同的任务。如何实现这一目标呢?作者提出一种思想,存在一些内在的特征是适用于许多任务的,而基于这些特征再进一步根据任务细化一下,就能够很快的适用于某个特定任务。出于这一想法,作者提出一种元学习的方法,首先训练网络具备一些共有特征提取的能力,在此基础上在进一步训练网络具备快速适应新任务的能力,即学习得到一个具备较高敏感度的参数初始化状态,只需要局部的小幅度变化就能因其损失的快速下降。
在这里插入图片描述

  那么作者具体是如何实现的呢?与其他元学习算法一样,作者引入了任务Task的概念,一个Task中包含训练集和测试集,而所有的任务都是从一个任务分布 p ( T ) p(T) 中采样得到的。整个学习过程包含两个层次,第一个层次,从 p ( T ) p(T) 中采样得到多个任务 T i T_i ,并在任务的训练集上训练网络得到权重参数 θ \theta' ,使其具备共同特征的提取能力。第二个层次,在各个任务的测试集上计算损失,并进一步优化参数使得测试集上的损失之和最小化,得到参数 θ \theta ,使其对新任务具备高度敏感性,能在少量学习过程中快速适应。第一个层次的测试集其实就是第二个层次的训练集。经过这样的训练之后,获得了一个具备较高敏感度的参数初始化状态(如图中黑色实心点处),在测试时只需要让其学习少量的样本,进行少量的迭代微调(有时甚至只需一步迭代)就能实现较好的效果(根据任务需要到达图中 θ i \theta_i^* 处),哪怕这个测试的样本是之前训练过程中从未出现过的。例如在一个只包含猫科动物的数据集中进行训练,将训练得到的网络在包含少量样本的犬科动物数据集上进行微调训练,就能快速具备识别犬科动物的能力。

实现过程

网络结构

  该算法是不限制模型的,可应用于分类、回归甚至强化学习等多种任务,因此只需要根据任务要求选择合适的网络结构即可。

损失函数

  如上文所述,损失函数根据任务要求调整,一般而言对于分类任务采用交叉熵损失函数,对于回归任务采用均方误差损失,对于强化学习任务采用累计回报期望的负值作为损失。

训练策略

  如上文所述,训练过程包含两个层次,首先在随机初始化 θ \theta 的条件下,对多个任务的训练集进行多次迭代得到 θ \theta' ,然后在测试集上计算损失,并利用该损失进一步更新参数 θ \theta ,再在更新后的 θ \theta 条件下重复上述训练过程。两个层次的训练均采用SGD方法进行优化,计算过程如下
在这里插入图片描述
在这里插入图片描述

其中 α \alpha β \beta 分别是两层训练的学习率,其中 α \alpha 可以作为超参数,也可以作为元学习的参数之一,通过训练获得;而 β \beta 只能作为超参数,利用验证集通过调参确定。

网络推广

  该算法其实是提出一种元学习方法的框架,任何类型的网络模型都可以应用该框架进行训练,因此具备强大迁移应用能力,这也是该文章的野心所在。

创新点

  • 提出一种全新的元学习方法,通过训练获得一种具备较高敏感度的参数初始化状态,在此基础上经过少量样本的调优训练即可获得完成新任务的能力
  • 将分类、回归、强化学习等多种模型统一在一个框架下,拓宽了小样本学习的研究边界

算法评价

  初读此文时并没有感觉到有什么特别之处,甚至觉得作者在夸夸其谈。但在阅读了许多人对该文的解读,并在此精读此文时,才明白作者的野心所在。其并不局限于设计某个模型,甚至不局限于某个任务,而是希望提出一种宽泛的元学习框架使其可以解决任何的小样本学习任务。其提出的通过元学习获得一种具备较高敏感度的参数初始化状态的思想也是非常具有创新性和突破性的,实验结果也表明该方法在多个任务中都取得了优异的表现。作者还对两个层次网络训练过程中损失传递问题做了一定的探究,之前在《Optimization as A Model for Few-shot Learning》这篇文章中,采用了损失独立的方式,第二个层次网络的损失不会传递到第一层次中,而在本文中作者通过实验用一阶导数近似二阶导数并不会对结果产生明显的影响(可能是因为ReLU的二阶导数几乎处处为0),却能够明显提高计算速度。

如果大家对于深度学习与计算机视觉领域感兴趣,希望获得更多的知识分享与最新的论文解读,欢迎关注我的个人公众号“深视”。在这里插入图片描述