Progressive Differentiable Architecture SearchBridging the Depth Gap between Search and Evaluation

Progressive Differentiable Architecture Search:Bridging the Depth Gap between Search and Evaluation

Abstract

近年来,可微搜索方法在降低神经结构搜索的计算成本方面取得了重大进展。然而,这些方法在评估搜索的体系结构或将其传输到另一个数据集时通常报告较低的准确性。这可以说是由于搜索和评估场景中的架构深度之间的巨大差距。本文提出了一种有效的算法,使得搜索结构的深度在训练过程中逐渐增长。这就带来了两个问题,即计算量大和搜索稳定性差,我们分别用搜索空间近似和正则化方法来解决这两个问题。通过显著缩短搜索时间(在单个GPU上大约7小时),我们的方法在代理数据集(CIFAR10或CIFAR100)和目标数据集(ImageNet)上都实现了最新的性能。

1. Introduction

受GPU内存大小的限制,DARTS必须在较浅的网络中搜索体系结构,而在较深的网络中进行评估。这带来了一个名为depth gap的问题(参见图1(a)),这意味着搜索阶段会找到一些在浅层架构中运行良好的操作,但是评估阶段实际上更喜欢适合深层架构的其他操作。这种差距阻碍了这些方法在更复杂的视觉识别任务中的应用。

在这里插入图片描述

图1:DART和P-DART之间的区别(我们的方法),前者在浅设置中搜索架构并在深设置中对其进行评估,而后者逐渐增加搜索深度,以弥合搜索和评估之间的深度差距。绿色和蓝色分别表示搜索和评估。

在这项工作中,我们提出了一种新颖而有效的方法来缩小深度差距。如图1(b)所示,我们将搜索过程分为多个阶段,并在每个阶段结束时逐步增加网络深度。当更深层次的架构需要更大的计算开销时,我们提出了搜索空间近似,随着深度的增加,根据经过的搜索过程中的分数减少候选(操作)的数量。

另一个问题,缺乏稳定性,出现在搜索一个深度架构,其中算法可能严重偏向skip-connect,因为它往往导致最快的错误衰减在优化过程中,但实际上,更好的选择往往存在于可学习的操作,如卷积。为了避免这种情况,我们提出了搜索空间正则化,即(i)引入操作级跳出(operation-level Dropout)[25],以减轻训练过程中skip-connect的优势,(ii)控制评估过程中skip-connect的出现。

P-DARTS的有效性在标准视觉设置上得到验证,即在CIFAR10上搜索,并在CIFAR10和ImageNet上进行评估。我们在CIFAR10上用3.4M参数实现了最新的性能(测试误差为2.50%)。当传输到ImageNet时,它的top-1/5 errors分别达到24.4%/7.4%,与移动设置下的最新技术相当。我们进一步证明了搜索空间近似和正则化的好处:前者将CIFAR10上的搜索时间减少到0.3gpu天,据我们所知,这是迄今为止在CIFAR10上实现3%错误率的最快速度,甚至超过了专门研究效率的方法ENAS[21];后者使PDARTS易于应用于其他代理数据集,我们在CIFAR100上给出了一个例子(15.92%的测试误差,3.6M的参数)。

2. Related Work

DARTS[18]引入了一个可微的NAS框架,在性能和效率上都有了显著的提高。继DARTS之后,SNAS[33]提出将架构(architecture)参数限制为one-hot,以解决搜索和评估场景之间优化目标的不一致性。ProxylessNAS[2]采用了可微框架,提出了在目标任务上搜索体系结构,而不是传统的基于代理的框架。

3. Method

3.1. Preliminary: DARTS

在这项工作中,我们利用DARTS[18]作为我们的基线框架。我们的目标是寻找一个健壮的cells并将其应用到L个cells网络中。*:一个单元被定义为N个节点的有向无环图(DAG), { x 0 , x 1 , . . . , x N − 1 } \{x_0,x_1,...,x_{N-1}\} {x0,x1,...,xN1},其中每个节点都是一个网络层,即,执行特定的数学函数。:*我们把操作空间表示为 O \mathcal{O} O,其中每个元素表示一个候选函数o(.)。一条边 E i , j E_{i,j} Ei,j 表示连接节点i和节点j的信息流,它由一组由架构参数 α i , j \alpha^{i,j} αi,j加权的操作组成,其表达式为:

