本文提出一种基于神经网络结构搜索(NAS)的小样本学习算法(MetAdapt),整体的思路其实与直接解读过的一篇文章《Meta-Learning of Neural Architectures for Few-Shot Learning》非常相似,但在一些具体的实现方法上还是各有特色的。首先,作者也是采用了经典的可微分NAS算法DARTS对网络结构进行搜索;为了适应小样本学习任务,作者在此基础上提出了MetAdapt Controllers结构,用于调整每个操作的权重系数;最后,作者采用了两级训练的方式,依次对神经网络中的参数和神经网络的结构参数进行训练。
DARTS进行神经网络结构搜索的过程,就是要构建一个有向无环图(DAG),图中的每个节点表示一组特征图,每个边表示一种操作(1*1卷积,3*3卷积,池化,跳跃连接等),每两个节点之间可能有不止一条边进行连接,每个边上的权重就表示这种操作的重要性,且两个节点之间每条边上的权重是经过归一化处理的,通过加权求和的形式得到一种混合操作(Mixed Operation)。节点
和
之间的混合操作计算方法如下式
表示所有操作的集合,
表示节点
和
之间操作
对应的权重.为了适应小样本学习的需求,提高对于特定任务的自适应能力,作者设计了一个MetAdapt Controllers结构,用于修正每个边上的权重系数。直接搜索和自适应修正后的网络结构如下图所示
MetAdapt Controllers结构的处理方法如下图所示
将每个Episode中支持集
所包含所有样本对应的特征图
,全部拼接起来构成一个
维的张量,
表示特征图的通道数,
表示特征图的尺寸。经过全局平均池化后,将所有特征图压缩为一个值,得到
维张量,接着利用带有ReLU激活层的线性层将特征图通道数进行压缩,得到
维张量。最后将张量展开为
维的向量,经过一个线性层后输出权重调整值
,将其与先前搜索得到的权重值
相加,就得到修正后的权重系数
最原始结构采用ResNet-12,并且保持前3个残差块(ResNet-9)的结构不变,只对最后一个残差块的结构进行搜索。
本文不仅需要对神经网络中各个网络层中的参数
进行训练,还需要对神经网络各个操作的权重参数
进行训练,如果同时对二者进行训练的话,会导致过拟合的问题。为了减轻过拟合问题,本文采用了两级迭代优化(bi-level iterative optimization)的训练方式。整个训练集分成两部分,一部分用于训练网络参数
,另一部分用于训练权重参数
。首先利用SGD方式训练网络参数,过程如下
然后在此基础上再训练权重参数
本文与Meta NAS都采用了DARTS方法对网络结构进行搜索,不同的是Meta NAS算是是将其与MAML等元学习算法相结合,并且对两种参数(权重参数和网络参数)同时进行训练和优化。而本文提出的MetAdapt的算法,引入了权重修正结构,并且采用两级迭代优化的训练方式。根据实验结果来看,本文提出的算法是很有竞争力的,是目前为止,基于参数优化的小样本学习算法中,精度最高的。
如果大家对于深度学习与计算机视觉领域感兴趣,希望获得更多的知识分享与最新的论文解读,欢迎关注我的个人公众号“深视”。