ProxylessNAS

https://arxiv.org/pdf/1812.00332v2.pdf

ICLR 2019

神经结构搜索(NAS)通过自动设计有效的(effective)神经网络结构而产生巨大的影响。然而,传统NAS算法(例如104 GPU小时)的计算需求令人望而却步,这使得在大规模任务(例如ImageNet)上直接搜索架构变得困难。可微NAS可以通过连续表示网络体系结构来降低GPU小时的成本,但存在GPU内存消耗高的问题(线性增长w.r.t.候选集大小)。因此,他们需要利用代理任务,例如在较小的数据集上进行训练,或者只使用几个块进行学习,或者只针对几个epoch进行训练。这些在代理任务上优化的体系结构不能保证在目标任务上是最优的。在本文中,我们介绍了ProxylessNAS,它可以直接学习大规模目标任务和目标硬件平台的体系结构。我们解决了可微NAS的高内存消耗问题,并将计算成本(GPU小时数和GPU内存)降低到与常规训练相同的水平,同时仍然允许较大的候选集。在CIFAR-10和ImageNet上的实验证明了直接性和专门性的有效性(effectiveness of directness and specialization)。在CIFAR-10上,我们的模型仅使用5.7M的参数就实现了2.08%的测试误差,比以前最先进的架构AmoebaNet-B更好,同时使用的参数更少6倍。在ImageNet上,我们的模型比MobileNetV2的top-1精度高3.1%,而在测量GPU延迟的情况下,速度快1.2倍。我们还应用ProxylessNAS,以直接硬件指标(如延迟)专门化硬件的神经架构,并为有效的CNN架构设计提供见解。预训练模型和评估代码在https://github.com/MIT-HAN-LAB/ProxylessNAS

1 引言

神经架构搜索(NAS)在自动化各种深度学习任务的神经网络架构设计方面取得了巨大成功,如图像识别(Zoph等人,2018;蔡等人,2018a;刘等人,2018a;Zhong等人,2018)和语言建模(Zoph&Le,2017)。尽管取得了显著的效果,但传统的NAS算法的计算量非常大,需要在一次实验中针对目标任务训练数千个模型。因此,直接将NAS应用于大规模任务(如ImageNet)在计算上非常昂贵或不可能,这使得它难以产生实际的行业影响。作为一种权衡,Zoph等人(2018年)建议搜索代理任务的构建块,例如,从较小的数据集(如CIFAR-10)开始进行较少时期的训练,或使用较少的块进行学习。然后将性能最好的块堆叠起来,并迁移到大规模目标任务中。该范式已广泛应用于后续NAS算法中(Liu等人,2018a;BReal等人,2018年;蔡等人,2018b;刘等人,2018c;Tan等人,2018年;罗等人,2018年)。

图1:ProxylessNAS直接优化目标任务和硬件上的神经网络架构。得益于直接性和专业化,ProxylessNAS可以获得比以前基于代理的方法更好的结果。在ImageNet上,仅使用200 GPU小时(比MnasNet少200倍(Tan等人,2018)),我们搜索的移动CNN模型达到了与MobileNetV2 1.4相同的顶级精度,同时速度快了1.8倍(our searched CNN model for mobile achieves the same level of top-1 accuracy as MobileNetV2 1.4 while being 1.8× faster)。

但是,在代理任务上优化的这些块不能保证在目标任务上是最优的,特别是在考虑延迟等硬件指标时。更重要的是,为了实现可迁移性,这些方法只需要搜索几个架构主题,然后重复堆叠相同的模式,这限制了块的多样性,从而损害了性能。在这项工作中,我们针对上述限制提出了一个简单有效的解决方案,称为ProxylessNAS,它直接学习目标任务和硬件上的体系结构,而不是使用代理(图1)。我们还取消了先前NAS工作中重复块的限制(Zoph等人,2018;Liu等人,2018c),并允许学习和指定所有模块。为了实现这一点,我们通过以下方式将架构搜索的计算成本(GPU小时数和GPU内存)降低到与常规训练相同的水平。

GPU小时数,受近期作品启发(Liu等人,2018c;Bender等人,2018),我们将NAS表述为路径级修剪过程。具体来说,我们直接训练一个包含所有候选路径的参数化网络(图2)。在训练过程中,我们显式地引入架构参数来了解哪些路径是冗余的,而这些冗余路径在训练结束时被修剪以获得紧凑的优化架构。这样,在架构搜索期间,我们只需要训练一个没有任何元控制器(或超网络)的单一网络。

然而,天真地包含所有候选路径会导致GPU内存爆炸(Liu等人,2018c;Bender等人,2018),内存消耗随着候选操作的数量而线性增长。因此,在GPU内存方面,我们对架构参数进行二值化(1或0),并强制在运行时仅激活一条路径,这将所需内存减少到与紧凑模型训练相同的级别。我们提出了一种基于梯度的方法来基于BinaryConnect训练这些二值化参数(Courbariaux等人,2015)。此外,为了处理不可微的硬件目标(以延迟为例),以便在目标硬件上学习专门的网络体系结构,我们将网络延迟建模为一个连续函数,并将其优化为正则化损失。此外,我们还提出了一种基于强化(Williams,1992)的算法,作为处理硬件度量的可选策略。

在CIFAR-10和ImageNet上的实验中,得益于直接性和专业性,我们的方法可以获得很强的实证结果。在CIFAR-10上,我们的模型在只有5.7M参数的情况下达到2.08%的测试误差。在ImageNet上,我们的模型实现了75.1%的top-1精度,比MobileNetV2(Sandler等人,2018年)高3.1%,同时比MobileNetV2快1.2倍。我们的贡献可以总结如下:

•    ProxylessNAS是首个不使用任何代理的情况下直接学习大规模数据集(如ImageNet)上的体系结构的NAS算法,同时仍允许使用大型候选集并消除重复块的限制。它有效地扩大了搜索空间,取得了较好的性能。

•    我们为NAS提供了一个新的路径级修剪视角,展示了NAS和模型压缩之间的密切联系(Han等人,2016)。通过使用路径级二值化,我们节省了数量级的内存消耗。

•    我们提出了一种新的基于梯度的方法(延迟正则化损失),用于处理硬件目标(例如延迟)。给定不同的硬件平台:CPU/GPU/Mobile,ProxylessNAS支持硬件感知神经网络专业化,该专业化针对目标硬件进行了精确优化。据我们所知,我们是首个针对不同的硬件结构研究专门的神经网络结构。

•    广泛的实验显示了ProxylessNAS的直接性和专一性的优势。在不同硬件平台(GPU、CPU和手机)的延迟限制下,它在CIFAR-10和ImageNet上实现了最先进的精度性能。我们还分析了针对不同硬件平台的高效CNN模型的见解,并提高了对不同硬件架构需要专门的神经网络架构才能进行高效推理的认识。

2    相关工作

在设计神经网络架构(通常称为神经架构搜索)时,使用机器学习技术(如强化学习或神经进化)取代人类专家,引起了越来越多的兴趣(Zoph&Le,2017;刘等人,2018a;BC蔡等人,2018a;BPham等人,2018年;Brock等人,2018年;Bender等人,2018年;Elsken等人,2017年;2018b;Kamath等人,2018年)。在NAS中,架构(architecture)搜索通常被视为元学习过程,并引入元控制器(例如,递归神经网络(RNN))来探索给定的架构(architecture)空间,在内环中训练网络,以获得指导探索的评估。因此,运行此类方法的计算成本很高,尤其是在大规模任务(如ImageNet)上。