在这里插入图片描述

其中 i < j i<j i<j 这样就可以应用skip-connect。中间节点可以表示为 x j = Σ i < j f i , j ( x i ) x_j=\Sigma_{i<j}f_{i,j}(x_i) xj=Σi<jfi,j(xi),输出节点为 x N − 1 = c o n c a t ( x 2 , x 3 , . . . , x N − 2 ) x_{N-1}=concat(x_2,x_3,...,x_{N-2}) xN1=concat(x2,x3,...,xN2),其中 c o n c a t ( ⋅ ) concat(\cdot) concat() 连接通道维中的所有输入信号。更多的技术细节,请参阅原始DARTS 论文[18]。

3.2. Progressively Increasing the Searching Depth

**在DART中,架构搜索在8个单元的网络上执行,而发现的架构在20个单元的网络上进行评估。然而,浅层网络和深层网络的行为有很大的不同[11,26,8],这意味着我们在搜索过程中喜欢的结构不一定是评估的最佳结构。我们称之为搜索和评估之间的深度差距。为了验证这一点,我们多次执行了dart的搜索过程,发现normal cells of discovered architectures倾向于保持浅的连接而不是深的。这是由于浅层网络在搜索过程中通常具有更快的梯度下降,但这与深层网络往往表现更好的常识相矛盾[24、29、8、10]。**因此,我们建议缩小深度差距,并采取在搜索过程中逐步增加网络深度的策略,以便在搜索结束时,深度与评估中使用的设置足够接近。在这里,我们更喜欢渐进的方式,而不是直接将深度增加到目标级别,因为我们期望在浅层网络中搜索,以减少相对于候选操作的搜索空间,从而降低在深层网络中搜索的风险。我们将在第4.4.1节中验证此渐进策略的有效性。

困难来自两个方面。首先,结构的数量随着深度呈指数增长,这会带来时间和内存方面的问题。特别是在DART中,GPU内存使用量与搜索网络的深度成正比。有限的GPU内存构成了一个主要障碍,最直接的解决方案是减少每次操作中的通道数——DART[18]尝试过,但报告性能略有下降。要解决这个问题,我们提出了一个搜索空间近似方案来逐步减少每个阶段结束时的候选操作数,该方案将前一阶段的操作分数作为选择的标准。搜索空间近似的详细信息见第3.2.1节。

其次,我们发现当搜索更深层次的架构时,可微的方法倾向于跳过连接操作,因为它加速了向前/向后传播,并且常常导致最快的梯度下降方式。然而,由于这种操作是无参数的,因此它学习视觉表示的能力相对较弱。为此,我们提出了另一种称为搜索空间正则化的方案,该方案增加了operation-level Dropout[25],以防止体系结构“过拟合”,并限制保留的skip-connects的数量以进一步稳定。搜索空间正则化的详细信息见第3.2.2节。

3.2.1 Search Space Approximation

在这里插入图片描述
图2:P-DARTS的overall pipeline(最好以颜色查看)。为了简单起见,只显示一个中间阶段,并且只显示正常单元格。搜索网络的深度从初始阶段的5增加到中间和最终阶段的11和17,而候选操作(以不同颜色的连接显示)的数量相应地从5减少到3和2。前一阶段得分最低的被删除(分数显示在每个连接旁边)。我们通过考虑最终得分和可能的附加规则来获得最终架构。

搜索空间近似的思想如图2中的玩具示例所示。搜索过程分为多个阶段,包括初始阶段、一个或几个中间阶段和最后阶段。

