PC-DARTS:用于内存高效架构搜索的部分通道连接
论文链接:https://arxiv.org/abs/1907.05737
项目链接:https://github.com/yuhuixu1993/PC-DARTS
ABSTRACT
可微分体系结构搜索(DARTS)在寻找有效的网络体系结构方面提供了一种快速的解决方案,但在联合训练超网络和搜索最优体系结构时存在较大的内存和计算开销。在本文中,我们提出了一种新颖的方法,即部分连接的DARTS,通过对超网络的一小部分采样来减少探索网络空间时的冗余,从而在不影响性能的情况下执行更有效的搜索。特别是,我们在通道的子集中执行操作搜索,而在快捷方式中绕过保留部分。这种策略可能会由于采样不同的通道而导致超网络边缘选择不一致。我们使用边缘归一化来缓解它,它增加了一组新的边缘水平参数来减少搜索中的不确定性。由于降低了内存成本,PC-DARTS可以以更大的批量大小进行训练,因此具有更快的速度和更高的训练稳定性。实验结果证明了该方法的有效性。具体来说,我们在CIFAR10上实现了2.57%的错误率,而架构搜索的GPU-Day仅为0.1,而在ImageNet(在移动设置下)上使用3.8 GPU-Day进行搜索的最先进的Top-1错误率为24.2%。
1 INTRODUCTION
网络结构搜索(Neural architecture search, NAS)作为自动机器学习(AutoML)的一个重要分支,越来越受到学术界和工业界的关注。NAS的关键方法是建立一个大的网络架构空间,开发一种高效的算法来探索这个空间,并在训练数据和约束条件(如网络规模和延迟)的结合下发现最优结构。与早期经常产生大量计算开销的方法不同(Zoph & Le, 2017;Zoph等人,2018;Real等人,2019),最近的单点方法(Pham等人,2018;Liu等人,2019)将搜索成本降低了几个数量级,这将其应用于许多现实世界的问题。特别是,DARTS (Liu et al ., 2019)将操作选择转换为对一组固定操作进行加权。这使得整个框架可与体系结构超参数微分,从而可以以端到端方式有效地完成网络搜索。尽管有复杂的设计,但DARTS仍然受制于庞大而冗余的网络架构空间,因此承受着沉重的内存和计算开销。这可以防止搜索过程使用更大的批处理大小来加速或提高稳定性。先前的工作(Chen et al ., 2019)提出减少搜索空间,这导致可能牺牲所发现架构的最优性的近似。
在本文中,我们提出了一种简单而有效的方法,称为Partially-Connected DARTS (PC-DARTS),以减少内存和计算负担。核心思想是直观的:我们不是将所有通道发送到操作选择块中,而是在每个步骤中随机采样其中的一个子集,而在快捷方式中直接绕过其余的通道。我们假设这个子集上的计算近似于所有通道上的计算。除了大大减少内存和计算成本外,信道采样还带来了另一个好处——操作搜索是正则化的,不容易陷入局部最优。然而,PC-DARTS会产生一个副作用,当在迭代中采样不同的通道子集时,通道连接性的选择将变得不稳定。因此,我们引入边缘归一化,通过显式学习一组额外的边缘选择超参数来稳定网络连通性的搜索。通过在整个训练过程中共享这些超参数,所寻求的网络架构对跨迭代的采样通道不敏感,从而更加稳定。
得益于部分连接策略,我们能够大大增加批大小。具体来说,由于只有1/K个通道被随机采样用于操作选择,因此它将内存负担减少了近K倍。这允许我们在搜索过程中使用大K倍的批处理大小,这不仅加速了网络搜索,而且稳定了过程,特别是对于大型数据集。在基准数据集上的实验证明了PC-DARTS的有效性。具体来说,我们在一个Tesla V100 GPU上,在不到0.1 GPU-Day(约1.5小时)的时间内实现了2.57%的错误率,超过了需要1.0 GPU-Day的DARTS报告的2.76%的结果。此外,PC-DARTS允许在ImageNet上直接搜索(而DARTS由于稳定性低而失败),并在仅3.8 GPU-Day(在8个Tesla V100 GPU上11.5小时)内以24.2%的Top-1误差(在移动设置下)创下了最先进的记录。
2 RELATED WORK
由于深度学习的快速发展,许多计算机视觉问题的性能都得到了显著提高,其中大部分问题的解决都要归功于人工设计的网络架构(Krizhevsky等人,2012;Simonyan & Zisserman, 2015;He et al, 2016;Huang et al ., 2017)。近年来,一个新的研究领域——网络架构搜索(NAS)越来越受到人们的关注。目标是找到自动设计神经架构的方法,以取代传统的手工设计。根据探索大架构空间的启发式,现有的NAS方法大致可以分为三类,即基于进化的方法、基于强化学习的方法和one-shot方法。
第一类架构搜索方法(Liu et al ., 2018b;谢玉乐,2017;Real等人,2017;Elsken等人,2019;Real等人,2019;Miikkulainen等人(2019)采用了进化算法,该算法假设可以应用遗传操作来强制单个架构或家族进化以获得更好的性能。其中,Liu et al . (Liu et al ., 2018b)引入了描述网络架构的分层表示,Xie et al . (Xie & Yuille, 2017)将每个架构分解为“基因”表示。Real等人(Real等人,2019)提出了aging evolution,该进化改进了标准赛选择,并超越了自那时以来最好的人工设计架构。另一条启发法转向强化学习(RL) (Zoph & Le, 2017;Baker等人,2017;Zoph等人,2018;钟等,2018;Liu et al ., 2018a),它训练了一个元控制器来指导搜索过程。Zoph等人(Zoph & Le, 2017)首先提出使用基于控制器的递归神经网络来生成神经网络的超参数。为了降低计算成本,研究人员开始搜索块或单元(Zhong et al ., 2018;Zoph等人,2018),而不是整个网络,因此,设法将总计算成本降低了7倍。其他类型的近似,如贪心搜索(Liu et al ., 2018a),也被用于进一步加速搜索。然而,这些方法的计算成本,无论是基于进化还是基于强化学习,仍然无法接受。
为了在较短的时间内完成体系结构搜索,研究人员考虑降低评估每个搜索候选对象的成本。早期的努力包括在搜索和新生成的网络之间共享权重(Cai等人,2018),后来这些方法被推广到一个更优雅的框架中,称为one-shot架构搜索(Brock等人,2018;Cai et al, 2019;Liu et al ., 2019;Pham等人,2018;Xie et al ., 2019),其中覆盖所有候选操作的过参数化网络或超网络只训练一次,从中可以采样指数级多的子网络。作为典型的例子,SMASH (Brock等;2018)通过HyperNet训练过参数化网络(Ha et al, 2017),和ENAS (Pham et al ., 2018)在子模型之间共享参数,以避免从头开始重新训练每个候选模型。
本文基于DARTS (Liu et al ., 2018b),引入了一个可微分的架构搜索框架,从而将搜索和评估阶段结合为一个阶段。在搜索阶段对超网络进行优化,然后保留最强的子网络,然后重新训练。尽管它很简单,但研究人员发现了它的一些缺点,比如不稳定性(Li & Talwalkar, 2019;Sciuto等人,2019),这导致了一些超越DARTS的改进方法(Cai等人,2019;Chen et al ., 2019;Mei et al ., 2020)。特别是ProxylessNAS (Cai et al ., 2019)是第一个直接在ImageNet上搜索的方法,P-DARTS(Chen et al ., 2019)设计了渐进式搜索阶段,以弥合超网络和子网络之间的深度差距。
3 THE PROPOSED APPROACH
3.1 初步:可微架构搜索(DARTS)
我们首先回顾了基线DARTS(Liu et al ., 2019),并定义了稍后讨论的符号。从数学上讲,DARTS将搜索到的网络分解为若干个单元。每个单元表示为一个有 N N N个节点的有向无环图(DAG),其中每个节点定义一个网络层。有一个预定义的操作空间,用 O \mathcal{O} O表示,其中每个元素 o ( ⋅ ) o(·) o(⋅)是在网络层执行的固定操作(如Identity连接、3x3卷积)。在单元中,目标是从0中选择一个操作来连接每对节点。设一对节点为 ( i , j ) (i,j) (i,j),其中 0 ⩽ i < j ⩽ N − 1 0\leqslant i<j\leqslant N-1 0⩽i<j⩽N−1,DARTS的核心思想是将从i到j传播的信息表述为对 ∣ O ∣ |\mathcal{O}| ∣O∣个操作的加权和,即: f i , j ( x i ) = ∑ o ∈ O exp { α i , j o } ∑ α ′ ∈ O exp { α i , i o ′ } ⋅ o ( x i ~ ) f_{i,j}(\mathbf{x}_{i})=\sum_{o\in\mathcal{O}}\frac{\exp\left\{\alpha_{i,j}^{o}\right\}}{\sum_{\alpha^{\prime}\in\mathcal{O}}\exp\left\{\alpha_{i,i}^{o^{\prime}}\right\}}\cdot o(\mathbf{x}_{\tilde{i}}) fi,j(xi)=∑o∈O∑α′∈Oexp{αi,io′}exp{αi,jo}⋅o(xi~),其中 x i x_i xi为第 i i i个节点的输出, α i , j o α^o_{i,j} αi,jo为加权操作 o ( x i ) o(x_i) o(xi)的超参数。节点的输出是所有输入流的总和,即 x j = ∑ i < j f i , j ( x i ) \mathbf{x}_{j}=\sum_{i<j}f_{i,j}(\mathbf{x}_{i}) xj=∑i<jfi,j(xi),整个单元的输出由节点 x 2 − x n − 1 x_2 - x_{n−1} x2−xn−1的输出串接而成,即 concat ( x 2 , x 3 , … , x N − 1 ) \operatorname{concat}(\mathbf{x}_{2},\mathbf{x}_{3},\ldots,\mathbf{x}_{N-1}) concat(x2,x3,…,xN−1)。注意,前两个节点 x 0 x_0 x0和 x 1 x_1 x1是单元格的输入节点,它们在体系结构搜索期间是固定的。
这种设计使得整个框架对层权值和超参数 α i , j o α^o_{i,j} αi,jo都是可微分的,因此可以以端到端的方式执行架构搜索。搜索过程完成后,在每条边上 ( i , j ) (i,j) (i,j),保留 α i , j o α^o_{i,j} αi,jo值最大的操作 o o o,并且每个节点J连接到保留 α i , j o α^o_{i,j} αi,jo值最大的两个前例 i < j i < j i<j。
3.2 部分通道连接
DARTS的一个缺点是内存效率低下。在搜索体系结构的主要部分中, ∣ O ∣ |\mathcal{O}| ∣O∣操作和相应的输出需要存储在每个节点(即每个网络层),导致使用 ∣ O ∣ |\mathcal{O}| ∣O∣×内存。为了适应GPU,在搜索过程中必须减少批量大小,这不可避免地会降低搜索速度,并可能降低搜索的稳定性和准确性。
内存效率的另一种解决方案是部分通道连接,如图1所示。以 x i x_i xi到 x j x_j xj的连接为例。这涉及到定义一个通道采样掩码 S i , j S_{i,j} Si,j,它将1分配给选定的通道,将0分配给被屏蔽的通道。选择的通道被发送到 ∣ O ∣ |\mathcal{O}| ∣O∣操作的混合计算中,而被屏蔽的通道则绕过这些操作,即直接复制到输出中。
f i , j P C ( x i ; S i , j ) = ∑ o ∈ O exp { α i , j o } ∑ o ′ ∈ O exp { α i , j o ′ } ⋅ o ( S i , j ∗ x i ) + ( 1 − S i , j ) ∗ x i . (1) f_{i,j}^{\mathrm{PC}}(\mathbf{x}_i;\mathbf{S}_{i,j})=\sum_{o\in\mathcal{O}}\frac{\exp\left\{\alpha_{i,j}^o\right\}}{\sum_{o'\in\mathcal{O}}\exp\left\{\alpha_{i,j}^{o'}\right\}}\cdot o(\mathbf{S}_{i,j}*\mathbf{x}_i)+(1-\mathbf{S}_{i,j})*\mathbf{x}_i. \tag{1} fi,jPC(xi;Si,j)=o∈O∑∑o′∈Oexp{αi,jo′}exp{αi,jo}⋅o(Si,j∗xi)+(1−Si,j)∗xi.(1)
其中, S i , j ∗ x i S_{i,j}∗x_i Si,j∗xi和 ( 1 − S i , j ) ∗ x i (1−S_{i,j})∗x_i (1−Si,j)∗xi分别表示选择的和被屏蔽的通道。在实践中,我们将K作为超参数,将所选通道的比例设置为1/K。通过改变K,我们可以在体系结构搜索精度(较小的K)和效率(较大的K)之间进行权衡,以取得平衡(参见4.4.1节了解更多细节)。
部分通道连接带来的一个直接好处是,计算 f i , j P C ( x i ; S i , j ) f_{i,j}^{\mathrm{PC}}(\mathbf{x}_i;\mathbf{S}_{i,j}) fi,jPC(xi;Si,j)减K倍。这允许我们使用更大的批处理大小进行架构搜索。这样做有双重好处。首先,在架构搜索过程中,计算成本可降低K倍。此外,更大的批大小意味着在每次迭代中采样更多训练数据的可能性。这对于架构搜索的稳定性尤为重要。在大多数情况下,一种操作相对于另一种操作的优势并不显著,除非在一个小批量中涉及更多的训练数据,以减少更新网络权重和体系结构参数的不确定性。
3.3 边缘归一化
让我们看看采样通道对神经结构搜索的影响。有积极和消极的影响。从好的方面来看,通过为操作混合提供一小部分通道,同时绕过其余部分,我们使其在选择操作时不那么偏倚。换句话说,对于边 ( i , j ) (i,j) (i,j),给定输入 x i x_i xi,使用两组超参数 α i , j o α^o_{i,j} αi,jo和 α i , j ′ o α^{'o}_{i,j} αi,j′o的差异大大减小,因为只有一小部分(1/K)的输入通道会经过操作混合,而其余的通道保持完整。这使无权操作(例如,跳跃连接, 最大池化等)相对于 o o o中的有权操作(例如,各种卷积)的偏好规范化。在早期阶段,搜索算法通常更倾向于无权操作,因为它们不需要训练权值,因此产生更一致的输出,即 o ( x i ) o(x_i) o(xi)。相反,在权重优化之前,配置了权重的迭代会在迭代中传播不一致的信息。因此,无重量操作通常在开始时积累更大的重量(即 α i , j o α^o_{i,j} αi,jo),这使得负重操作即使在经过良好训练后也很难击败它们。当代理数据集(在其上执行架构搜索)困难时,这种现象尤为明显,这可能会阻止DARTS在ImageNet上执行令人满意的架构搜索。在实验中,我们将证明具有部分通道连接的PC-DARTS在ImageNet上产生更稳定和更优越的性能。
缺点是,在单元格中,每个输出节点 x j x_j xj需要从其前例 { x 0 , x 1 , … , x j − 1 } \{\mathbf{x}_0,\mathbf{x}_1,\ldots,\mathbf{x}_{j-1}\} {x0,x1,…,xj−1}中拾取两个输入节点,由 m a x o α 0 , j o , max o α 1 , j o , … , max o α j − 1 , j o max_o\alpha_{0,j}^o,\max_o\alpha_{1,j}^o,\ldots,\max_o\alpha_{j-1,j}^o maxoα0,jo,maxoα1,jo,…,maxoαj−1,jo,分别遵循原DARTS。然而,这些体系结构参数是通过跨迭代随机采样通道来优化的,因此,随着采样通道随时间的变化,由它们确定的最优连通性可能不稳定。这可能会在所产生的网络架构中引起不希望的波动。为了缓解这个问题,我们引入了对每条边 ( i , j ) (i,j) (i,j)显式地表示,用 β i , j β_{i, j} βi,j表示,则 x j x_j xj的计算为:
x j P C = ∑ i < j exp { β i , j } ∑ i ′ < j exp { β i ′ , j } ⋅ f i , j ( x i ) . (2) \mathbf{x}_{j}^{\mathrm{PC}}=\sum_{i<j}\frac{\exp\left\{\beta_{i,j}\right\}}{\sum_{i'<j}\exp\left\{\beta_{i',j}\right\}}\cdot f_{i,j}(\mathbf{x}_{i}). \tag{2} xjPC=i<j∑∑i′<jexp{βi′,j}exp{βi,j}⋅fi,j(xi).(2)
具体来说,在完成结构搜索后,边 ( i , j ) (i,j) (i,j)由 α i , j o α^o_{i,j} αi,jo和 β i , j β_{i, j} βi,j决定,我们将它们的归一化系数乘在一起,即乘 exp { β i , j } ∑ i ′ < j exp { β i ′ , j } \frac{\exp\{\beta_{i,j}\}}{\sum_{i^{\prime}<j}\exp\left\{\beta_{i^{\prime},j}\right\}} ∑i′<jexp{βi′,j}exp{βi,j}和 exp { α i , j o } ∑ o ′ ∈ O exp { α i , j o ′ } \frac{\exp\left\{\alpha_{i,j}^{o}\right\}}{\sum_{o^{\prime}\in\mathcal{O}}\exp\left\{\alpha_{i,j}^{o^{\prime}}\right\}} ∑o′∈Oexp{αi,jo′}exp{αi,jo}。然后通过查找大的边权重来选择边,就像在DARTS中一样。由于在训练过程中 β i , j β_{i,j} βi,j是共享的,因此学习到的网络架构对跨迭代的采样通道不敏感,使得架构搜索更加稳定。在第4.4.2节中,我们将展示边缘归一化对原始DARTS也是有效的。最后,边缘归一化所需的额外计算开销可以忽略不计。
3.4 讨论及与前期工作的关系
首先,我们的方法有两个主要贡献,即通道采样和边缘归一化。通道采样作为这项工作中的关键技术,尚未在NAS中研究如何减少计算开销(其他正则化方法,如Dropout (Srivastava等人,2014)和DropPath (Larsson等人,2017)在时间和内存上都无法达到与通道采样相同的效率)。它加速和正则化搜索,并在边缘归一化的帮助下,提高搜索稳定性。注意,搜索速度和稳定性对于搜索算法来说都是非常重要的。结合通道采样和边缘归一化,我们在ImageNet上获得了最好的精度(基于DARTS搜索空间),并且在ImageNet上的直接搜索成本(3:8 GPU-days)是已知的最低的。而且,这两个组成部分很容易移植到其他搜索算法中,以提高搜索精度和速度,例如,边缘归一化提高了原始DARTS方法的精度和速度。
其他研究人员也试图减轻dart的大量内存消耗。在之前的研究中,ProxylessNAS (Cai et al, 2019)对多项分布 α i , j o α^o_{i,j} αi,jo进行二值化,每次对两条路径进行采样,显著降低了内存成本,并实现了在ImageNet上的直接搜索。PARSEC (Casale et al, 2019)也提出了一种基于抽样的优化方法来学习概率分布。我们的解决方案,通过保留架构搜索的所有操作,实现了更高的精度,特别是在具有挑战性的数据集,如ImageNet(比ProxylessNAS +0.7%,比PARSEC +1.8%)。另一种提高内存效率的实用方法是progresvedart (Chen等人,2019),它消除了一个运算符子集,以便为更深层次的架构搜索提供足够的内存。相比之下,我们的方法保留了所有的运算符,而是在通道维度上执行子采样。这种策略尤其适用于像ImageNet这样的大规模数据集。
4 EXPERIMENTS
4.1 数据集和实现细节
我们在CIFAR10和ImageNet上进行了实验,这是两个最常用的评估神经结构搜索的数据集。CIFAR10 (Krizhevsky & Hinton, 2009)由60K图像组成,所有图像的空间分辨率均为32 × 32。这些图像均匀分布在10个类中,其中有50K的训练图像和10K的测试图像。ImageNet (Deng et al ., 2009)包含1000个对象类别,以及1:3M的训练图像和50K的验证图像,这些图像都是高分辨率的,并且在所有类别中大致均匀分布。遵循惯例(Zoph等人,2018;Liu et al ., 2019),我们在测试阶段采用移动设置,其中输入图像大小固定为224 × 224,多重添加操作次数不超过600M。
我们遵循DARTS (Liu et al ., 2019)和传统的架构搜索方法,使用单个阶段进行架构搜索,在获得最优架构后,从头开始进行另一个训练过程。在搜索阶段,目标是确定最佳的超参数集,即对于每条边(i;j).为此,将训练集划分为两部分,第一部分用于优化网络参数,例如,卷积权值,第二部分用于优化超参数。整个搜索阶段以端到端的方式完成。为了公平比较,操作空间O保持与约定相同,它包含8个选项,即3×3和5×5可分离卷积,3×3和5×5扩展可分离卷积,3×3 max-pooling, 3×3 average-pooling, skip-connect(又称identity)和zero(又称none)。
我们提出了一个替代的和更有效的实现部分通道连接。对于边 ( i , j ) (i,j) (i,j),我们在每次计算 o ( x i ) o(x_i) o(xi)时不进行通道采样,而是直接选择 x i x_i xi的前1/K个通道进行操作混合。为了补偿,在获得 x j x_j xj后,我们在使用它进行进一步计算之前对其通道进行混合。这与ShuffleNet (Zhang et al ., 2018)中使用的实现相同,它更适合GPU,因此运行速度更快。
4.2 CIFAR10的结果
在搜索场景中,过度参数化网络由8个单元(6个正常单元和2个约简单元)堆叠而成,每个单元由N = 6个节点组成。我们训练网络50次,初始通道数为16个。CIFAR10的50K训练集被分成两个大小相等的子集,其中一个子集用于训练网络权值,另一个子集用于体系结构超参数。
对于CIFAR10,我们设置K =4,即每条边只采样1/4的特征,这样搜索时的批处理大小从64个增加到256个。此外,接下来(Chen et al ., 2019),我们冻结了超参数 { α i , j o } \{α^o_{i,j}\} {αi,jo}和 { β i , j } \{β_{i, j}\} {βi,j},并且只允许在前15个epoch中调整网络参数。这个过程称为预热,是为了减轻参数化操作的缺点。总内存成本低于12GB,因此我们可以在大多数当前GPU上训练它。网络权重通过动量SGD进行优化,初始学习率为0.1(在没有重启的情况下,在余弦调度后退火为零),动量为0.9,权重衰减为3 × 10−4。我们使用Adam优化器(Kingma & Ba, 2015)对 { α i , j o } \{α^o_{i,j}\} {αi,jo}和 { β i , j } \{β_{i, j}\} {βi,j}进行优化,固定学习率为6 × 10−4,动量为(0.5,0.99)和10−3的权重衰减。由于批量大小的增加,整个搜索过程在GTX 1080Ti GPU上只需要3小时,在Tesla V100 GPU上只需要1.5小时,比原来的一阶DARTS快了近4倍。
评估阶段简单地遵循DARTS的评估阶段。该网络由20个单元(18个正常单元和2个约简单元)组成,每种类型的单元共享相同的架构。初始通道数为36。使用整个50K训练集,并且使用128的批量大小从头开始对网络进行600个epoch的训练。我们使用SGD优化器,初始学习率为0.025(在没有重启的情况下,在余弦调度后退火到零),动量为0.9,权重衰减为3 × 10−4,规范梯度裁剪为5。概率为0.3的Drop-path和cutout (DeVries & Taylor, 2017)也用于正则化。我们在图2的左侧显示搜索到的正常单元和约简单元。
表1总结了结果和与最近方法的比较。在仅仅0.1 GPU-Day的时间内,PC-DARTS的错误率达到了2.57%,搜索时间和准确性都大大超过了基准的DARTS。据我们所知,我们的方法是实现错误率低于3%的最快方法。我们的数字在最近的架构搜索结果中名列前茅。ProxylessNAS使用不同的协议实现了2.08%的错误率,并且报告了更长的架构搜索时间。P-DARTS (Chen等人,2019)通过搜索更深层次的架构略微优于我们的方法,我们可以将我们的方法集成到P-DARTS中以加速它并提高其性能(获得一致的精度增益)。
4.3 ImageNet的结果
我们稍微修改了CIFAR10上使用的网络架构以适应ImageNet。超参数化网络从步幅2的三个卷积层开始,将输入图像分辨率从224 × 224降低到28 × 28。8个单元(6个正常单元和2个约简单元)堆叠在此点之外,每个单元由N = 6个节点组成。为了减少搜索时间,我们从ImageNet的1.3M训练集中随机抽取两个子集,分别含有10%和2:5%的图像。前者用于训练网络权值,后者用于更新超参数。
ImageNet比CIFAR10要困难得多。为了保留更多的信息,我们使用1/2的子采样率,这是CIFAR10中使用的两倍。尽管如此,总共训练了50个epoch,并且在前35个epoch期间冻结了架构超参数。对于网络权重,我们使用初始学习率为0.5的动量SGD(在没有重新启动的情况下,在余弦调度后退火为零),动量为0.9,权重衰减为3 × 10−5。对于超参数,我们使用Adam优化器(Kingma & Ba, 2015),其固定学习率为6 × 10−3,动量为(0.5,0.99)和10−3的权重衰减。我们使用8个Tesla V100 GPU进行搜索,总批大小为1;整个搜索过程大约需要11.5个小时。我们在图2的右侧显示了搜索到的正常单元和约简单元。
评估阶段遵循DARTS的评估阶段,同样从三个步长为2的卷积层开始,将输入图像分辨率从224 × 224降低到28 × 28。14个单元(12个正常单元和2个约简单元)在此点之外堆叠,初始通道号为48。该网络从头开始训练250个epoch,批大小为1,024。我们使用SGD优化器,动量为0.9,初始学习率为0.5(线性衰减到零),权重衰减为3 × 10−5。在训练过程中采用了标签平滑和辅助损失tower等增强功能。前5次epoch进行学习率预热。
结果总结于表2。注意,在CIFAR10上搜索的体系结构和ImageNet本身都进行了评估。对于前者,它报告的Top-1/5误差为25.1%/7.8%,明显优于DARTS报告的26.7%/8.7%。考虑到我们的搜索时间要短得多,这令人印象深刻。对于后者,我们实现了24.2%/7.3%的Top-1/5误差,这是迄今为止最知名的性能。相比之下,另一种直接在ImageNet上搜索的方法ProxylessNAS (Cai et al, 2019)几乎使用了两倍的时间来产生24.9%/7.5%,这验证了我们减少内存消耗的策略更高效且有效。
4.4 消融研究
4.4.1 通道比例1/ k的有效性
我们首先评估K,它是控制通道采样率的超参数。请注意,存在一种折衷:增加采样率(即使用较小的K)可以传播更准确的信息,而对较小部分的通道进行采样则会带来更重的正则化,并可能缓解过度拟合。为了研究其影响,我们评估了1/1、1/2、1/4和1/8四种采样率在CIFAR10上产生的性能,并将结果绘制成图3所示的搜索时间和准确率图。可以观察到,就时间和累积而言,1/4的采样率比1/2和1/1产生更好的性能。使用1/8,虽然能够进一步减少搜索时间,但会导致准确性急剧下降。
这些实验不仅证明了结构搜索的准确性和效率之间的权衡,而且揭示了NAS环境下超网络优化的冗余性。更重要的是,这反映了搜索和评估之间的差距,也就是说,一个优化得更好的超网络并不能保证一个更好的搜索架构——换句话说,可微分的NAS方法很容易在超网络上过度拟合。从这个角度来看,信道采样起到了正则化的作用,缩小了搜索和评估之间的差距。
4.4.2 PC-DARTS不同组件的贡献
接下来,我们评估了PC-DARTS的两个组成部分,即部分通道连接和边缘归一化所做的贡献。结果总结在表3中。很明显,即使通道是完全连接的,边缘归一化也会带来正则化的效果。作为一个额外成本很少的组件,它可以自由地应用于涉及边缘选择的广泛方法。此外,边缘归一化与部分通道连接的良好配合提供了进一步的改进。如果没有边缘归一化,我们的方法在网络参数数量和精度方面的稳定性都很低。在CIFAR10上,我们多次运行不带边归一化的搜索,测试误差范围为2.54% ~ 3.01%。另一方面,在边缘归一化的情况下,5次运行的最大差异不超过0.15%。因此,我们证明了我们设计边缘归一化的动机(参见3.3节),也就是说,它可以是稳定架构搜索的独立方法,但它在部分通道连接下工作得特别好,因为后者引入了随机性和稳定性确实有帮助。
4.4.3 方法的稳定性
在这一部分中,我们将从三个不同的角度展示我们的方法的稳定性。结果汇总于表4,详细分析如下。
首先,我们通过进行5次独立搜索来评估不同方法的稳定性。我们用提出的代码和我们的方法重新实现了DARTS-v1和DARTS-v2,并使用相同的超参数,但不同的随机种子(0,1,2,3,4)执行了五个单独的搜索过程。在不同的运行中,DARTS在v1或v2中发现的架构比我们的方法有更高的标准偏差(DARTS-v1:±0.15%,DARTS-v2:±0.21%,PC-DARTS:±0.07%)。
其次,我们研究了搜索算法对超参数(如搜索阶段长度)的鲁棒性。我们尝试了不同的epoch数,从50到125,并观察它如何影响搜索架构的性能。同样,我们发现DARTS-v1和DARTS-v2对这种变化都不那么健壮。
第三,我们进一步扩大搜索空间,允许更多的节点出现在每个单元中——原始的基于DARTS的空间有6个节点,这里我们允许5、6和7个节点。从5到6个节点,三种算法的性能都有所提高,而从6到7个节点,DARTS-v2的精度明显下降,而PC-DARTS基本保持其性能。
作为旁注,所有这些算法都无法在扩大的搜索空间中获得准确性,因为CIFAR10相对简单,并且搜索架构的性能似乎已经饱和。
通过以上所有的实验,我们可以得出结论,PC-DARTS在不同的评估场景下确实比DARTS更健壮。这在很大程度上归功于PC-DARTS引入的正则化机制,该机制(i)迫使其适应动态架构,(ii)避免了由none操作符带来的搜索后的大修剪间隙。
4.5 转到目标检测
为了进一步验证PC-DARTS发现的架构的性能,我们将其用作目标检测的backbone。我们将在ImageNet上找到的架构(如图2所示)插入到一个名为Single-Shot Detectors (SSD)的流行目标检测框架中(Liu et al ., 2016)。我们在MS-COCO (Lin et al ., 2014)训练数据集上训练整个模型,该数据集是通过标准pipeline获得的,该pipeline从val集中排除5K图像,将其余数据合并到80K训练集中,并在test-dev 2015集中对其进行评估。
结果总结于表5。SSD、YOLO和MobileNets的结果来自(Tan et al ., 2019)。通过PC-DARTS搜索主干,我们只需要1.20 B的FLOPs就可以实现28.9%的AP,比SSD300高5.7%(但FLOPs减少了29倍),比SSD512高2.1%(但FLOPs减少了83倍)。与“Lite”版本的SSD相比,我们的结果在AP方面具有显著优势,比最强大的SSD (SSDLiteV3)高出6.9%的AP。这些结果表明,PC-DARTS在图像分类方面的优势可以很好地转移到更具挑战性的目标检测中,我们相信这些架构将有利于更多的应用场景。
5 CONCLUSIONS
本文提出了一种简单有效的局部连通可微体系结构搜索(PC-DARTS)方法。其核心思想是随机抽取一定比例的通道进行操作搜索,这样框架的内存效率更高,因此可以使用更大的批处理大小来获得更高的稳定性。边缘归一化对搜索稳定性做出了额外的贡献,这是一个轻量级模块,几乎不需要额外的计算。我们的方法可以在CIFAR10上的0.1 GPU-Day内完成完整的搜索,或者在ImageNet上的3.8 GPU-Day内完成完整的搜索,并报告最先进的分类精度,特别是在ImageNet上。
这项研究提供了两个重要的信息,对未来的研究很重要。首先,与传统的神经网络训练相比,可微分架构搜索似乎遭受了更大的不稳定性,因此它可以在很大程度上受益于(i)正则化和(ii)更大的批大小。这项工作显示了将这两个因素合并到单个pipeline中的有效方法,但我们相信存在其他(可能更重要的)解决方案用于此目的。其次,我们的工作进一步揭示了NAS中超网络优化的冗余性,实验揭示了改进超网络优化与寻找更好的架构之间存在差距,而正则化在缩小这一差距方面发挥了有效的作用。我们相信这些见解可以启发该领域的研究人员,我们也将沿着这条道路设计稳定而高效的可微架构搜索算法。