最近的一些作品(Brock等人,2018年;Pham等人,2018)试图通过降低评估成本来提高元学习过程的效率。在Brock et al.(2018)中,超网络用于为每个采样网络生成权重,因此可以在不进行训练的情况下评估体系结构。类似地,Pham等人(2018年)提议在标准NAS框架下在所有采样网络之间共享权重(Zoph&Le,2017年)。这些方法将架构搜索速度提高了几个数量级,但是,它们需要一个超网络或RNN控制器,并且主要关注小规模任务(如CIFAR),而不是大规模任务(如ImageNet)。

我们的工作与One-Shot (Bender et al.,2018)和DARTS(Liu et al.,2018c)关系最为密切,这两种方法都通过将NAS建模为包含所有候选路径的超参数化网络的单个训练过程来摆脱元控制器(或超网络)。具体而言,OneShot使用DropPath(Zoph et al.,2018)训练过参数化网络,该网络以一定的概率退出每条路径。然后,他们使用预先训练过的参数化网络来评估体系结构,这些体系结构通过随机置零路径进行采样。DARTS还为每条路径引入了实值架构参数(real-valued architecture parameter),并通过标准梯度下降联合训练权重参数和架构参数。但是,它们会受到GPU内存消耗问题的困扰,因此仍然需要使用代理任务。在这项工作中,我们通过路径二值化来解决这两种方法中的大内存问题。

另一个相关主题是网络修剪(Han et al.,2016),其目的是通过移除不重要的神经元(Han et al.,2015)或通道(Liu et al.,2017)来提高神经网络的效率。与这些工作类似,我们从一个过度参数化的网络开始,然后修剪冗余部分以得到优化的体系结构。区别在于,他们关注的是层级修剪,只修改层的过滤器(或单元)数量,但不能改变网络的拓扑结构,而我们关注的是通过路径级修剪学习有效的网络架构。我们还允许修剪和增加层数。

3    方法

我们首先描述了具有所有候选路径的过参数化网络的构造,然后介绍了如何利用二值化结构参数将训练过参数化网络的内存消耗降低到与常规训练相同的水平。我们提出了一种基于梯度的算法来训练这些二值化的结构参数。最后,我们提出了两种处理不可微目标(例如延迟)的技术,用于在目标硬件上专门化神经网络。

3.1    过参数化网络的构建

将神经网络表示为,其中表示有向无环图(DAG)中的某条边。设是N个候选基元操作(例如卷积、池化、恒等映射、零操作等)的集合。为了构造包含搜索空间中任何架构的过参数化网络,我们没有将每条边设置为确定的基本操作,而是将每条边设置为具有N条平行路径的混合操作(图2),表示为。因此,过参数化网络可以表示为。

给定输入,混合运算的输出根据其N条路径的输出定义。在OneShot中,是的和,而在DARTS中,是的加权和,其中权重是通过将softmax应用于N个实值架构参数来计算的:

如式(1)所示,计算所有N条路径的输出特征映射,并将其存储在存储中,而训练紧凑模型只涉及一条路径。因此,与训练小型模型相比,OneShot和DARTS大约需要N倍的GPU内存和GPU小时。在大规模数据集上,大的设计空间很容易超过硬件的内存限制。在下一节中,我们基于路径二值化的思想来解决这个内存问题。

3.2    学习二值化路径

为了减少内存占用,我们在训练过参数化网络时只保留一条路径。与Courbariaux等人(2015)分别对每个权重进行二值化不同,我们对整个路径进行二值化。我们引入N个实值架构参数,然后将实值路径权重转换为二值门(transform to binary gates:):

基于二值门,混合操作的输出如下所示:

如公式(3)和图2所示,通过使用二值门而不是实值路径权重(Liu等人,2018c),在运行时内存中只有一条激活路径处于活动状态,因此训练过参数化网络的内存需求降低到训练紧凑模型的同一水平。这不仅仅是一个数量级的内存节省。

图2:学习权重参数和二值化架构参数。

3.2.1    训练二值化体系结构参数

图2说明了在过参数化网络中权重参数和二值化架构参数的训练过程。在训练权重参数时,我们首先冻结结构参数,并根据公式(2)对每批输入数据随机采样二值门。然后通过训练集上的标准梯度下降更新活动路径的权重参数(图2左)。当训练架构参数时,权重参数被冻结,然后在验证集上,我们重置二值门并更新架构参数(图2右侧)。这两个更新步骤以替代方式执行。一旦完成架构参数的训练,我们就可以通过修剪冗余路径来导出紧凑的架构。在这项工作中,我们只需选择路径权重最高的路径(Figure 2 illustrates the training procedure of the weight parameters and binarized architecture parameters in the over-parameterized network.When training weight parameters, we first freeze the architecture parameters and stochastically sample binary gates according to Eq. (2) for each batch of input data.Then the weight parameters of active paths are updated via standard gradient descent on the training set (Figure 2 left). When training architecture parameters, the weight parameters are frozen, then we reset the binary gates and update the architecture parameters on the validation set (Figure 2 right).These two update steps are performed in an alternative manner. Once the training of architecture parameters is finished, we can then derive the compact architecture by pruning redundant paths.In this work, we simply choose the path with the highest path weight.)。

与权重参数不同,架构参数不直接涉及计算图,因此无法使用标准梯度下降更新。在本节中,我们将介绍一种基于梯度的方法来学习体系结构参数。

在BinaryConnect(Courbariaux et al.,2015)中,实值权重使用对应的二值门的梯度来更新。在我们的例子中,类似地,架构参数的梯度可以使用代替来近似:

其中,如果,则,如果,则。由于二值门涉及计算图,如式(3)所示,可以通过反向传播计算。然而,计算机要求计算并存储。因此,与训练紧凑型模型相比,直接使用等式(4)更新架构参数也需要大约N倍的GPU内存。

为了解决这个问题,我们考虑将从N个候选操作中选择一条路径的任务分解为多个二项选择任务。直觉是,如果一条路径在特定位置是最佳选择,那么与任何其他路径相比,它应该都是更好的选择。注释2:在附录D中,我们为这个问题提供了另一个不需要近似值的解决方案。(To address this issue, we consider factorizing the task of choosing one path out of N candidates into multiple binary selection tasks.The intuition is that if a path is the best choice at a particular position, it should be the better choice when solely compared to any other path.)

按照这个想法,在架构参数的更新步骤中,我们首先根据多项式分布采样两条路径,并屏蔽所有其他路径,就好像它们不存在一样。因此,候选数量暂时从N减少到2,而路径权重和二值门被相应地重置。然后,我们使用通过式(4)计算的梯度来更新这两条采样路径的结构参数。最后,由于路径权重是通过将softmax应用于架构参数来计算的,因此我们需要通过乘以比率来重新缩放这两个更新架构参数的值,以保持未采样路径的路径权重不变。因此,在每个更新步骤中,一条采样路径被增强(路径权重增加),而另一条采样路径被衰减(路径权重减少),而所有其他路径保持不变。这样,无论N的值是多少,架构参数的每个更新步骤只涉及两条路径,从而将内存需求降低到与紧凑模型训练相同的水平。(Following this idea, within an update step of the architecture parameters, we first sample two paths according to the multinomial distribution (p1, · · · , pN ) and mask all the other paths as if they do not exist. As such the number of candidates temporarily decrease from N to 2, while the path weights {pi} and binary gates {gi} are reset accordingly. Then we update the architecture parameters of these two sampled paths using the gradients calculated via Eq. (4). Finally, as path weights are computed by applying softmax to the architecture parameters, we need to rescale the value of thesetwo updated architecture parameters by multiplying a ratio to keep the path weights of unsampled paths unchanged. As such, in each update step, one of the sampled paths is enhanced (path weight increases) and the other sampled path is attenuated (path weight decreases) while all other paths keep unchanged. In this way, regardless of the value of N, only two paths are involved in each update step of the architecture parameters, and thereby the memory requirement is reduced to the same level of training a compact model.)