对于每个阶段 S k \mathcal S_k Sk,搜索网络由 L k L_k Lk细胞组成,候选操作空间大小是 O k \mathcal O_k Ok ,也就是 ∣ O ( i , j ) k ∣ = O k |\mathcal O^k_{(i,j)}|=O_k O(i,j)k=Ok。根据我们的动机,在初始阶段,搜索网络相对较浅,但是操作空间较大 ( O ( i , j ) 1 ≡ O ) (\mathcal O^1_{(i,j)}\equiv\mathcal O) (O(i,j)1O)。在每个阶段, S k − 1 \mathcal S_{k-1} Sk1,学习架构参数 α k − 1 \alpha_{k-1} αk1,并根据 α k − 1 \alpha_{k-1} αk1对每个连接上的候选操作的分数进行排序。我们通过叠加更多的单元,即 L k > L k − 1 L_k>L_{k-1} Lk>Lk1,来增加搜索结构的深度,同时逼近操作空间。也就是说,新的运算集 O ( i , j ) k \mathcal O^k_{(i,j)} O(i,j)k O ( i , j ) k − 1 \mathcal O^{k-1}_{(i,j)} O(i,j)k1小,或等价于: O k < O k − 1 O_k<O_{k-1} Ok<Ok1。近似值的标准是去掉一部分不太重要的运算,这些运算被定义为在前一阶段 S k − 1 \mathcal S_{k-1} Sk1分配的较低权重的运算。如表3所示,这种策略是内存有效的,这使得我们的方法很容易部署在常规gpu上,例如内存为16GB的gpu。

在这里插入图片描述

这种增加体系结构深度的过程一直持续到与评估中使用的深度足够接近为止。在最后一个搜索阶段之后,我们根据学习到的架构参数aK来确定最终的单元拓扑(图2(c)中的粗体线)。在DARTS之后,我们为每个中间节点保留两个顶部加权的非零操作(对于不同的边,最多1个操作)。

3.2.2 Search Space Regularization

**在每个阶段的开始, S k \mathcal S_k Sk,我们从零开始训练(修改后的)体系结构,即,所有网络权值都已初始化,因为有几个候选项已被放弃。**然而,训练一个更深的网络比训练一个浅的网络更难[26]。在我们的特定设置中,我们观察到信息倾向于通过skip connect而不是卷积或池,这可以说是由于skip connect经常导致快速梯度下降的原因,特别是在代理数据集(CIFAR10或CIFAR100)上,这些数据集相对较小且易于拟合。因此,搜索过程倾向于生成具有许多跳过连接操作的体系结构,这限制了可学习参数的数量,从而在评估阶段产生不满意的性能。这本质上是一种过度拟合。

我们通过搜索空间正则化来解决这个问题,它由两部分组成。首先,我们在每一个skip connect操作后插入操作级Dropout[25],以便部分“切断”通过skipconnect的直接路径,并方便算法探索其他操作,但是,如果我们不断地通过skip connect阻塞路径,算法会通过给它们分配低权重来丢弃它们,即为了解决这一矛盾,在每个搜索阶段的训练过程中,我们都会逐渐降低Dropout rate,因此在学习其他操作的参数时,跳过连接的straightforward path会在开始时被阻塞,然后被同等对待,让算法自己来做决定。

尽管使用了Dropout,我们仍然观察到skipconnect作为一种特殊的操作,在评估阶段对识别精度有着显著的影响。根据经验,我们使用完全相同的搜索设置在CIFAR10上执行了3个搜索过程,但发现在最后阶段之后,正常单元格中保留的跳过连接数从2到4不等。同时,正如我们之前观察到的,在评估阶段的识别性能也与这个数字高度相关。这促使我们设计第二个正则化规则,架构优化,它简单地控制在最终搜索阶段之后保留的skipconnect的数量,使其成为一个常数M。这是通过一个迭代过程完成的,该过程首先使用DARTS描述的标准算法构造单元拓扑。如果跳连的个数不完全为M,则在该单元拓扑中搜索结构权重最大的M个skip-connect,并将其他权重设置为0,然后使用修改的结构参数重新进行单元构造。注意,这可能会导致其他skip-connect到拓扑,因此我们重复此过程,直到达到所需的数目。

我们强调第二个正则化技术必须应用于第一个正则化技术之上,否则,在没有操作级退出的情况下,搜索过程会产生低质量的体系结构权重,在此基础上,即使有固定数量的跳跃连接,我们也无法构建强大的体系结构。

