EcoNAS:为传统网络搜索方法寻找最佳的代理

前言

非常高兴这篇论文已经被CVPR 2020接收。神经网络结构搜索 (NAS)近期引起了学界和工业界的高度关注。许多网络搜索算法需要耗费大量的算力,比如NASNet, AmoebaNet等工作消耗数千GPU日,而这些算力绝大多数集中在候选网络(candidate)的评估上。同样地,由于算力的限制,候选网络的评估往往需要在代理环境(proxy)下进行,如较短的训练周期数。

虽然每个NAS算法都会用到代理环境,但是代理环境中的参数究竟会对子网络评估产生什么样的影响仍然是未知的。此文章首次系统性地研究了不同代理环境对网络评估的影响。我们发现,在更可靠的代理环境下,可以在极大压缩计算量的同时,搜到更好的模型。同样地,基于对不同代理环境的系统研究,我们提出了一个层次化的搜索方法,EcoNAS,在将进化算法加速400倍的同时,得到了更好的模型。利用我们找到的代理环境,普通实验室两张卡也可以利用进化算法做NAS了。我们的结果也表明,好的代理环境不仅可以用于进化算法,在权重共享算法中也有效。例如我们可以将DARTS搜索提速5倍并得到准确度和原DARTS相匹配的网络结构。

论文链接

论文链接​arxiv.org/abs/2001.01233

评估网络性能的参数

在使用进化/强化学习等方法进行网络结构搜索的时候,把每个候选网络训练到完全收敛来评估性能是不可取的,会消耗大量的计算资源,常规的方法是采用代理环境来减少计算量。代理环境只是使用了使得训练快速的设置,比如减少减少网络层数、减少训练迭代次数。代理环境和和候选网络的网络结构全一样,也即是层间的连接以及对候选操作(op)的选择一致。但是之前没有工作系统性地对代理环境的这些参数进行评估,因此我们总结了几个影响网络评估速度的参数并做了系统性的性能报告:

通道(Channel)数c 输入分辨率r训练Epoch数e数据集采样率s网络层数N

我们对前四个参数进行了一个grid search,选取的参数如下表,为了表示的方便, 三个参数用第一行做下标来表示,如就代表使用36个channel,epoch则直接用实际数字来表示,如表示训练30 epoch。

我们的实验采样了50个网络,把他们训练到完全收敛,用得到的最终精度的排序和在代理环境环境下排序的斯皮尔曼排序相关系数(Spearman ranking coeffficient)来评估他们之间的关联性,相关系数越高则代理环境保持网络排序的能力(也称保序性)越高,对于利用代理环境搜索越有利。可以给出下图:

横坐标是加速的比例,纵坐标是相关系数,可以看出加速比和相关系数并没有一个显著的关系,这说明很快的代理环境也可以收获很好的结果。图中的红点是NASNet和AmoebaNet所使用的代理环境,他们并不是一个优质的代理环境,主要原因是他们减少了网络的深度,减少网络的深度事实上破坏了网络的拓扑结构,对相关性的保持是不利的。

采样率和Epoch数

上图并没有给出更多有insight的信息,但是我们相信这些数据中隐藏着一些规律。我们发现的第一个规律是关于采样率和训练迭代数的,我们平均了100%(完全采样)和50%采样率下的所有结果,并做了两条曲线,可以看到,epoch的增加是有利的但存在边际效应,这符合一般认知;同时,使用一半数据的关联系数上限比使用全部数据低。

通道数和分辨率

接下来是对于通道数和分辨率规律的可视化,我们使用三维柱图来进行展示。图中x-y平面上的箭头和数字代表沿着该方向的上升和下降趋势,1.0表示单调增加,-1.0表示单调减少。分辨率对于相关性的影响不显著,低分辨率不一定带来弱的相关,适度降低分辨率是可以允许的。

然而出乎我们意料的是,通道数降低后相关性竟然有一定的提升,这是反直觉的。我们猜测随着channel的减少,网络的capacity也会降低,这也许与更少的训练迭代相匹配,于是我们尝试分析了过拟合的情况并找到了答案:

横轴是训练精度精度和测试精度的差值,越小意味着越低的过拟合程度,可以看到在同样的分辨率下随着channel的减少,相关性提高,且横轴的差越来越小。

基于此,对于上述五个参数,我们得到了以下的结论:

减少层数虽然被广泛应用,但不是一个好的参数。 不要降低数据集采样率。 越多的训练迭代越好,这符合直觉。 分辨率的变化会带来一些波动,缺乏显著的相关。 通道数减少可能是有帮助的,这是个不平凡的结论。

EcoNAS

基于我们上述的观察,我们使用了使得训练快速但相关系数大的设置,并设计了EcoNAS。EcoNAS采用的设置是,batch size设置为了384,我们验证发现更大的batch size对关联系数的影响不大,同时也可以充分利用gpu的并行能力加速训练,在这个设定下,单模型训练20 epoch只需要单卡数分钟。对于训练迭代,我们设计了一套分层算法,对早期表现不好的备选网络进行早停,从而进一步减少计算资源,具体方法如下图所示。

我们还展示了使用不同的关联系数的结果,可以看到关联系数和搜索效果呈明显的正相关关系:

除此之外,我们发现,可靠代理环境还会带来一个隐藏buff,即搜索后重新训练的模型数目变少了。在EcoNAS中,我们仅重新训练了Top-5的模型就得到了很好的结果,相比许多需要重新训练几百个模型的方法(如NASNet re-train数为250),又进一步降低了消耗。

总结下来一句话,在网络搜索中,找到可靠的代理环境是非常重要的。我们希望我们的研究可以方便研究者进一步探索更多实用的代理环境和网络搜索算法,来提升NAS算法的效率!