3.3    处理不可微硬件度量

在为硬件设计有效的神经网络结构时,除了精度之外,延迟(而不是触发器)也是一个非常重要的目标。不幸的是,与使用损失函数的梯度可以优化的精度不同,延迟是不可微的。在本节中,我们将介绍两种处理不可微目标的算法。

3.3.1    使延迟可微

为了使延迟可微,我们将网络延迟建模为神经网络维度的连续函数(注释3:延迟预测模型的详细信息见附录B)。考虑具有候选集合的混合操作,并且每个关联一个路径权重,路径权重表示的是选中的概率。因此,混合操作(即可学习块)的期望延迟如下:

其中是第个可学习块的预期延迟,表示延迟预测模型,是的预测延迟。因此,架构参数关联的的梯度为:。

对于具有一系列混合操作的整个网络(图3左)(For the whole network with a sequence of mixed operations ),由于这些操作是在推理期间顺序执行的,因此网络的预期延迟可以用这些混合操作的预期延迟之和表示:

    

我们通过乘以比例因子将网络的预期延迟纳入正常损失函数,该比例因子控制准确性和延迟之间的权衡。最终损失函数如图3所示(右图)

其中表示交叉熵损失,表示权重衰减项。

图3:通过引入延迟正则化损失使延迟可微。

3.3.2    基于强化学习的方法

作为BinaryConnect的替代方案,我们还可以利用强化学习来训练二值化权重。考虑一个具有二值化参数α的网络,更新二值化参数的目的是找到使某个奖励最大化的最优二进制门席G,表示为R(·)。这里,为了便于说明,我们假设网络只有一个混合操作。因此,根据Regure(Williams,1992),我们对二值化参数进行了以下更新:

其中gi表示第i个采样的二进制门,p(gi)表示根据等式(2)采样gi的概率,并且ngi是根据二进制门gi的紧网络。由于等式(8)不要求R(Ng)是可微的w.R.t.g,因此它可以处理不可微目标。一个有趣的观察结果是,等式(8)的形式与标准NAS相似(Zoph&Le,2017),但它不是一个顺序决策过程,在我们的案例中没有使用RNN元控制器。此外,由于基于梯度的更新和基于增强的更新本质上是对相同二值化架构参数的两种不同的更新规则,因此可以将它们组合以形成架构参数的新更新规则。

4    实验和结果

我们在两个基准数据集(CIFAR-10和ImageNet)上证明了我们提出的方法在图像分类任务中的有效性。与之前的NAS工程不同(Zoph等人,2018;Liu等人,2018c)首先在小规模设置(例如更少的块)下学习CIFAR-10上的CNN块,然后通过重复堆叠将学习到的块传输到ImageNet或CIFAR-10,我们直接学习目标任务(CIFAR-10或ImageNet)和目标硬件(GPU)上的架构,CPU和手机),同时允许对每个块专门制定。

4.1    关于CIFAR-10的实验

结构空间。

对于CIFAR-10实验,我们使用Cai等人(Path-level network transformation for effificient architecture search,ICML2018)引入的树结构体系结构空间(tree-structured architecture space),并将PyramidNet(Han等人,2017)作为主干(注释4:附录中提供了候选集中的操作列表。)。具体的,我们用树状结构单元替换PyramidNet残差块中的所有3×3卷积层,每个单元的深度为3,每个节点的分支数设置为2(叶节点除外)。有关树状结构结构空间的更多详细信息,请参阅原始论文(Cai等人,2018b)。此外,我们使用两个超参数来控制该体系结构空间中网络的深度和宽度,即和,分别表示每个阶段(共3个阶段)的块数和最终块的输出通道数。

训练细节。

我们从训练集中随机抽取5000张图像作为学习架构参数的验证集,使用Adam优化器更新,基于梯度的算法(第3.2.1节)的初始学习率为0.006,基于强化学习的算法(第3.3.2节)的初始学习率为0.01。在下面的讨论中,我们将这两种算法称为分别为Proxyless-G(梯度)和Proxyless-R(强化学习)。

过参数化网络的训练过程完成后,根据第3.2.1节中讨论的体系结构参数导出紧凑网络。接下来,我们使用相同的训练设置训练紧凑网络,除了训练epoch数从200增加到300。此外,当使用DropPath正则化(Zoph等人,2018;黄等人,2016),我们进一步将训练epoch数增加到600(Zoph等人,2018)。

结果。

我们将所提出的方法应用于B=18和F=400的树形结构空间中的结构学习。由于我们不重复单元,而且每个单元有12条可学习的边,因此需要总共12×18×3=648个决策才能完全确定体系结构。

表1总结了我们提出的方法和CIFAR10上其他最先进架构的测试错误率结果,其中“c/o”表示使用了Cutout(DeVries&Taylor,2017)。与这些最先进的体系结构相比,我们提出的方法不仅可以实现更低的测试错误率,而且可以实现更好的参数效率。具体而言,Proxyless-G的测试错误率为2.08%,略高于AmoebaNet-B(Real等人,2018)(CIFAR-10上以前最好的架构)。值得注意的是,AmoebaNet-B使用34.9M的参数,而我们的模型仅使用5.7M的参数,比AmoebaNet-B少6倍。此外,与同样探索树状结构体系结构空间的PathLevel EAS(Cai等人,2018b)相比,Proxyless-G和Proxyless-R都能以少一半的参数获得类似或更低的测试错误率结果。ProxylessNAS的有力实证结果表明,直接探索大型结构空间而不是重复堆叠同一块结构的好处。

表1 ProxylessNAS在CIFAR-10上达到最先进水平

4.2    在IMAGENET上的实验

对于ImageNet实验,我们专注于学习高效的CNN架构(Iandola等人,2016;Howard等人,2017年;Sandler等人,2018年;Zhu等人,2018年)不仅具有高精度,而且在特定硬件平台上具有低延迟。因此,这是一项多目标NAS任务(Hsu等人,2018;Dong等人,2018年;Elsken等人,2018a;He等人,2018年;王等,2018;Tan等人,2018),其中一个目标是不可微分的(即延迟)。在我们的实验中,我们使用了三种不同的硬件平台,包括手机、GPU和CPU。GPU延迟是在批量大小为8的V100 GPU上测量的(单批处理会导致GPU严重利用不足)。在具有两个2.40GHz Intel(R)Xeon(R)CPU E5-2640 v4的服务器上,在批量大小为1的情况下测量CPU延迟。在批量大小为1的Google Pixel 1手机上测量移动端延迟。对于Proxyless-R,我们使用ACC(m)×[LAT(m)/T]w作为优化目标,其中ACC(m)表示模型m的精度,LAT(m)表示m的延迟,T是目标延迟,w是控制精度和延迟之间权衡的超参数。

此外,在手机上,我们在架构搜索期间使用延迟预测模型(附录B)。如图5所示,我们观察到测试集上预测的延迟和实际测量的延迟之间存在很强的相关性,这表明延迟预测模型可用于替代昂贵的 mobile farm infrastructure(Tan等人,2018),近似误差很小。

结构空间。

