同济和华为诺亚提出:渐进式可微网络结构搜索,显著提升可微式搜索的性能和稳定性,已开源
Progressive Differentiable ArchitectureSearch: Bridging the Depth Gap between Search and Evaluation
论文:https://arxiv.org/abs/1904.12760
github:https://github.com/chenxin061/pdarts
1. 引言
最近,可微分的网络结构搜索方法[1]取得了很大的进步,极大地降低了搜索开销。然而,由这些方法搜索得到的网络结构在测试和转移到其他的数据集时,往往得到相对较低的准确率。这是因为搜索和测试情景下的网络深度存在较大的差异。传统的可微分网络结构搜索方法由于需要将搜索空间中的候选操作都放到搜索网络当中,受限于显存,只能搭建较浅的搜索网络。而在较浅的搜索网络上搜索得到的网络结构往往并不完全适用于较深的测试网络。本文提出一种有效的方法使得搜索网络的深度可以随着搜索过程的进行逐渐地增加,以最终缩小或消除搜索网络与测试网络的深度差异。这带来了两个问题,更高的搜索开销和更低的搜索稳定性。文章提出搜索空间近似和搜索空间正则来分别解决这两个问题。方法概览如图1所示。该方法在单个P100 GPU上只需要大约7个小时就可以搜索得到一个结构,在搜索开销和网络结构的测试准确率上全面超越现有可微分网络结构搜索方法,达到领先水平。
图1
2. 方法介绍
2.1 DARTS
文章的方法采用DARTS作为baseline框架。作者的目标是搜索cell的结构并用其来搭建测试网络。其中,cell被定义为一个拥有N个节点的有向无环图(Directed Acyclic Graph, DAG),每一个节点是网络中的一个层。节点之间由softmax加权的操作连接,各操作最终相加汇入目标节点。cell的输出节点由中间节点按channel方向连接而成。
2.2 渐进地增加搜索网络深度
在DARTS中,网络结构搜索是在一个拥有8个 cell 的搜索网络上进行的,然而却是在一个拥有20个cell 的网络上测试的,在搜索网络和测试网络之间有一个很大的深度差异。然而,不同深度的网络之间存在较大的性能差异,使用较浅的网络搜索到的结构并不一定是测试网络所需要的。作者使用DARTS进行了多次搜索,结果显示搜索到的网络结构倾向于保留较浅的连接,而不是较深的。这是因为较浅的网络通常会在搜索过程中快速地收敛,然而这却和常识 --较深的网络往往拥有更好的性能-- 相悖。因此,文章提出渐进地增加搜索网络的深度来解决深度差异的问题。采用渐进增加搜索网络深度的策略是因为可以用这种方式逐渐地缩小搜索空间,也就是候选操作的种类,从而保持显存消耗在一个合理的水平。
这样做会带来两个方面的困难,第一是随着深度的增加,显存开销和搜索时间都将成为潜在问题。在DARTS中,显存是和搜索网络的深度成正比关系的,更深的搜索网络意味着更高的显存和时间消耗。最直接的做法是降低每个操作的channel数,事实上DARTS也这样做了,但是最终的性能略差于原始方案。文章提出搜索空间近似,根据每个阶段学习到的网络结构参数渐进地减少候选操作的种类,从而降低显存和时间消耗。
另一方面,实验表明在较深的搜索网络中,可微分的方法倾向于选择skip- connect操作,因为其通常处在梯度下降的最速路径上,能够加速前向/反向传播。然而,skip- connect操作是无可训练参数的,数量过多会导致网络的表达能力降低。对此,作者提出搜索空间正则,在skip- connect操作添加操作层面的Dropout来防止其过拟合到skip-connect上,同时限制最终结构中的skip- connect操作数量来进一步提高稳定性。
2.2.1 搜索空间近似
图2是搜索空间近似的示意图。搜索过程被切分成了多个阶段,包括初始阶段,一个或多个中间阶段以及一个最终阶段。在每个阶段 Sk ,搜索网络包含 Lk 个cell,cell中每条边包括 Ok 个操作。
在初始阶段,搜索网络相对较浅,但是cell中每条边上的候选操作最多(所有操作)。在阶段 Sk -1中,根据学习到的网络结构参数(权值)来排序并筛选出权值(重要性)较高的 Ok 个操作,并由此搭建一个拥有 Lk 个cell的搜索网络用于下一阶段的搜索,其中, Lk > Lk-1 , Ok < Ok-1 . 通过搜索空间的估计,减小了搜索空间,这部分腾出来的显存就可以用来搭建更深的搜索网络。通过这样的方式,可以在保持显存消耗在阈值范围内的情况下,在更深的搜索网络上进行网络结构搜索。文中随机统计了几次搜索过程中各阶段的显存使用量,发现显存均能稳定保持在阈值之下,如Table 3所示。值得注意的是,如果使用显存稍小的GPU如1080ti,需适当减小batch size。作者也进行了相关测试,在使用P100 GPU且显存限制为11G的情况下,搜索速度稍微变慢,搜索时间约为9小时。
这个过程可以渐进而持续地增加搜索网络的深度,直到足够接近测试网络深度。最终阶段的搜索(参数学习)结束之后,就可以根据学习到的网络结构参数生成最终的网络结构。和DARTS一样,文章也在每个中间节点保留两个权值最高的非空操作,并且规定每一条边至多保留一种操作。
图2
2.2.2 搜索空间正则
在第 Sk 阶段,由于在上个阶段结尾一些操作从搜索空间中被删去,因此需要从头开始训练网络参数和结构参数。但是训练一个更深的网络往往比训练一个较浅的网络更难。实验结果表明在本文采用的框架下,信息往往倾向于通过skip- connect流动,而不是卷积。这是因为skip- connect通常处在梯度下降最速的路径上,尤其是在小而简单的数据集上,如文章采用的代理数据集CIFAR10. 在这种情况下,最终搜索得到的结构往往包含大量的skip-connect操作,可训练参数较少,从而使得性能下降。这从本质上来说是一种"过拟合"。
作者采用搜索空间正则来解决这个问题。一方面,作者在skip-connect操作后添加操作层面的Dropout来部分切断skip- connect的连接,迫使算法去探索其他的操作。然而,持续地阻断这些路径的话会导致在最终生成结构的时候skip- connect操作仍然受到抑制,可能会影响最终性能。因此,作者在训练的过程中逐渐地衰减Dropout的概率,在训练初期施加较强的Dropout,在训练后期将其衰减到很轻微的程度,使其不影响最终的网络结构参数的学习。
另一方面,尽管使用了操作层面的Dropout,作者依然观察到了skip-connect操作对实验性能的强烈影响。具体来说,搜索得到的结构中包含的skip- connect数量不一,导致了在测试的时候性能的波动。作者同时观察到测试时的识别准确率与搜索到的结构中的skip- connect操作数量与最终性能高度相关。因此,作者提出第二个搜索空间正则方法,即在最终生成的网络结构中,保留固定数量的skip- connect操作。具体的,作者根据最终阶段的结构参数,只保留权值最大的M个skip-connect操作,这一正则方法保证了搜索过程的稳定性。在本文中, M=2 .
需要强调的是,第二种搜索空间正则是建立在第一种搜索空间正则的基础上的。在没有执行第一种正则的情况下,即使执行第二种正则,算法依旧会生成低质量的网络结构。
3. 实验结果
3.1 网络结构搜索与测试
文章在CIFAR10和CIFAR100上做了网络结构搜索,并将搜索到的网络结构transfer到ImageNet数据集,在Mobile Setting下进行了性能测试,实验结果如Table 1(CIFAR10/100)和Table 2(ImageNet)所示。
该算法使用单个P100 GPU仅需要约7小时搜索得到一个结构,相比DARTS在速度上有不小的提升,并且比以效率著称的ENAS[3]更快。在CIFAR10上,作者使用3.4M参数实现了2.50%的测试错误率,超越了DARTS的结果,同时也超过了同等参数量下最好的AmoebaNet-B[2],后者耗费了3150 GPU- days实现了2.55%的测试错误率。值得一提的是,该方法同时也可以在CIFAR100上进行网络结构搜索,在没有进行大面积调参的情况下,以3.6M参数实现了15.92%的测试错误率。作者同样尝试了使用DARTS在CIFAR100上进行网络结构搜索,然而搜索得到的结构里包含大量的skip- connect操作,测试性能不及其由CIFAR10上搜索到的结构transfer的性能。
在ImageNet的实验中,文章实现了略微低于AmoebaNet-C的Top-1测试错误率(24.4% vs. 24.3%)和超过其他现有方法的Top-5测试错误率,在性能和搜索时间上全面超越了DARTS。值得一提的是,该方法在transfer的性能上超越了专门为ImageNet设计搜索空间并在ImageNet进行搜索和测试的两个方法 --ProxylessNAS[4]和MnasNet-92[5].
3.2 诊断试验
同时,作者也进行了一些诊断性实验,其结果验证了文章提出的方案的有效性。首先作者测试了搜索过程中的不同阶段产生的网络结构的性能。为了对比,作者加入了DARTS代码中release的结构 (DARTSV2, 使用8个cell的搜索网络)。如图3所示,其中第一、二和三阶段的搜索网络中分别包含5、11和17个cell。可以看出,第一阶段搜索得到的结构中都是从输入节点连接到中间节点的浅连接,而第二阶段和DARTSV2中则开始出现一些中间节点之间的深连接,在第三阶段中,出现了多个中间节点之间的连接,并且连接层次较其他三个也更深。对这几个网络结构的测试结果表明最终阶段(第三阶段)生成的网络结构取得了最佳的性能。
图3
作者也设计实验验证了搜索空间正则的有效性。一方面,作者设计了使用和不使用操作层面Dropout的两组对比实验。使用Dropout的一组,保留2、3和4个skip- connect操作的网络结构在CIFAR10上的测试错误率分别为2.69%、2.84%和2.97%,相比之下,未使用Dropout的一组的测试错误率则分别为2.93%、3.28%和3.51%。
另一方面,作者进行了限制最终生成网络结构中skip- connect数量的对比实验。作者在CIFAR10上进行了3次网络结构搜索,得到的结构中分别包含2、3和4个skip- connect操作,平均测试错误率为2.79±0.16%。在进行限制之后,最终网络的skip- connect操作数量被限制到2个,平均测试错误率为2.65±0.05%。降低的测试错误率和标准差显示搜索过程的稳定性得到了保证。
4. 总结
本文中,作者提出了一个渐进的可微分网络结构搜索方法来连接搜索和测试情景之间的网络深度差异。本方法的核心思想是逐渐地增加搜索网络的深度。为了解决搜索开销过大和搜索过程不稳定的问题,作者设计了两个方法来估计和正则搜索空间。该方法实现了单个P100 GPU上约7小时的快速搜索,并且在代理数据集和目标数据集上均表现出了优异的性能。搜索空间正则方法在保证性能的同时,能够大幅度提高搜索过程的稳定性,有效减小性能波动。
本文的研究表明了可微分网络结构搜索中网络深度的重要性,提出了一种牺牲操作数量的估计方法。期待在有着强大计算资源的未来,深度仍然是探索网络结构空间时的关键因素。
参考文献:
[1] Liu, H., Simonyan, K., & Yang, Y.(2018). Darts: Differentiable architecture search.arXiv preprintarXiv:1806.09055.
[2] Real, E., Aggarwal, A., Huang, Y., &Le, Q. V. (2018). Regularized evolution for image classifier architecturesearch.arXiv preprint arXiv:1802.01548.
[3] Pham, H., Guan, M., Zoph, B., Le, Q.,& Dean, J. (2018, July). Efficient Neural Architecture Search via ParameterSharing. InInternational Conference on Machine Learning(pp. 4092-4101).
[4] Cai, H., Zhu, L., & Han, S. (2018).ProxylessNAS: Direct neural architecture search on target task andhardware.arXiv preprint arXiv:1812.00332.
[5] Tan, M., Chen, B., Pang, R., Vasudevan,V., & Le, Q. V. (2018). Mnasnet: Platform-aware neural architecture searchfor mobile.arXiv preprint arXiv:1807.11626.
论文:https://arxiv.org/abs/1904.12760 github:https://github.com/chenxin061/pdarts
作者暂无likerid, 赞赏暂由本网站代持,当作者有likerid后会全部转账给作者(我们会尽力而为)。Tips: Until now, everytime you want to store your article, we will help you store it in Filecoin network. In the future, you can store it in Filecoin network using your own filecoin.
Support author:
Author's Filecoin address:
Or you can use Likecoin to support author: