在此论文中,来自上海交通大学和华为诺亚方舟实验室的研究人员提出了一种基于部分通道采样的内存高效的可微网络结构搜索方法方法,能够显著提升可微式搜索的速度和性能。
该方法在 CIFAR10 数据集上,只需要 0.1 个 GPU 天(单卡 1.5 小时)就可以完成一次搜索过程,并且达到 2.57% 的测试错误率;即使在 ImageNet 数据集上直接搜索,该方法也只需要 3.8 个 GPU 天(8 卡 11.5 小时),并且在 ImageNet 的移动设定(600M 运算)中达到 24.2%/7.3% 的 top-1/top-5 测试错误率。难得的是,该方法展示出了在不同参数设定下的搜索稳定性,能够很容易地应用于不同的实际场景。
论文地址 https://arxiv.org/abs/1907.05737代码地址 https://github.com/yuhuixu1993/PC-DARTS
1. 摘要
最近,可微分的网络结构搜索方法 [1] 取得了很大的进步,极大地降低了搜索开销。然而,可微分的结构搜索方法需要联合训练一个超网络,因此面临两个棘手的难题:巨大的内存消耗,以及超网络到子网络的迁移稳定性。本文提出一种有效的通道采样方法,即在超网络训练中,只采样部分通道进入核心的多选一运算。通道采样不仅能够缓解超网络的「过拟合」现象,还大大降低了其显存消耗,使得在训练过程中可以通过增加 batch-size 来提升结构搜索的速度和稳定性。
然而,通道采样会导致超网络的选边出现不一致性,从而增加了随机近似给超网络带来的扰动。为了解决这一问题,文章又进一步提出边正则化方法,即利用一组额外的边权参数来减少搜索中的不确定性。经过这两项改进,该方法的搜索速度更快,性能更稳定,精度也更高。
在 CIFAR10 数据集上,利用单块 V100 型 GPU 只需大约 1.5 小时就可以完成整个搜索过程;即使直接在 ImageNet 上搜索,利用 8 块 V100 型 GPU 也只需要 11.5 小时。同时,该方法在网络结构的测试准确率上全面超越现有可微分网络结构搜索方法。
2. 引言和基础
网络结构搜索(NAS)是目前 AutoML 的重要方向,吸引了越来越多工业界和学术界研究者的兴趣。
NAS 的主要方法是构建一个大的结构空间,并且开发一个高效的算法来探索这个空间,并在不同约束(网络大小,延迟,等)下找到较优的网络结构。
和之前强化学习和进化算法这些需要超大规模运算消耗的方法不同,one-shot 网络结构搜索大大降低了搜索消耗,让网络结构搜素更方便地在更多现实问题中应用。DARTS[1] 把操作选择转化为权衡一系列操作的重要性。这使得整个框架中结构参数是可微分的,从而网络结构搜索算法可以以端到端的形式高效地进行。尽管 DARTS 已经是时下最流行的网络结构搜索方法之一,它依然存在显存消耗大和超网络到子网络迁移性质不稳定等问题。本文我们提出一种简单高效的方法,即部分连接 DARTS(Partially-Connected DARTS,PC-DARTS),来降低原始算法中的显存消耗,同时提升其搜索稳定性。我们的核心思想非常直观:不同于之前将超网络中所有的通道都输入待选操作,我们随机采样通道中的一部分进入待选操作,而将剩余部分跳过待选操作,直接与前一部分的输出并联。这样,我们就通过随机采样的方式,得到了超网络的一个近似。这种近似方法,除了大大减少内存和运算的消耗,还能够使得操作搜索的精度得到某种形式的抑制,从而减少了超网络本身被过拟合的风险,提升了子网络的性能。然而,部分通道连接也带来一个负面效果:由于每次超网络训练迭代时采样的不同的通道,超网络连接的选择会变得不稳定。为此,我们提出边正则化方法,通过引入一组额外的边权参数,显式地在边的层面上进行选择,从而使网络搜索过程更加稳定。
图 1:PC-DARTS 整体框架图,其中上半部分为部分通道连接,下半部分为边正则化。
3. 方法
3.1 基线方法:DARTS
文章的方法采用 DARTS 作为基础框架。按照 DARTS 的设定,本文通过搜索 normal cell 和 reduction cell 的结构并用其来搭建测试网络。其中,每个 cell 被定义为一个拥有 N 个节点的有向无环图(Directed Acyclic Graph,DAG),每一个节点都可以被用于下一个节点的输入。节点之间由 softmax 加权的操作连接,以节点 i 与节点 j 之间为例可表示为:
各前导边最终相加,汇入目标节点,即:
而 cell 的输出节点由中间节点按 channel 方向拼接而成。
3.2 部分通道连接(Partial Channel Connections)
DARTS 的一个明显的缺点在于其内存开销大。如果 表示搜索空间的大小,那么训练一个超网络所需要的内存消耗大约是一个正常网络的 倍。为了解决这个问题,本文提出一种通道采样策略,只随机采样部分通道输入待选操作。以超网络中节点 i 输入节点 j 为例,被选择的通道如正常搜索算法一样被输入 个操作的选择过程,而未被选择的通道直接与操作的输出并联作为下一个节点的输入。可表示为:
实际应用中,我们设置采样通道的比例为 1/K。其中,K 是一个超参数,用于调节超网络的近似精度和搜索速度之间的平衡。其作用将在消融实验部分进行分析。
通道采样策略,使得超网络的显存消耗降低为原先的 1/K。因此,在相同的硬件上,我们就能够使用原先 K 倍的 batchsize 来进行网络结构搜索。这带来了两个好处:结构搜索的速度大约变为原先的 K 倍;同时,更大的 batchsize 意味着每次的迭代中可以采样更多的数据,可以提升结构搜索的稳定性。
3.3 边正则化(Edge Normalizetion)
通过 DARTS 搜索最终确定的结构,每个节点只有两个输入。从实际操作上看,在搜索过程结束后,DARTS 在每条边上只保留结构参数最大的操作,而每个节点的输入只保留最大的两个结构参数对应的边。然而,部分通道连接使得每次结构参数优化时,采样的是不同的通道。如果依然通过同样的方式来确定最优边,就可能增大超网络和子网络直接的误差,带来不稳定的搜索结果。为了解决这个问题,我们提出边正则化方法,即引入额外一组边参数β_{i,j} 来显式地加权边:
通过在训练超网络的过程中共享β_{i,j},网络搜索对通道采样操作不再敏感,整个搜索过程也更加稳定。在后面的消融实验中我们看到,即使在原始的 DARTS 上,边正则化也会带来精度和稳定性的增益。同时,边正则化带来的额外运算消耗可以几乎忽略不计。
4. 实验结果
4.1 网络搜索与测试
我们在 CIFAR10 和 ImageNet 上做了网络结构搜索,并将搜索到的网络结构在 ImageNet 数据集的移动设定下进行了验证,实验结果如表 1(CIFAR10)和表 2(ImageNet)所示。
搜索出的结构如图 2 所示。PC-DARTS 在 CIFAR10 上仅仅利用 0.1GPU 天就搜索到 2.57% 测试错误率的结构,在搜索速度和准确率上都远超 DARTS。据我们所知,这是目前错误率低于 3% 的最快搜索算法。P-DARTS[2] 通过更深的结构去搜索达到比我们方法更好的结构,我们的方法也可以与 P-DARTS 进行结合达到更好的性能。
表 1:CIFAR10 数据集上的结果对比。
表 2:ImageNet 数据集上的结果对比。
如表 2 所示,我们将 PC-DARTS 在 CIFAR10 上和 ImageNet 上搜索到的结构在 ImageNet 上进行了验证。在 CIFAR10 上搜索出的结构的 top-1/top-5 错误率为 25.1%/7.8%,显著地低于 DARTS 的 26.7%/8.7%。考虑到搜索时间只有 0.1GPU 天,该性能已经非常可观。另外,在 ImageNet 直接搜索出的结构的 top-1/top-5 错误率降低至 24.2%/7.3%,超过了 P-DARTS[2],也超过了另一个直接在 ImageNet 上直接搜索的方法,ProxylessNAS[3]。
图 2:在 CIFAR10(左)和 ImageNet(右)上搜索到的网络结构(以 normal cell 和 reduction cell 的形式分开展示)。网络中的所有同类型 cell 共享一个结构。
4.2 消融实验
图 3/表 3:消融实验结果示意。左图为不同采样比例 K 对搜索结果的影响,右表为 PC 和 EN 对于原始算法分别产生的有益效果。
首先我们研究了通道采样比例 K 对搜索性能以及速度的影响。这个实验是在 CIFAR10 上进行的。可以看到当综合考虑搜索的时间和性能时,K=4 为最佳。K=8 时,虽然搜索时间更低,但是由于采样的通道数太少,超网络的性能有了显著下降。这个实验不仅展示了 PC-DARTS 允许在搜索时间和精度之间进行权衡,同时也反映了 NAS 中超网络优化具有一定的冗余性。更重要的是,它清晰地展示了 DARTS 算法下,搜索和验证之间的差异:一个优化得更好的超网络不一定会产生最终性能更好的子网络。基于超网络训练的 NAS 方法很容易产生过拟合现象——从这个角度讲,通道采样起了正则化的作用,缩小了搜索与验证之间的差异性。另一种减少差异性的方法,见 [2]。
此外,为了显示部分通道连接与边正则化的有效性,我们进行了消融实验。可以看到,虽然部分通道连接使得搜索速度更快、性能也有所提升,然而边正则化的加入使得整个搜索算法的稳定性更强。同时注意到,即使直接在 DARTS 上加入边正则化,对于其搜索的精度和稳定性也有显著的提升。因此我们判断,边正则化方法能够扩展到更一般的基于超网络优化的搜索算法。
4.3 迁移到目标检测
为了进一步验证搜索出结构的性能,我们将网络迁移到目标检测任务中进行比较。我们选择 SSD[4] 作为基础框架,并将在 ImageNet 上搜索和预训练的网络结构好作为后端网络。我们在 MS-COCO 数据集下测试了一系列模型的性能。在更低的 FLOPs 下,PC-DARTS 比 SSD300 在 AP 指标上高出 5.7%。在类似的 FLOPs 下,PC-DARTS 相较于 MobileNet 系列的性能优势也十分明显。实验证实,PC-DARTS 在图像分类任务上搜索出的结构,能够很好地迁移到更具挑战性的目标检测任务中。这也在一定程度上得益于 PC-DARTS 减轻了超网络的过拟合,从而提升了迁移性能。
表 5:将搜索到的网络结构迁移到 MS-COCO 检测任务上的对比结果。
5. 总结
本文提出部分通道连接的可微分网络结构搜索方法 PC-DARTS,使得可微分搜索更快、更稳定,也在多个数据集上取得了更好的性能。其中的边正则化方法也能够用于其他超网络搜索算法,增加训练的稳定性。经过细致的优化,PC-DARTS 将网络结构搜索的时间开销降低到小时级,特别便于资源受限的研究工作者使用。
然而我们也注意到,可微分网络结构搜索已然存在一些未解难题,如超网络到子网络的近似所带来的巨大量化误差。在今后的研究工作中,我们会在这些方面进行持续探索,进一步提升可微分框架的竞争力。
参考文献
[1] Hanxiao Liu, Karen Simonyan, and Yiming Yang. DARTS: Differentiable architecture search. In ICLR, 2019.[2] Xin Chen, Lingxi Xie, Jun Wu, and Qi Tian. Progressive differentiable architecture search: Bridging the depth gap between search and evaluation. In ICCV, 2019.[3] Han Cai, Ligeng Zhu, and Song Han. ProxylessNAS: Direct neural architecture search on target task and hardware. In ICLR, 2019.[4] Weiwei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy, Scott E. Reed, Cheng-Yang Fu, and Alexander C. Berg. Ssd: Single shot multibox detector. In ECCV, 2016.