我们使用MobileNetV2(Sandler et al.,2018)作为主干构建结构空间。具体地说,与重复相同的移动反向瓶颈卷积(MBConv)不同,我们允许一组具有不同内核大小{3,5,7}和扩展比{3,6}的MBConv层。为了实现宽度和深度之间的直接权衡,我们启动了一个更深的参数化网络,并允许通过将零操作添加到其混合操作候选集来跳过具有残差连接的块。这样,在有限的延迟预算下,网络可以通过跳过更多块并使用更大的MBConv层来选择更浅和更宽,或者通过保留更多块并使用更小的MBConv层来选择更深和更薄。

训练细节。

在架构搜索期间,我们从训练集中随机抽取50000张图像作为验证集。更新架构参数的设置与CIFAR-10实验相同,只是初始学习率为0.001。在批量大小为256的剩余训练图像上训练过参数化网络。

ImageNet分类结果。

我们首先应用我们的ProxylessNAS来学习移动端上的专业CNN模型。总结结果如表2所示。与MobileNet V2相比,我们的模型将top-1的准确率提高了2.6%,同时在手机上保持了类似的延迟。此外,通过使用乘数重新扩展网络宽度(Sandler等人,2018;Tan等人,2018),如图4所示,在所有延迟设置下,我们的模型始终比MobileNetV2有显著的优势。具体而言,为了实现相同水平的顶级精度性能(即74.6%左右),MobileNetV2的延迟为143ms,而我们的模型只需要78ms(1.83×更快)。与MnasNet(Tan等人,2018年)相比,我们的模型的top-1精度要更高0.6%,移动端延迟略低。更重要的是,我们的资源效率更高:GPU小时比MnasNet少200倍(表2)。

此外,我们还观察到,如果不使用延迟正则化损失,Proxyless-G没有动机选择计算便宜的操作。其最终架构最初在Pixel 1上有158ms的延迟。在使用乘数重新缩放网络后,其延迟降低到83ms。然而,该模型在ImageNet上只能达到71.8%的top-1精度,比Proxyless-G给出的延迟正则化损失结果低2.4%。因此,我们得出结论,在学习有效的神经网络时,必须将延迟作为直接目标。

表2:ProxylessNAS在ImageNet上实现了最先进的精确度(%)(在移动延迟限制≤ 80ms下),GPU小时搜索成本减少200倍。“LL”表示延迟正则化丢失。MnasNet的搜索成本详情见附录C。

除了手机,我们还应用ProxylessNAS学习GPU和CPU上的专业CNN模型。表3报告了GPU上的结果,我们发现我们的ProxylessNAS与人工设计的和自动搜索的架构相比仍然可以实现优异的性能。具体而言,与MobileNetV2和MnasNet相比,我们的模型将top-1的准确度分别提高了3.1%和1.1%,同时速度提高了1.2倍。表4显示了我们在三个不同平台上搜索模型的汇总结果。一个有趣的观察结果是,为GPU优化的模型在CPU和手机上运行不快,反之亦然。因此,学习针对不同硬件结构的专用神经网络以在不同硬件上实现最佳效率是非常必要的。

表3:ImageNet上的ImageNet精度(%)和GPU延迟(Tesla V100)。
表4:硬件首选专用型号。为GPU优化的型号在CPU和手机上运行速度不快,反之亦然。ProxylessNAS提供了一种高效的解决方案,可以为目标硬件架构搜索专门的神经网络架构,同时与现有技术相比,搜索成本降低了200倍(Zoph&Le,2017;Tan等人,2018年)。

不同硬件的专用型号。

图6展示了我们搜索的CNN模型在三个硬件平台上的详细架构:GPU/CPU/Mobile。我们注意到,当针对不同的平台时,该体系结构显示出不同的偏好:(i)GPU模型更浅、更宽,特别是在特征图具有更高分辨率的早期阶段(ii)GPU模型更倾向于大型MBConv操作(例如7×7 MBConv6),而CPU模型则倾向于小型MBConv操作。这是因为GPU比CPU具有更高的并行性,因此它可以利用大型MBConv操作。另一个有趣的观察结果是,我们在所有平台上搜索的模型更喜欢在特征图下采样的每个阶段的第一个块中进行更大的MBConv操作。我们认为这可能是因为较大的MBConv操作有利于网络在下采样时保留更多信息。值得注意的是,在以前的NAS方法中无法捕获此类模式,因为它们迫使块共享相同的结构(Zoph et al.,2018;刘等人,2018a)。

图6:针对不同硬件优化的高效模型。”MBConv3”和“MBConv6”分别表示扩展比为3和6的移动反向瓶颈卷积层。洞察:GPU更喜欢浅层和宽层模型,具有早期池化;CPU更喜欢深度和狭窄的模型,具有后期池化。池化层更喜欢大而宽的内核。早期的层更喜欢小内核。后期层更喜欢大内核。

5    结论

我们介绍了ProxylessNAS,它可以直接学习目标任务和目标硬件上的神经网络结构,而无需任何代理。我们还使用路径二值化将NAS的搜索成本(GPU小时数和GPU内存)降低到与正常训练相同的水平。得益于直接搜索,我们在CIFAR-10和ImageNet上获得了强有力的实证结果。此外,通过将测量的硬件延迟直接纳入优化目标,我们允许为不同平台专门化网络体系结构。我们比较了CPU/GPU/mobile上的优化模型,并提高了对不同硬件体系结构的专门神经网络体系结构需求的认识。

致谢

我们感谢麻省理工学院探索智能、麻省理工学院IBM沃森人工智能实验室、SenseTime、Xilinx和Snap研究对这项工作的支持。我们还感谢AWS云计算研究项目为我们提供的云计算资源。

A    在CIFAR-10上使用的候选操作列表

我们在CIFAR-10实验中采用了以下7种操作:

•    3×3扩张深度可分离卷积

•    恒等映射

•    3×3深度可分离卷积

•    5×5深度可分离卷积

•    7×7深度可分离卷积

•    3×3平均池化

•    3×3最大池化

B    移动延迟预测

测量设备上的延迟是准确的,但对于可伸缩的神经架构搜索来说并不理想。有两个原因:(1)速度慢。正如TensorFlow Lite中所建议的,我们需要平均运行数百次,以产生精确的测量,大约20秒。这比单个正向/反向执行要慢得多(2)昂贵。构建自动管道以收集很多的移动手机的延迟需要大量移动设备和软件工程工作。我们建立了一个模型来估计延迟,而不是直接测量。我们只需要一部手机,而不是很多的手机,其只有0.75ms延迟RMSE。我们使用延迟模型进行搜索,并使用测量的延迟来报告最终模型的延迟。

我们从候选空间中采样了5k个架构,其中4k个架构用于构建延迟模型,其余用于测试。我们使用TensorFlow Lite在Google Pixel 1手机上测量了延迟。特征包括(i)运算符类型(ii)输入和输出特征映射大小(iii)其他属性,如内核大小、卷积步长和扩展比。

C    MNASNET搜索成本的详细信息

Mnas(Tan等人,2018年)在ImageNet上训练了8000个移动大小的模型,每个模型都经过了5个阶段的学习架构训练。如果这些模型在V100 GPU上进行训练,就像我们在实验中所做的那样,搜索成本大约为40000 GPU小时。

D    基于梯度算法的实现

基于梯度的算法(见公式(4))的一个简单实现是在前向步骤中计算并存储,以供在之后的后向传播步骤中计算:

    

其中表示混合操作的输出的梯度,表示按元素相乘,表示所有元素求和。

