论文阅读笔记《Meta-Learning of Neural Architectures for Few-Shot Learning》

核心思想

  本文提出一种基于参数优化的小样本学习算法(MetaNAS)。本文最重要的改进就是将神经架构搜索(neural architecture search,NAS)引入到小样本学习算法中,简单地理解就是MAML和Reptile等元学习算法,是在确定网络结构的基础上,通过元训练的方式获得较好的初始化参数,而本文引入NAS后,不仅要对初始化参数进行学习,而且要对网络结构参数进行学习。为了实现这一想法,作者将经典的NAS算法DARTS和小样本学习算法Reptile进行了结合,为了方便大家理解,我们首先介绍一下DARTS算法的过程,如下图所示
在这里插入图片描述
  图中带有数字的矩形块表示网络中的结点,或者就是许多组特征图,不同颜色的连线分别表示不同的操作(如3 * 3的卷积,5 * 5的卷积和最大值池化等),而连线的粗细表示不同操作所占的权重比例。经过NAS搜索得到的网络结构如最左侧的图所示,各个结点之间是稠密链接的,每两个结点之间都有三种不同的操作方式,只不过每种操作所占的比例不同,这一过程如下式
在这里插入图片描述
式中 x ( j ) x^{(j)} 表示第 j j 个节点处的特征图, O \mathcal{O} 表示所有可能操作的集合, α ^ o i , j \hat{\alpha}_o^{i,j} 表示从节点 x ( i ) x^{(i)} 到结点 x ( j ) x^{(j)} 之间操作 o o 所占的权重比例, w o i , j w_o^{i,j} 就表示操作 o o 所包含的常规参数,如卷积核的权重值等。而NAS搜索的过程最重要的就是学习权重参数 α ^ o i , j \hat{\alpha}_o^{i,j} 其计算方式如下
在这里插入图片描述
可以看到DARTS是通过加权求和的方式,将所有的操作混合起来,然后将所有 x ( j ) x^{(j)} 结点之前的输出都累加起来作为结点 x ( j ) x^{(j)} 的输入。通过这种混合操作,就将原本节点之间多种操作方式融合为一种,结点间的连接变得稀疏了一些,如中间的图所示。但是尽管如此,每个结点的输入都包含之前所有结点的输出,结点之间的连接还是过于稠密,为了得到最终的网络模型,DARTS算法采用一种硬剪枝(hard-pruning)的方式,对于每个结点仅保留1-2个输入,其他输入全部删去(如最右侧的图所示),但这种方式会导致模型性能下降,因此需要将剪枝后的模型进行重训练。
  关于本文的另一个基础算法MAML或Reptile可以参看我先前的笔记,这里不再赘述。本文则是在MAML或Reptile的基础上增加对于网络结构权重参数 α o i , j \alpha_o^{i,j} 的元学习部分,在任务学习阶段不仅要更新原本的权重参数 w w 还要更新结构参数 α \alpha ,计算过程如下
在这里插入图片描述
同理在元学习阶段也需要对两个参数进行更新,对于MAML算法,其计算过程如下
在这里插入图片描述
对于Reptile算法,其计算过程如下
在这里插入图片描述
  同DARTS算法一样,在得到网络结构权重参数 α \alpha 后需要进行剪枝操作,但原本的硬剪枝操作存在两个问题:1.剪枝后需要重训练,这对于需要分成多个任务进行训练的小样本学习算法而言,成本太高;2.对于小样本学习多个任务而言,训练得到的网络结构是相同的,不能根据不同的任务调整网络结构。针对上述两个问题,本文提出一种柔性剪枝(soft-pruning)的方法,具体的实现过程就是给 α ^ o i , j \hat{\alpha}_o^{i,j} 计算中增加一个退火温度参数 τ α \tau_{\alpha} ,如下式所示
在这里插入图片描述
随着温度参数 τ α \tau_{\alpha} 逐渐衰退到0,网络结构权重参数 α ^ o i , j \hat{\alpha}_o^{i,j} 会收敛到0或1,这样就相当于获得了一个独热向量,两个结点间多种操作中只有一种操作的权重接近1,其他的都接近0(相当于被剪枝)。用这一方式取代了DARTS算法中加权求和的方式,实现了对不同操作的剪枝,而且作者认为温度参数衰减的过程,就是网络权重参数逐步适应任务需求的过程,根据每个任务的训练集不同,可以学习到不同的权重参数 α ^ o i , j \hat{\alpha}_o^{i,j} 以满足不同任务的需求,整个过程如下图所示
在这里插入图片描述
  最后对于每个结点的多个输入进行剪枝,处理过程与上文采用的方式类似。令两个节点之间的连接权重为 β i , j \beta^{i,j} ,并引入退火温度参数 τ β \tau_{\beta} ,然后按照下式进行计算
在这里插入图片描述

实现过程

网络结构

  通过NAS的方式进行学习

损失函数

在这里插入图片描述
式中 Φ k \Phi^k 表示第 k k 个任务学习器

训练策略

  与Reptile算法相结合的训练过程如下图所示
在这里插入图片描述

创新点

  • 将NAS中的DARTS算法与小样本学习中的Reptile算法相结合,通过元学习的方式同时训练权重参数和结构参数
  • 引入退火温度参数,实现任务自适应的柔性剪枝方案

算法评价

  真是一个万物皆可AutoML的时代,连我认为与AutoML诉求最为矛盾的小样本学习问题都纳入了NAS的研究版图。因为对于普通的问题,采用NAS方法实际上是将搜索空间扩大,不仅寻找最好的权重或者偏置参数,而且还要寻找最好的模型结构,而这一过程无疑加剧了对于数据集的依赖,必须有充足的样本用于训练,才能够避免过拟合的问题,是其具备较好的泛化能力,而小样本学习问题所缺少的恰恰就是训练样本。本文是利用元学习的方式,将网络结构参数作为学习的对象,利用MAML或Reptile等方法进行训练,并且设计了一种新的柔性剪枝方案,使其更好的适应小样本学习任务。

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