3.3. Relationship to PriorWork

PNAS[16]通过在每个单元内node-by-node搜索操作,逐步探索搜索空间,我们的方法具有相似的搜索方式,但来自不同的动机。此外,我们在单元级执行渐进搜索以扩大体系结构深度,而PNAS在操作级(单元内)执行渐进搜索以减少要评估的体系结构数量。

ProxylessNAS[2]引入了一个可微的NAS方案,在没有代理数据集的情况下直接学习目标任务(和硬件)上的体系结构。它通过对操作应用二进制掩码并强制激活参数化网络中的一条路径并将其加载到GPU中,从而实现了较高的内存效率。与此不同的是,我们的方法通过搜索空间近似来解决内存开销问题,而且ProxylessNAS搜索的是全局拓扑而不是单元拓扑,这就要求目标任务和搜索空间都有很强的优先级,而pdart则不需要这样的优先级。我们的方法比ProxylessNAS快得多(在CIFAR100上是0.3gpu天,而在CIFAR100上是4gpu天)。

4. Experiments

4.1. Datasets

我们在三个流行的图像分类数据集上进行了实验,包括CIFAR10、CIFAR100[12]和ImageNet[4]。架构搜索在CIFAR10和CIFAR100上执行,发现的架构在所有三个数据集上进行评估。

CIFAR10和CIFAR100都有50K/10K的训练/测试RGB图像,固定空间分辨率为32x32。这些图像平均分布在10/100类中。在架构搜索场景中,训练集被平均地分成两个子集,一个子集用于调整网络参数(例如卷积权重),另一个子集用于调整架构(例如,操作权重)。在评估场景中,使用标准的训练/测试分割。

我们使用ILSVRC2012[23]来测试在CIFAR10和CIFAR100上发现的架构的可传输性。ILSVRC2012是ImageNet[4]的一个子集,包含1000个对象类别和1.28M训练和50K验证图像。按照惯例[37,18],我们应用移动设置,其中输入图像大小为224x224,并且multi-add操作的数量被限制为小于600M。

4.2. Architecture Search

4.2.1 Implementation Details

整个搜索过程包括三个阶段。由于我们采用DART作为骨干框架,搜索空间和网络配置与初始阶段(阶段1)的DART相同,只是单元格数设置为5(这是为了加速——我们尝试了原始设置,并获得了类似的结果)。中间期(2期)细胞从5个增加到11个,最后期(3期)细胞从11个增加到17个。同时,在第1、2、3阶段,操作空间的大小分别设置为8、5、3。

对于阶段1、2和3,在CIFAR10上,报告结果的跳过连接的初始退出概率分别设置为0.0、0.4、0.7,对于CIFAR100,分别设置为0.1、0.2、0.3。考虑到分类精度和计算开销之间的折衷,最终发现的单元格被限制为最多保留2个跳过连接操作。这样的设置还保证了与DARTS和其他最新方法的公平比较。在每个阶段中,我们对25个阶段使用96个批量大小的网络进行训练,在前10个阶段中,仅调整网络参数,而在其余15个阶段中学习网络参数和架构参数。使用学习率为 η = 0.0006 \eta=0.0006 η=0.0006 ,权重衰减为0.001,动量为 β = ( 0.5 , 0.999 ) \beta=(0.5,0.999) β=(0.5,0.999)的Adam优化器。根据实验中使用的GPU的内存大小,选择与GPU内存相关的超参数。对于加速,我们利用DARTS的一阶优化方案来学习结构参数。

4.2.2 Search Results

在这里插入图片描述
图3:PDARTS和二阶DARTS(DARTS_V2)的不同搜索阶段发现的正常细胞。搜索网络的深度为5、11和17个单元格,用于P-DART的阶段1、2和3,8个单元格用于DART V2。当搜索网络的深度增加时,会保留更多的深度连接。请注意,阶段1的边缘E(0,1)上的操作是parameter-free skip connect,因此它严格来说不是深连接。

在这里插入图片描述