请注意,仅用于当条路径未激活(即不参与计算)时计算。因此,我们不需要实际分配GPU内存来存储。相反,我们可以在后向传播步骤中得到之后来计算,按照公式(9)使用计算,然后释放占用的GPU内存。这样,在不使用第3.2.1节中讨论的近似值的情况下,我们可以将GPU内存成本降低到与紧凑型模型训练相同的水平。



编者附:作者在正文里提到的树状结构空间是指:Path-level network transformation for effificient architecture search,ICML2018

http://proceedings.mlr.press/v80/cai18a/cai18a.pdf

在此论文中,描述树状结构空间的是第3.2节。

基于所提出的路径级操作,我们引入了一个简单但高度表达的树结构网络结构空间,它可以被视为多分支结构的一个广义版本。

3.2. 树状结构网络结构空间

在本节中,我们将描述树形结构的网络结构空间,如图3所示,该空间可通过路径级网络转换操作进行探索。

图3.通过路径级转换操作将单层转换为树结构图案的图示,(c)中我们使用Net2DeeperNet操作将恒等映射替换为的3×3深度可分离卷积。

树结构网络结构由边和节点组成,其中在每个节点(叶节点除外),我们有分配方案和合并方案的特定组合,节点通过边连接到其每个子节点,边定义为基本操作(如卷积、池等)。

给定输入特征映射,节点输出,其有个子节点,表示为,以及条对应的边,表示为,其输出是基于其子节点的输出递归定义的:

其中,表示根据分配方案为第个子节点分配的特征映射,表示的是合并方案,其将子节点的输出作为输入,并输出一个聚合的结果,该结果也是节点的输出。对于没有子节点的叶节点,它只返回输入特征映射作为其输出。如式(1)中所定义,对于树形结构网络结构,特征映射首先被馈送到其根节点,然后通过节点和边上的分配方案以自上而下的方式传播到所有后续节点,直到到达叶节点,最后在镜像中以自下而上的方式从叶节点聚合到根节点,生成最终的输出特征映射。

请注意,树结构的网络结构空间并不是通过建议的路径级转换操作可以实现的完整网络结构空间。我们选择探索树状结构网络结构空间,以便于实现,并进一步应用网络结构搜索方法,如基于RL的方法(Cai等人,2018),这些方法需要对网络结构进行编码。选择树结构网络结构空间的另一个原因是,它与现有的多分支网络结构有很强的联系,这些现有的多分支网络结构可以视为深度为1的树结构网络结构,即根节点的所有子节点都是叶节点。

为了在树结构的网络结构空间上应用网络结构搜索方法,我们需要通过定义一组可能的分配方案、合并方案和基本操作来进一步指定它。如第2.2节和第3.1节所述,分配方案为复制或拆分,合并方案为相加或拼接。对于基本操作,与之前的工作类似(Zoph等人,2017;刘等人,2018),我们考虑以下7种类型的层:

•    1×1卷积

•    恒等映射

•    3×3深度可分离卷积

•    5×5深度可分离卷积

•    7×7深度可分离卷积

•    3×3平均池化

•    3×3最大池化

这里,我们包括池化层,其不能被初始化为恒等映射。为了在选择合用层时保留功能,我们利用知识提炼的思想,进一步重构学生网络(即转换后的网络)中的权重,以模拟给定教师网络的输出逻辑(Hinton et al.,2015)。由于池化层不会显著破坏多路径神经网络的功能,我们发现重建过程可以以可忽略不计的成本完成。


以下是论文机器翻译,不做整理

摘要:我们引入了一种新的函数保持变换,用于高效的神经结构搜索。这种网络转换允许重用以前训练过的网络和现有的成功网络结构,从而提高样本效率。我们的目标是解决当前网络转换操作的局限性,这些操作只能执行层级架构修改,例如添加(修剪)过滤器或插入(删除)层,这无法更改连接路径的拓扑。我们提出的路径级转换操作使元控制器能够修改给定网络的路径拓扑,同时保持重用权重的优点,从而允许有效地设计具有复杂路径拓扑(如初始模型)的有效结构。我们进一步提出了一个双向树状结构强化学习元控制器,以探索一个简单但高度表达的树状结构网络结构空间,该空间可视为多分支网络结构的推广。我们使用有限的计算资源(约200 GPU小时)对图像分类数据集进行了实验,在实验中,我们观察到了改进的参数效率和更好的测试结果(在具有14.3M参数的CIFAR-10上的测试准确率为97.70%,在移动环境下的ImageNet上的测试准确率为74.6%),展示我们设计的架构的有效性和可转移性。

1.导言

设计有效的神经网络结构对于深度学习的性能至关重要。尽管通过重大的人工网络结构工程已经取得了许多令人印象深刻的成果(Simonyan&Zisserman,2014;Szegedy等人,2015年;He等人,2016年;Huang等人,2017b),这一过程通常需要人类专家多年的广泛调查,这不仅昂贵,而且可能是次优的。因此,自动化架构设计最近备受关注(Zoph&Le,2017;Zoph等人,2017年;刘等人,2017年;蔡等人,2018年;Real等人,2018年;Pham等人,2018年;Elsken等人,2017年)。

当前的大多数技术侧重于从零开始在指定的搜索空间中找到最佳网络结构,同时在真实数据(从随机初始化)上训练每个设计的网络结构,以获得验证性能,从而指导探索。尽管这些方法显示了在使用大量计算资源时发现性能优于人工设计架构的网络结构的能力,例如Zoph等人(2017),他们在4天内使用了500个P100 GPU,但它们也可能无法击败最佳人工设计架构(Zoph&Le,2017;Real等人,2017年;Liu等人,2018),尤其是当计算资源受到限制时。此外,架构(architecture)搜索过程中的培训时间不足(为了节省时间,培训时间比正常情况少很多)可能会导致模型表现不佳(Baker等人,2017),这将损害架构(architecture)搜索过程的效率。

或者,已经做出了一些努力,通过网络转换来探索网络结构空间,从针对目标任务训练的现有网络开始,并重用其权重。例如,Cai等人(2018年)利用Net2Net(Chen等人,2016年)操作(一类保留功能的转换操作)进一步寻找基于给定网络的高性能架构,而Ashok等人(2018年)使用网络压缩操作压缩训练有素的网络。这些方法允许从先前训练过的网络中转移知识,并利用目标任务中现有的成功架构,因此显示出更高的效率,并且需要更少的计算资源(例如,Cai等人(2018年)中的5 GPU)来实现竞争结果。

然而,Cai et al.(2018)和Ashok et al.(2018)中的网络转换操作仍然局限于仅执行层级架构修改,例如添加(修剪)过滤器或插入(移除)层,这不会改变神经网络中连接路径的拓扑。因此,它们将搜索空间限制为具有与起始网络相同的路径拓扑,即,当给定链式结构的起始点时,它们总是会导致链式结构的网络。由于最先进的卷积神经网络(CNN)架构已经超越了简单的链式结构布局,并证明了多路径结构的有效性,如初始模型(Szegedy et al.,2015)、Resnet(He et al.,2016)和DenseNets(Huang et al.,2017b),我们希望这些方法能够探索具有不同复杂路径拓扑的搜索空间,同时保持重用权重的好处。

