作者:Chris Ying * 1 Aaron Klein * 2 Esteban Real 1 Eric Christiansen 1 Kevin Murphy 1 Frank Hutter
摘要
NAS需要大量的计算开销,论文提出第一个公共NAS搜索的结构数据集:NAS-Bench-101
包含423k个卷积结构,在CIFAR-10数据集上多次对模型训练和评估。
作用:使得可以再毫秒时间内从数据集查找评估模型的质量
代码:https://github.com/google-research/nasbench
基准测试代码脚本:https://github.com/automl/nas_benchmarks
1、介绍
NAS有影响力工作:
Designing neural network architectures using reinforcement learning MIT的NAS开山之作
Neural architecture search with reinforcement learning NAS开山之作
Neural architecture search: A survey NAS综述
NAS的SOTA工作:
NAS难复现原因:1、计算开销大 2、不同方法不好比较:搜索空间、训练过程不同
建立NAS-Bench-101数据集:
- 包含423k个样本,映射模型结构到对应的指标(run time and accuracy)
- 遍历了穷尽了整个搜索空间,使之可对整个搜索空间做复杂分析
开源代码 https://github.com/google-research/nasbench 包含数据、搜索空间、训练代码
论文贡献如下:
- 提出第一个开源结构NAS数据集NAS-Bench-101
- 介绍了使用数据集去分析搜索空间,揭示内部机理去指导网络设计
- 介绍了使用数据集对各种开源NAS优化算法做benchmarking
2、NASBench数据集
NAS-Bench-101:数据集表格包含CNN结构和对应训练\评估指标
2.1 结构
如图所示,每个CNN结构的外骨架,由stem、stack、downsample组成,每个stack中有3个Cell单元
网络结构的变化,由Cell单元变化产生
Cell单元:由包含V个顶点(其中两个为IN-OUT顶点)的所有可能有向非循环图(DAGs)组成,每个顶点包含L种可能的ops,L=3。
ops集合包含(3x3 conv; 1x1 conv; 3x3 max-pool操作);V <= 7;最大边数<=9;
所有卷积使用了BN+ReLU
2.2 Cell编码
编码方式:基于7个顶点的无向循环图,每个顶点有3种可能的操作
|
In |
1 |
2 |
3 |
4 |
5 |
Out |
In |
|
1/0 |
1/0 |
1/0 |
1/0 |
1/0 |
1/0 |
1 |
|
|
1/0 |
1/0 |
1/0 |
1/0 |
1/0 |
2 |
|
|
|
1/0 |
1/0 |
1/0 |
1/0 |
3 |
|
|
|
|
1/0 |
1/0 |
1/0 |
4 |
|
|
|
|
|
1/0 |
1/0 |
5 |
|
|
|
|
|
|
1/0 |
Out |
|
|
|
|
|
|
|
如图所示,1/0表示图中的顶点是否连通,总计有 种可能连通方式;除去IN-OUT顶点,每个顶点有3种可能,总共有种可能的ops组合。
综上,有 种可能Cell结构
除去无效和重复的,有423K个不同的结构图
2.4 训练
设计了一个对所有数据集模型适用的开源单一通用的训练流程
超参数设置:使用单一固定的超参数集,选对不同结构都鲁棒的超参,依据对50个随机采样机构的平均精度来选择
实现细节:
数据集:CIFAR-10(40k训练/10k验证/10k测试),标准数据扩充技术(参考ResNet)
优化器:RMSProp 损失函数:Cross-entropy loss
代码:https://github.com/google-research/nasbench
每个模型在4 种Epochs下各重复训练/评估3次
2.5 度量指标Metric
结构A,在不同E_stop下,不同初始化训练3次,得到如下映射关系数据集
(A, E_stop,trial#) -à (训练acc, 验证acc, 测试acc, 训练时间, 模型参数数量)
2.6 基准测试方法Benchmarking
NAS-Bench-101数据集的其中一个目的:促进NAS算法的基准测试
表示在整个数据集上具有最高平均测试精度的模型
在搜索过程中,根据验证集精度排序记录搜索算法发现的最好的结构
计算中间regret:
Regret作为每次搜索的分数
3、NASNet作为数据集
分析整个NASNet数据集来深入了解ops和cell拓扑结构在CNN网络中性能
3.1 数据集统计信息
如图左,大部分结构训练精度收敛至100%,验证/测试精度达到90%
如图右,相同结构,由于训练\测试的有一定的噪声,更长的训练epochs有更低的噪声
最好的结构测试精度达到94.32%,ResNet-like:93.12%,Inception-like:92.95%
研究了参数数目、训练时间、验证集精度之间的关系
如图左,显示了三者呈正相关;但参数数目和训练时间不是唯一决定因素
如图右,显示了参数和训练时间都更少的resnet和inception仍达到了同样高精度
3.2 结构设计
替换Cell中的ops,不同操作,绝对验证精度对比和相对训练时间对比
左图,把3x3卷积替代为1x1卷积或3x3 max-pool,验证精度下降1.16%和1.99%
右图,把3x3卷积替代为1x1卷积或3x3 max-pool,训练时间下降14.11%和9.84%
3.3 位置
位置特性:结构接近有相似的性能。
接近度:edit-distance(编辑距离):从一个结构转向另一个结构所需最少的变化数目
衡量位置的参数,Random-walk autocorrelation(RWA):defined as the autocorrelation of the accuracies of points visited as we perform a long walk of random changes through the space
参考:https://stats.stackexchange.com/questions/181167/what-is-the-autocorrelation-for-a-random-walk
如左图,RWA在小距离时显示了高相关性,超过6时,相关性变得不可区分
FDC(fitness-distance correlation):测量邻近的locality
4、作为基准的NASBench
4.1 比较NAS算法
通过使用数据集对比其他Alg,建立baseline
基准测试了小部分NAS、hyperparameter optimization(HPO)、RS、regularized evolution(RE)、SMAC、TPE、HB、BOHB、
基准测试代码脚本:https://github.com/automl/nas_benchmarks
调研了所有optimizer的元参数 见S2.2
如图左,显示了每类NAS/HPO算法的平均性能,通过500次独立试验
如图右,研究了优化器对随机性的鲁棒性
运行每种方法500次,每次10M秒,关于regret的经验累积误差(CDF,empirical cumulative distribution), RE, BOHB, and SMAC显示最鲁棒
4.2 Generalization bootstrap
测试在数据集上结果的泛化能力,需要在更大数据集上运行基准测试算法
由于计算限制,不能在更大空间做大量NAS试验
在NAS-Bench-Mini数据集上试验(NAS-Bench-101的子集),包括在搜索空间内所有的Cell,仅用<=6个顶点(64.5k unique cells)。
如图,可以看到在NASBench-Mini和NASBench-101不同大小空间上,相同算法精度比较是一致的都是 RS<NRE<RE
5、讨论
5.1 联系超参优化(hyperparameter optimization )
NAS:目标去发现好的神经网络结构
HPO:目标针对给定结构,寻找最优训练超参数集
f 是性能度量指标,如验证精度
NAS问题为在最优参数下的最优结构
实际上,寻找所有结构的最优超参数 H_*,计算上是棘手的,所以用 近似H_+
H_+:通过在小的结构子集上S(随机采样50个结构),选择取得最大平均精度的超参数集
用 来近似求解近似最优结构
并给出了如上近似结构的证明
如图,两个函数的秩高度相关,Spearman rank correlation = 0.9155
总结
提出了NAS-Bench-101,一个神经结构搜索的表格基准,保留了初始NAS优化问题
使得可以快速比较各种算法,而不用巨大地计算开销
利用数据集,可以对卷积神经结构做穷尽地评估和分析
来源:https://www.cnblogs.com/yzjfree/p/12033840.html