表1:CIFAR10和CIFAR100上最先进的体系结构的比较。表明此结果是通过在CIFAR100上训练相应的体系结构而获得的。我们运行了作者发布的代码,并对其进行了必要的修改,以适应PyTorch 1.0,一次运行一个订单分别需要0.5 GPU天和2 GPU天。

如图3(c)和图3(d)所示,P-DART在CIFAR10上发现的体系结构往往比DART发现的体系结构保留更多的深层连接。此外,P-DART发现的体系结构中的连接比DART层叠的层次更多,换句话说,单元中有更多的层,使评估网络更进一步更深入,获得更好的分类性能。

值得注意的是,我们的方法还允许在CIFAR100上进行体系结构搜索,而以前的方法大多失败。表1中的评估结果表明,所发现的体系结构优于所转移的体系结构。我们还使用公共可用代码在CIFAR100上使用dart执行架构搜索,但得到的架构充满了skipconnections,这会导致更差的分类性能。

4.3. Architecture Evaluation

4.3.1 Evaluation on CIFAR10 and CIFAR100

从零开始训练一个由20个单元和36个初始通道组成的评估网络,用于600个epoch批次大小为128的阶段。应用长度为16的截断正则化(Cutout regularization)[5]、概率为0.3的下降路径(drop-path)[14]和重量为0.4的辅助塔(auxiliary towers)[29]。使用标准SGD优化器,CIFAR10的重量衰减为0.0003,CIFAR100的重量衰减为0.0005,动量为0.9。初始学习率为0.025,按照余弦规律衰减为0。我们进一步将初始通道的数目从36个增加到64个,以探索我们的搜索架构(称为大设置)的性能限制。

评估结果和与最新方法的比较总结在表1中。如表1所示,**P-DART在CIFAR10上实现了2.50%的测试错误,搜索成本仅为0.3 GPU天。**为了获得同样的性能,AmoebaNet[22]花费了四个数量级的计算资源(0.3gpu天vs 3150gpu天)。我们的P-DART也在很大程度上优于DARTS和SNAS。值得注意的是,P-DARTS发现的体系结构在分类性能和搜索成本方面都优于以前最有效的方法ENAS,而参数较少。

对于DARTS和P-DARTS,我们将在CIFAR10上发现的体系结构传输到CIFAR100。评价结果表明了P-DARTS的优越性。此外,我们还对CIFAR100进行了架构搜索。所发现的体系结构在CIFAR10和CIFAR100上都优于DART。为了进行公平的比较,还对CIFAR100执行了体系结构搜索,以查找具有公开发布代码的DART,但会得到更高的评估测试错误。有趣的是,在CIFAR10上发现的体系结构比在CIFAR100上发现的体系结构的性能好,反之亦然。这种现象为NAS中数据集偏差的存在提供了证据。

4.3.2 Evaluation on ImageNet

ILSVRC 2012[23]用于测试在CIFAR10和CIFAR100上发现的体系结构的可传输性。我们采用与DART相同的网络配置,即一个由14个单元和48个初始通道组成的评估网络。每个网络都是从零开始,**在8个Nvidia Tesla V100 gpu上训练250个批次大小为1024的epoch,我们的PyTorch[20]实现需要3天时间。**使用初始学习率为0.5(每个epoch后线性衰减)、动量为0.9、权值衰减为 3 × 1 0 − 5 3\times10^{-5} 3×105的SGD优化器优化网络参数。

在训练期间,还应用了其他增强功能,包括标签平滑[30]和auxiliary loss tower。由于采用大批量和学习速率,前5个阶段采用学习速率预热[7]。

表2总结了评估结果以及与最新方法的比较。在CIFAR10和CIFAR100上通过P-dart发现的体系结构在分类性能上大大优于dart,这表明了所发现体系结构的传输能力。值得注意的是,P-DARTS的测试误差比MnasNet[31]和ProxylessNAS[2]低,后者的搜索空间是为ImageNet精心设计的。

在这里插入图片描述

4.4. Diagnostic Experiments

4.4.1 Comparison on the Depth of Search Networks