在本文中,我们提出了一种新的神经网络转换操作,称为路径级网络转换操作,它允许修改给定网络中的路径拓扑,同时允许权重重用以保留Net2Net操作等功能(Chen等人,2016)。基于所提出的路径级操作,我们引入了一个简单但高度表达的树结构网络结构空间,它可以被视为多分支结构的一个广义版本。为了有效探索引入的树结构网络结构空间,我们进一步提出了一种双向树结构(Tai等人,2015年)强化学习元控制器,它可以自然地对输入树进行编码,而不是简单地使用链式结构的递归神经网络(Zoph等人,2017年)。

我们在CIFAR-10上学习CNN单元的实验表明,我们的方法使用有限的计算资源(约200 GPU小时)可以设计高效的单元结构。与DenseNets(Huang et al.,2017b)和PyramidNets(Han et al.,2017)等最先进的人工设计架构相结合,发现的最佳单元显示出比原始单元显著提高的参数效率和更好的结果。具体而言,在没有任何额外正则化技术的情况下,5.7M参数的测试误差为3.14%,而Densnet参数为25.6M时的最佳测试误差率为3.46%,棱锥网参数为26.0M时的最佳测试误差率为3.31%。此外,通过额外的正则化技术(DropPath(Zoph et al.,2017)和Cutout(DeVries&Taylor,2017)),它在14.3M参数下达到了2.30%的测试误差,超过了NASNet-A(Zoph et al.,2017)给出的27.6M参数和类似训练方案的2.40%。更重要的是,NASNet-A使用48000 GPU小时实现,而我们只使用200 GPU小时。我们进一步将CIFAR-10上的最佳学习单元应用于ImageNet数据集,方法是将其与Concedent(Huang等人,2017a)结合用于移动设置,并与移动设置中的模型相比,观察到改进的结果。

2.相关工作及背景

2.1. 架构搜索

架构搜索旨在自动找到给定架构空间中的有效模型架构,已使用各种方法进行研究,这些方法可归类为神经进化(Real et al.,2017;Liu等人,2018),贝叶斯优化(Domhan等人,2015;Mendoza等人,2016),蒙特卡罗树搜索(Negrino和Gordon,2017)和强化学习(RL)(Zoph和Le,2017;贝克等人,2017年;钟等,2017;Zoph等人,2017年)。

由于对每个设计的架构进行评估需要对真实数据进行培训,这使得直接在大型数据集(如ImageNet(Deng et al.,2009))上应用架构搜索方法的计算成本很高,Zoph et al.(2017)建议搜索可在以后堆叠的CNN单元,而不是搜索整个网络结构。具体而言,在小数据集(例如,CIFAR-10)上进行单元结构的学习,而学习的单元结构随后被传输到大数据集(例如,ImageNet)。该方案也已纳入Zhong等人(2017年)和Liu等人(2018年)。

另一方面,与从头开始构建和评估网络结构不同,最近有一些工作建议采用网络转换操作来探索目标任务中给定训练网络的网络结构空间,并重用权重。Cai等人(2018年)提出了一种递归神经网络,以迭代方式生成基于当前网络架构的转换操作,并使用强化算法对递归网络进行训练(Williams,1992年)。Ashok等人(2018年)也加入了类似的框架,其中转换操作从Cai等人(2018年)的Net2Net操作转变为压缩操作。

与上述工作相比,本文将现有的网络转换操作从层扩展到路径层。与Zoph et al.(2017)和Zhong et al.(2017)类似,我们专注于学习CNN单元,而我们的方法可以轻松地与任何现有的精心设计的架构相结合,以利用它们的成功,并允许重用权重以保留功能。

2.2. 多分支神经网络

多分支结构(或模体)是许多现代最先进的CNN网络结构的重要组成部分。初始模型系列(Szegedy等人,2015;2017; 2016)是成功的多分支网络结构,具有精心定制的分支。Resnet(He et al.,2016)和DenseNets(Huang et al.,2017b)可以被视为两个分支架构,其中一个分支是身份映射。这些多分支网络结构中的一个常见策略是,首先根据特定的分配方案(在初始模型中拆分或在resnet和densenet中复制)将输入特征映射x分配给每个分支,然后通过每个分支上的基本操作(例如卷积、池等)进行转换,并最终聚合以基于特定合并方案生成输出(在初始模型和densenet中添加resnet或串联)。

根据Veit et al.(2016)的研究,可将RESNET视为多条不同长度路径集合的集合。类似的解释也适用于初始模型和Densenet。由于Inception模型已经证明了仔细定制的分支的优点,其中每个分支使用不同的原始操作,因此,研究CNN单元内更复杂和设计良好的路径拓扑是否能使集合视图中的路径集合更加丰富和多样化,是非常有意义的。

在这项工作中,我们探索了一个树状结构的网络结构空间,在每个节点上,输入特征映射被分配给每个分支,经过一些基本操作和相应的子节点,然后被合并以生成节点的输出。它可以被看作是当前多分支网络结构(深度为1的树)的推广,并且能够在CNN单元中嵌入大量路径。

2.3. 保函数网络变换

功能保留网络转换是指初始化学生网络以保留给定教师网络功能的一类网络转换操作。Net2Net技术(Chen等人,2016)引入了两种特定的功能保持转换操作,即Net2WiderNet操作,该操作将一层替换为一个更宽的等效层(例如。,用于卷积层的更多过滤器)和Net2DeeperNet操作,该操作使用可初始化为标识的层替换标识映射,包括带有各种过滤器的正常卷积层(例如,3×3、7×1、1×7等)、深度可分离卷积层(Chollet,2016)等。此外,删减不太重要的连接(例如,低重量连接)以缩小给定模型的大小而不降低性能的网络压缩操作(Han等人,2015)也可以被视为一种保留功能的转换操作。

我们的方法建立在现有的函数保留转换操作的基础上,并进一步扩展到路径级架构修改。

3.方法

3.1. 路径级网络变换

我们引入的操作允许使用合并方案为添加或串联的多分支基序替换单层。为了说明操作,我们使用了两种特定类型的层,即标识层和正常卷积层作为示例,同时它们也可以类似地应用于其他类似类型的层,例如深度可分离卷积层。

对于表示为C(·)的卷积层,为了构造具有N个分支的等效多分支基序,我们需要设置分支,以便模拟任何输入特征映射x的原始层的输出。当通过add合并这些分支时,分配方案设置为复制,我们将每个分支设置为原始层C(·)的复制,这使得每个分支产生相同的输出(即C(x)),最后通过add合并后得到输出N×C(x)。为了消除这个因素,我们进一步将每个分支的输出除以N。因此,多分支模体的输出保持与原始卷积层的输出相同,如图1(中间)所示。当通过串联合并这些分支时,分配方案也设置为复制。然后,我们将原始卷积层的滤波器沿输出通道维度分为N个部分,并将每个部分分配给相应的分支,该分支随后合并以生成输出C(x),如图1(右图)所示。

对于标识层,当通过add合并分支时,转换是相同的,只是在这种情况下,每个分支中的卷积层更改为标识映射(图2(中间))。当通过连接合并分支时,分配方案被设置为拆分,每个分支被设置为标识映射,如图2(右)所示。

请注意,仅应用上述转换不会导致非平凡的路径拓扑修改。然而,当与Net2Net操作相结合时,我们能够显著地改变路径拓扑,如图3所示。例如,我们可以通过应用Net2DeeperNet操作将不同数量和类型的层插入每个分支,这使得每个分支变得非常不同,就像初始模型一样。此外,由于这种变换可以重复应用于神经网络中的任何适用层,例如分支中的层,因此我们可以任意增加路径拓扑的复杂性。

3.2. 树状结构网络结构空间

在本节中,我们将描述树形结构的网络结构空间,如图3所示,该空间可通过路径级网络转换操作进行探索。

