1、简介
可微神经网络架构搜索(NAS)要求将所有层选择同时保存在Memory中。这限制了搜索空间和最终架构的大小。相比之下,概率NAS(如PARSEC)通过高性能架构学习分布,并且只使用训练单个模型所需的内存。但是,它需要对许多体系结构进行采样,从而使其在广阔的空间中进行搜索的计算量很大。
为了解决这些问题,Facebook AI团队提出了一种适合于分布熵的采样方法,在开始时抽取更多样本以激励搜索,并随着学习的进行而减少样本。此外,为了在多变量空间中快速搜索,从一开始就通过使用因子分解分布提出了一种从粗到精的策略,该策略可以将体系结构参数的数量减少一个数量级以上。
FP-NAS与PARSEC相比,它可以减少64%的架构采样,搜索速度提高2.1倍。与FBNet-V2相比,FP-NAS的速度提高了1.9-3.6倍,并且搜索的模型优于ImageNet上的FBNet-V2模型。FP-NAS允许将FBNet-V2空间扩展至更宽(即更大的通道选择)和更深(即更多的块),同时添加Split-Attention Block并启用对拆分数目的搜索。搜索大小为0.4G FLOPS的模型时,FP-NAS比EfficientNet快132倍,并且搜索到的FP-NAS-L0模型比EfficientNet-B0精确度高0.6%。在不使用任何架构替代或扩展技巧的情况下直接搜索高达1.0G FLOPS的大型模型。同时FP-NAS-L2模型具有简单的蒸馏功能,比BigNAS-XL的蒸馏性能高出0.7%,而FLOPS却更少。
2、相关研究与分析
2.1、人工设计模型
构建ConvNet的传统方法是设计可重复的构建块,并将它们堆叠起来形成深层模型,典型人工设计模型有ResNet、DenseNet和Inception等;
同时,随着移动设备的普及,手工设计轻量化模型也引起了人们的极大兴趣。轻量化模型使用了计算效率更高的块,如Inverted Residual Block和Shuffling Layer。
2.2、不可微神经结构搜索
早期的NAS方法不是基于强化学习就是基于进化。在以前的工作中,有研究者采用RNN控制器对架构进行采样,并对架构进行精度训练,作为更新控制器的奖励信号。但是它需要训练成千上万的架构,这在计算上是很难实现的;
类似地,在NASNet中,搜索CIFAR10和ImageNet的架构需要2000天。在基于进化的AmoebaNet中,搜索算法迭代地评估从种群中性能最好的架构进化而来的少量子架构,以加快搜索速度,但仍然需要训练数以千计的独立架构;
最近,EfficientNet通过在深度、宽度和输入分辨率上共同放大基于强化学习搜索的小模型来构建大模型;
Big-NAS使用蒸馏训练单个模型,并诱导不同大小的子模型,无需再训练或微调。
2.3、可微神经结构搜索
DARTS将离散搜索空间松弛为连续的,并通过梯度下降优化结构。虽然速度要快得多,但它需要实例化内存中的所有层,这使得在大空间中直接搜索大架构非常困难。因此,DARTS需要在搜索时使用模型的浅版本作为代理,并在评估时多次重复搜索的单元,以构建更大的模型。
通过路径修剪来改进DARTS,以减少在ProxylessNAS中的内存占用,更细粒度的搜索空间、层次搜索空间、更好的优化器,更好的架构采样器,平台感知,以及在通道上搜索和以一种内存高效方式的输入解析;
在GDAS中,提出了一种基于GumbelMax的可微采样器,每次只采样一个结构。减少了内存的使用,但所搜索的体系结构的性能低于基于进化的方法;
PARSEC提出了一种基于采样的方法来学习体系结构上的概率分布,同时也提高了内存效率。但是,为了得到好的搜索结果,需要不断地对大量的架构进行采样,这对于计算力的眼球非常高。
在本文中提出基于架构分布熵自适应地减少架构样本,大幅减少搜索时间,使搜索规模更大的架构成为可能。为了搜索轻量化模型,可区分的NAS方法被调整为对硬件敏感。
3、快速概率NAS
3.1、Background
本文的方法是基于PARSEC的扩展。在DNAS中,对于每一层l有一组候选操作O;每个操作o(·)都可以应用于输入特性。离散选择被放宽为候选操作的加权和:
式中,为第层的架构参数。
比如说,结构A是由L层上的单个选择唯一定义的,。引入了层操作选择的先验分布,其中结构参数代表选择不同操作的概率。单个架构可以表示为从中采样的离散选择。因此,架构搜索转化为在一定监督下学习的分布。这里假设不同层的选择是相互独立的,对一个架构A进行抽样的概率如下所示。
对于图像分类有图像X和标签y,概率NAS可以表述为通过贝叶斯蒙特卡洛法经验优化连续的结构参数:
式中,为模型权重。数据似然的连续积分是通过抽样架构和平均来逼近的。在抽样架构中可以通过估计梯度联合优化架构参数和模型权值。
为了缓解过拟合,作者分别对训练集和验证集计算梯度和。概率NAS是以迭代的方式进行。在每次迭代中,从中提取K个架构样本。
3.2、自适应结构采样
在PARSEC中整个搜索过程中采样固定数量的架构来估计梯度。但是对于不同大小的搜索空间可能不是最优的。在结构分布搜索开始时,需要更多的样本来近似梯度。随着搜索的进行,质量分布集中在一个小的候选集合上;在这种情况下可以通过抽取更少的样本来减少搜索计算量。
本文提出了一种简单而有效的自适应于结构分布学习的抽样方法。在搜索过程中调整了结构样本的大小与的熵成比例。在搜索的前期,熵值很高促使更多的探索。之后,熵的减少作为一个候选操作子集被认为是更有价值的,并且抽样可能更偏向于他们。具体来说:
式中,为分布熵,为预定义的尺度因子。实验表明自适应采样可以在不降低搜索模型的前提下大大减少搜索时间。
3.3、多变量空间中由粗到细的搜索
每层操作的搜索空间可以包含多个搜索变量,如卷积核大小、非线性和特征通道。在这种多变量空间中,当使用vanilla联合分布表示时,架构参数的数量是单个变量基数的乘积,随着变量的增加而快速增长。
例如,搜索空间有5个变量,包括kernel大小、非线性、Squeeze-Excite、MobileNetV3中的扩展率以及Channel。当它们各自的基数分别为3,2,2,6,和10时,使用个参数。这里可以对大的JD进行因式分解,并使用多个小的分布得到一个更紧凑的表示。对于上面的5维搜索空间使用了5个小分布,总的架构参数可以显著减少到,降低了将近31倍。
形式上,在具有M个搜索变量的层操作的搜索空间中,每一层都可以表示为一个M元组。下面的层操作采用因子分解分布(FD):
式中,表示变量的选择集合。与JD相比,FD大大降低了总体架构参数,在实际操作中往往会带来数量级以上的降低,可以大大加快搜索速度。但是FD忽略了搜索变量之间的相关性,只能支持粗粒度搜索。
例如,对扩展率和通道的搜索可能是相关的,因为在MobileNetV3中,MBConv Block中的内部通道是扩展率和通道的产物;当通道不深时,可能更倾向于使用较大的扩展率,但当通道已经很深时,可能不太倾向于使用较大的扩展率,因为它会引入过多的FLOPS,而且并不能提高分类精度。
因此为了支持快速搜索,提出了一种由粗到细的混合分布搜索方法,该方法采用混合分布的顺序,先用FD搜索若干个epoch,然后将FD转换为JD搜索接下来的epoch。实验结果表明由粗到细的搜索可以在不影响搜索模型性能的前提下加速搜索。
3.4、架构成本感知搜索
如果对架构成本没有任何约束,搜索倾向于大的架构,这更可能适合训练数据,但可能不适合对效率敏感的应用。为了在考虑目标成本的情况下搜索架构,作者采用了Hinge Loss,当架构使用的算力成本超过目标成本时,这将对架构造成惩罚,本文的Cost-Aware Loss包括数据可能性和模型计算成本:
其中采样结构的Hinge Loss为,表示体系结构成本系数,为预期的体系结构成本,可以通过平均抽样体系结构的成本来估计。梯度的透射率计算如下所示:
其中,
表示成本感知架构的重要权重。直观地说,架构参数的更新偏向于那些既能在验证数据上实现高数据似然性又能使用低延迟的架构。在搜索的最后,选择学习分布中最可能的一个作为最终的架构。