由于P-dart的搜索过程分为多个阶段,因此我们使用相同的规则从每个搜索阶段提取体系结构。对不同阶段的体系结构进行评估,以展示其图像分类能力。图3总结了已发现体系结构(仅显示正常细胞)的拓扑结构及其相应的性能。此外,我们还添加了二阶dart(DARTS V2,搜索网络中的8个单元格)发现的体系结构进行比较。

由第三阶段生成的架构实现了最低的测试误差,验证了方案的有效性。从图3中我们可以观察到,这些结构具有一些共同的edges,例如,阶段1、2和3的edges E ( c k − 2 , 2 ) E_{(c_{k-2},2)} E(ck2,2)和阶段2、3 E ( c k − 1 , 0 ) E_{(c_{k-1},0)} E(ck1,0)和DARTS V2的处的sep_con_3x3。同时,它们之间也存在差异,这可能是影响这些体系结构性能的关键因素。由浅层搜索网络生成的结构更倾向于保持浅层连接,而随着搜索网络的深入,发现的结构开始选择中间节点作为后节点的输入,从而产生具有深层连接的单元。这是因为深度搜索网络很难优化,所以算法必须探索更多的路径才能找到最优,这导致了更复杂和强大的体系结构。

4.4.2 Effectiveness of Search Space Approximation

搜索过程大约需要7小时(0.3天)在一个单独的英伟达特斯拉P100 GPU与16GB内存,以产生最终的架构。我们收集了3次独立运行的架构搜索过程的GPU内存使用数据,如表3所示。内存使用稳定,几乎不出现内存溢出错误,说明了搜索空间近似方案对内存效率的有效性。

在这里插入图片描述

通过实验验证了该方法在提高分类精度方面的有效性。我们只在两个具有相同设置的不同搜索空间上执行搜索过程的最后阶段。第一个搜索空间由前一个搜索阶段近似,另一个从整个搜索空间随机抽样。为了使随机抽样的结果更好,我们用不同的种子重复整个过程3次,选出最佳的一个。随机抽样搜索空间的最优性能为3.43%的测试误差,远低于近似搜索空间的2.58%,说明了搜索空间近似方案的必要性。

4.4.3 Effectiveness of Search Space Regularization

我们进行了实验来验证搜索空间正则化的有效性,即操作级退出和架构优化。首先,通过实验验证了操作级退出方案的效果。测试两组初始Dropout率,即0.0、0.0、0.0(无Dropout)和0.0、0.3、0.6(有Dropout),分别用于第1、2和3阶段。为了消除跳过连接数的潜在影响,对M的多个值进行比较。

对于M=2、3和4的架构,发现无Dropout的测试错误率分别为2.93%、3.28%和3.51%,当搜索有Dropout的架构时,相应的测试错误率分别为2.69%、2.84%和2.97%,显著优于无Dropout的架构。实验结果表明,在结构优化前发现的结构正常单元中的8个操作都是跳过连接,而在结构优化前发现的结构中是4个。通过减少跳跃连接操作,验证了搜索空间正则化在稳定搜索过程中的有效性。

在实验过程中,我们观察到一个架构的分类性能与其中跳过连接操作的数量之间有很强的一致性。我们做了一个定量实验来验证它。架构优化应用于一个搜索过程以生成多个架构,其中保留的跳过连接操作的数量从0到4不等。

现的结构中是4个。通过减少跳跃连接操作,验证了搜索空间正则化在稳定搜索过程中的有效性。

在实验过程中,我们观察到一个架构的分类性能与其中跳过连接操作的数量之间有很强的一致性。我们做了一个定量实验来验证它。架构优化应用于一个搜索过程以生成多个架构,其中保留的跳过连接操作的数量从0到4不等。

除了M=0,即2.78%、2.68%、2.69%、2.84%和2.97%的形式为0-4外,测试误差与跳接次数呈正相关,而参数计数与跳接次数成反比,分别为4.1M、3.7M、3.3M、3.0M和2.7M。原因在于,在一个单元中有固定数量的操作时,消除的无参数跳过连接操作被具有可学习参数(例如卷积)的操作替换,从而产生更复杂和强大的体系结构。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值