树结构网络结构由边和节点组成,其中在每个节点(叶节点除外),我们有分配方案和合并方案的特定组合,节点通过定义为基本操作(如卷积、池等)的边连接到其每个子节点。给定输入特征映射x,节点N(·)的输出是基于其子节点的输出递归定义的,其中m个子节点表示为{Nc i(·)},m条对应边表示为{Ei(·)}:

其中,分配(x,i)表示基于分配方案为第i个子节点分配的特征映射,合并(·)表示将子节点的输出作为输入并输出也是节点输出的聚合结果的合并方案。对于没有子节点的叶节点,它只返回输入特征映射作为其输出。如式(1)中所定义,对于树形结构网络结构,特征映射首先被馈送到其根节点,然后通过节点和边上的分配方案以自上而下的方式传播到所有后续节点,直到到达叶节点,最后在镜像中以自下而上的方式从叶节点聚合到根节点,生成最终的输出特征映射。

请注意,树结构的网络结构空间并不是通过建议的路径级转换操作可以实现的完整网络结构空间。我们选择探索树状结构网络结构空间,以便于实现,并进一步应用网络结构搜索方法,如基于RL的方法(Cai等人,2018),这些方法需要对网络结构进行编码。选择树结构网络结构空间的另一个原因是,它与现有的多分支网络结构有很强的联系,可以将其视为深度为1的树结构网络结构,即根节点的所有子节点都是叶节点。

为了在树结构的网络结构空间上应用网络结构搜索方法,我们需要通过定义一组可能的分配方案、合并方案和基本操作来进一步指定它。如第2.2节和第3.1节所述,分配方案为复制或拆分,合并方案为添加或串联。对于原始操作,与之前的工作类似(Zoph等人,2017;刘等人,2018),我们考虑以下7种类型的层:

•1×1卷积

•身份

•3×3深度可分离卷积

•5×5深度可分离卷积

•7×7深度可分离卷积

•3×3平均池

•3×3最大池

这里,我们包括不能初始化为标识映射的池层。为了在选择合用层时保留功能,我们利用知识提炼的思想,进一步重构学生网络(即转换后的网络)中的权重,以模拟给定教师网络的输出逻辑(Hinton et al.,2015)。由于池层不会显著破坏多路径神经网络的功能,我们发现重建过程可以以可忽略不计的成本完成。

3.3. 具有路径级操作的网络结构搜索

在本节中,我们将介绍一个RL代理作为元控制器,以探索树状结构的网络结构空间。总体框架类似于Cai等人(2018)中提出的框架,其中元控制器迭代采样网络转换动作,以生成新的架构,这些架构随后经过培训,以获得验证性能作为奖励信号,通过策略梯度算法更新元控制器。为了将输入架构映射到转换动作,元控制器具有学习给定架构的低维表示的编码器网络,以及生成相应网络转换动作的不同softmax分类器。

在这项工作中,由于输入网络结构现在有一个树状结构拓扑,无法用一系列令牌轻松指定,因此我们建议使用树状结构的LSTM网络(Hochreiter&Schmidhuber,1997)来编码该网络结构(Zoph et al.,2017),而不是使用链状结构的长短时记忆(LSTM)网络(Hochreiter&Schmidhuber,1997)。Tai等人(2015)介绍了两种树结构LSTM单元,即子节点无序的树结构的子和树LSTM单元和子节点有序的树结构的N元树LSTM单元。欲了解更多详情,请参阅原始文件(Tai等人,2015年)。

在我们的例子中,对于合并方案为add的节点,其子节点是无序的,因此应用子和TreeLSTM单元,而对于合并方案为串联的节点,则使用N元树LSTM单元,因为其子节点是有序的。此外,由于节点之间有边,我们合并了另一个普通LSTM单元,用于在边上执行隐藏状态转换。我们将这三个LSTM单位表示为ChildSumlTM↑ , N芳基↑ 和LSTM↑ , 分别地因此,具有m个子节点的节点的隐藏状态如下所示

其中[hci,cc i]表示第i个子节点s的隐藏状态

表示节点的分配和合并方案,e是连接节点与其父节点的边,[h,c]是节点的隐藏状态。这种计算是以自下而上的方式进行的,如图4a所示。

注意,通过等式(2)计算的隐藏状态仅包含节点下方的信息。类似于双向LSTM,我们进一步考虑自顶向下的过程,使用两个新的LSTM单元(N ARLYSTM)。↓ 和LSTM↓ ), 为每个节点计算另一个隐藏状态。我们将节点的这两种隐藏状态分别称为自下而上隐藏状态和自上而下隐藏状态。对于具有m个子节点且其自上而下隐藏状态为[h~p,c~p]的节点,其第i个子节点的自上而下隐藏状态如下所示:

其中,[hj,cj]是第j个子节点自下而上的隐藏状态,s是该节点的分配和合并方案,ei是将该节点连接到其第i个子节点的边,[h~i,c~i]是第i个子节点自上而下的隐藏状态。如图4b和等式(3)所示,自下而上隐藏状态和自上而下隐藏状态的组合现在为每个节点形成一个综合隐藏状态,包含架构的所有信息。

鉴于每个节点的隐藏状态,我们有各种softmax分类器,用于在适用节点上做出不同的转换决策,如下所示:

1.对于只有一个叶子节点的节点,元控制器从{add,concatenation,none}中选择合并方案。当选择添加或连接时,元控制器进一步选择分支的数量,然后相应地变换网络,这使得节点现在有多个子节点(图5a)。当选择none时,将不执行任何操作,元控制器将不会在该节点上再次做出此类决策

2.对于作为叶节点的节点,元控制器确定是否扩展该节点,即插入一个新的叶节点作为该节点的子节点,并使用标识映射将其连接,这增加了架构的深度(图5b)。

3.对于标识边缘,元控制器从一组可能的基本操作(第3.2节)中选择一个新边缘(可以是标识)来替换标识边缘(图5c)。此外,每个边只会做出一次决定。

4.实验和结果

我们的实验设置1类似于Zoph et al.(2017)、Zhong et al.(2017)和Liu et al.(2018)。具体而言,我们应用上述建议的方法在CIFAR-10上学习CNN单元(Krizhevsky&Hinton,2009),用于图像分类任务,并将学习到的单元结构传输到ImageNet数据集(Deng等人,2009)。

4.1. 实验细节

CIFAR-10包含50000个训练图像和10000个测试图像,其中我们从训练集中随机抽取5000个图像,以形成架构搜索过程的验证集,与之前的工作类似(Zoph等人,2017;蔡等人,2018年)。我们使用一种广泛用于该数据集的标准数据扩充方案(镜像/移位)(Huang等人,2017b;韩等人,2017年;Cai等人,2018),并使用通道平均值和标准偏差对图像进行预处理。

对于第3.3节所述的元控制器,所有LSTM单元的隐藏状态大小为100,我们使用ADAM优化器(Kingma&Ba,2014)使用强化算法(Williams,1992)对其进行训练。为了减少方差,我们采用了一个基线函数,它是先前奖励的指数移动平均值,衰减为0.95,正如Cai等人(2018年)所做的那样。我们还使用权重为0.01的熵惩罚来确保探索。

在架构(architecture)搜索过程中的每一步,metacontroller都会从基本网络中的一个层开始执行转换操作,从而对树结构单元进行采样。例如,当使用DenseNet作为基本网络时,在变换之后,密集块中的所有3×3卷积层都将替换为采样的树结构单元,而所有其他层保持不变。获得的网络以及从基础网络传输的权重,然后在CIFAR-10上以0.035的初始学习率进行20个历元的训练,然后使用Nesterov动量为0.9的SGD优化器进一步退火余弦学习率衰减(Loshchilov&Hutter,2016),批量大小为64,权重衰减为0.0001。所获得网络的验证精度accv用于计算奖励信号。我们遵循Cai等人(2018)的做法,使用转换后的值,即tan(accv×π/2),作为奖励,因为将准确度从90%提高到91%应该比从60%提高到61%多得多。此外,我们用10个网络结构的小批量更新元控制器。

在架构搜索过程完成后,可以将学习到的单元结构嵌入到具有不同深度和宽度的各种基本网络(例如,resnet、densenet等)中。在这个阶段,我们以0.1的初始学习率训练300个时代的网络,而所有其他设置保持不变。

4.2. CIFAR-10上的网络结构搜索

在我们的实验中,我们使用一个小的DenseNet BC(N=2,L=16,k=48,G=4)2作为学习单元结构的基础网络,该网络在保持验证集上的准确率为93.12%。我们将单元结构的最大深度设置为3,即从根节点到每个叶节点的路径长度不大于3(图6)。对于合并方案为add的节点,分支数从{2,3}中选择,而对于合并方案为串联的节点,分支数设置为2。此外,我们在本实验中使用了非常有限的计算资源(约200 GPU小时<<48,Zoph等人(2017年)共培训了500个网络。

架构(architecture)搜索过程的进度如图7所示,其中还提供了相同条件下的随机搜索结果(黑盒优化的一个非常强大的基线(Bergstra&Bengio,2012))。我们可以发现,RL元控制器设计的网络结构的平均验证精度随着采样网络结构数量的增加而逐渐增加,正如预期的那样,而随机搜索曲线保持波动,这表明,当随机搜索失败时,RL元控制器有效地聚焦于正确的搜索方向。因此,在仅训练500个网络的情况下,RL识别的最佳模型经过20个历次训练后,其验证精度比随机搜索识别的最佳模型高0.16%。

我们选取在本实验中发现的前10个候选单元,并将它们嵌入一个相对较大的基本网络,即DenseNet BC(N=6,k=48,G),其中G从{1,2,4}中选择,以使不同的单元具有与正常的3×3卷积层相似数量的参数(更多细节见补充材料)。在CIFAR-10上经过300个历元的训练后,前2个单元分别达到3.64%的测试误差(TreeCell-A)和3.71%的测试误差(TreeCell-B)。图6给出了TreeCell-A的详细结构,补充材料中提供了TreeCell-B的详细结构。在相同条件下,通过随机搜索得到的最佳单元的测试错误率为3.98%,比TreeCell-a差0.34%。

4.3. 关于CIFAR-10的结果

我们进一步将顶级发现的单元,即TreeCellA和TreeCell-B,嵌入到更大的基础网络中。除了DenseNet之外,为了证明发现的以DenseNet开始的单元是否可以转移到其他类型的网络结构,如Resnet,我们还将单元嵌入到金字塔网络中(Han等人,2017),金字塔网络是Resnet的一种变体。

总结结果如表1所示。当与DenseNet结合使用时,发现最好的树单元(即TreeCell-A)仅使用3.2M的参数即可达到3.64%的测试错误率,这与DenseNet原始论文中的最佳结果(即3.46%)相当,DenseNet BC的参数大得多,为25.6M。此外,随着参数数量增加至13.1M,测试错误率下降至3.35%。我们将改进的参数效率和更好的测试错误率结果归因于通过学习树单元引入的增加的路径拓扑复杂性而提高的表示能力。当与金字塔网结合时,TreeCell-A在只有5.7M参数的情况下达到了3.14%的测试误差,而最佳金字塔网在26.0M参数的情况下达到了3.31%的测试误差,这也表明通过结合金字塔网的学习树单元,显著提高了参数效率。由于单元是使用DenseNet作为起点而不是金字塔网学习的,因此它证明了学习单元可转移到其他类型的网络结构。

我们注意到,有一些强大的正则化技术已经证明能够有效地改善CIFAR-10的性能,例如抖动抖动(Gastaldi,2017)、DropPath(Zoph等人,2017)和剪切(DeVries&Taylor,2017)。在我们的实验中,如Zoph等人(2017年)和Liu等人(2017年)所做的那样,当使用随机丢弃每条路径(即树单元中的边缘)的DropPath并对网络进行600个时代的训练时,TreeCell-A在5.7M的参数下达到2.99%的测试误差。此外,通过Cutout,TreeCell-A在5.7M参数下的测试误差为2.49%,在14.3M参数下的测试误差为2.30%,优于CIFAR-10上所有比较的人工设计和自动设计架构,同时具有更少的参数(表1)。

我们要强调的是,只有500个网络使用约200 GPU小时进行训练,才能获得这些结果,而相比之下,架构搜索方法使用更多的计算资源来获得最佳结果,如Zoph等人(2017年)使用了48000 GPU小时。

4.4. ImageNet上的结果

继Zoph et al.(2017)和Zhong et al.(2017)之后,我们在ImageNet数据集上进一步测试了在CIFAR-10上获得的最佳单元结构,即TreeCell-A和TreeCell-B。由于资源和时间的限制,我们在实验中将重点放在移动设置上,其中输入图像大小为224×224,并且我们训练相对较小的模型,这些模型需要不到600M的乘加运算来对单个图像执行推断。为此,我们将学习到的小区结构与CondenceNet(Huang等人,2017a)相结合,CondenceNet是最近提出的一种针对移动环境的高效网络架构。

结果如表2所示。通过将TreeCell-A嵌入ConclateNet(G1=4,G3=8),其中每个块包括一个学习的1×1组卷积层(G1=4组)和一个标准的3×3组卷积层(G3=8组),我们在588M乘加运算中实现了25.5%的top-1错误和8.0%的top-5错误,它的性能明显优于MobileNet和ShuffleNet,并且在乘法和加法运算数量相似的情况下,也优于Concurenet(G1=G3=4)。同时,我们发现,与TreeCell-a相比,使用ConcurrentNet(G1=4,G3=8)的TreeCell-B达到略好的top-1误差结果,即25.4%。

与NASNet-A相比,我们还通过类似的乘法和运算获得了稍好的结果,尽管他们使用了48000 GPU小时来实现这些结果,而我们只使用了200 GPU小时。通过利用现有成功的人工设计架构,与从头开始探索架构空间相比,我们可以用更少的计算资源轻松实现类似(甚至更好)的结果。

5.结论

在这项工作中,我们提出了路径级网络变换操作,作为对现有函数保持网络变换操作的扩展,以使结构搜索方法不仅能够在神经网络中执行分层结构修改,而且能够执行路径级拓扑修改。基于提出的路径级转换操作,我们进一步探索了一种树状结构的网络结构空间,这是当前多分支网络结构的一个广义版本,它可以在每个CNN单元中嵌入丰富的路径,并带有一个双向树状结构的RL元控制器。当与最先进的人类设计架构(包括DenseNets和金字塔网)相结合时,我们的方法仅使用200 GPU小时就设计出了最佳的单元结构,在CIFAR-10上显示出改进的参数效率和更好的测试精度。并在移动环境下的ImageNet数据集上演示了其可移植性。对于未来的工作,我们希望将所提出的方法与网络压缩操作相结合,以探索考虑了模型大小和乘加操作数量的网络结构空间,并对其他任务(如目标检测)进行实验。

你可能感兴趣的:(ProxylessNAS)