EAT-NAS: Elastic Architecture Transfer for Accelerating Large-scale Neural Architecture Search

文章地址

EAT-NAS: Elastic Architecture Transfer for Accelerating Large-scale Neural Architecture Search

NAS(网络结构搜索)将人们从网络设计的苦海中解脱了出来,然而,大多数的工作局限于小数据集上的搜索,然后直接把小数据集上的搜索结果放到大数据集上去,这个是没有效果上的保证的。因此,我们设计了一个弹性结构迁移机制来加速大规模的结构搜索。我们在小数据集(Cifar-10)搜索基本结构,然后再以这个结构作为基本进行迁移,从而加速在大规模数据集上的搜索(ImageNet)。这不仅仅是NAS算法,也是结构迁移的一种机制。

我们的在ImageNet上得到了73.8%的结果,超过了没有初始基本结构的搜索算法。同时在8卡情况下只用了不到5天,明显比目前的state-of-art要快很多。

引言

许多NAS算法需要大量资源,比如在Cifar-10上需要28天与800块GPU,这很明显难以应用,尤其是现实中存在很多大规模数据集,基本没有人考虑直接在这些数据集上进行NAS。

许多算法是先在小数据集上找到一个模型然后手动调整应用到大规模数据集上,不同域之间的差异可能无法保证其效果,比如不同的数据集会有不同最优结构参数。

我们提出的方案同时也是一种网络结构层次上的迁移,先在小网络上学习,然后将结果当作初始值进入第二阶段。我们的NAS算法是基于EA的锦标赛选择方法

相关工作

网络结构搜索

NAS用一个强化学习训练的RNN网络当作决定网络结构的控制器。虽然效果好但是需要非常大的计算量。在此基础上,许多工作去研究如何提高其效率,比如分块优化取代整体网络优化、带预测的阶段性搜索、早停策略或者是参数共享。但是在大规模数据集上还是有很大的计算量。

另外一条路线是用进化算法来生成编码结构。对结构的修改是搜索过程中的变异。虽然这是state-of-art结果,但是计算量也十分地大。还有一些关于DARTS的描述没有看懂。

最近,MnasNet直接在大规模数据集上进行了结构优化,得到了高质量的模型,但是过程中每一个样本模型都需要在ImageNet上训练和评测,而我们的算法就在计算资源消耗上比它要亲民得多。

基于进化算法的NAS

首先,进化算法的基本流程如图:
EA流程
(文字描述暂略)

弹性结构迁移

人们通常通过调节尝试、宽度的方法手动将网络迁移到大规模数据集上,而我们则用EAT算法,即从小规模数据集上的基本结构finetune而来。

基本框架

首先,我们在小规模数据集上搜到一系列表现最好的结构:我们为EA定义一个种群标准 Q Q Q去衡量模型,同时也在搜索域中去寻找合适的结构尺度。而后我们将最好的几个模型重新训练,并将最优的一个当作迁移过程中的基本模型。其次,我们把基本模型当作初始种群放到大规模数据集上进行网络搜索。我们定义了子代生成策略来产生新的结构。得益于基本结构所提供的初始解,我们的算法可以更快地收敛。最后top-k模型在ImageNet上重训并找出最好的那个模型。与MnasNet相同,我们用Pareto-optimal算法来解决精度与模型大小的多目标优化问题。

搜索域

我们的搜索域思想从MobileNetV2而来,将网络划分成若干个block,然后每个block由一些layer,每一个layer则代表一种重复的操作。因此,一个block就可以由以下参数来表示:

  • Conv类型
  • Kernel大小
  • 是否有skip连接
  • 输入输出宽度比(通道比)
  • 网络层数

下采样(如果有)一般在每一个block的第一层进行。这样的话我们的结构就可以编码成 A r c h = { B 1 , B 2 , . . . , B n } Arch=\{B^1,B^2,...,B^n\} Arch={B1,B2,...,Bn}其中每个block包含5个参数。

种群质量

未研究透

结构尺度搜索

许多NAS算法把结构的尺度当作一个固定值,但是我们将每个block的深度与宽度都当作参数来学了。(我还以为会把block的数量来学呢)

为了加速搜索过程,我们在模型上进行了权值共享。Net2Net给出了两种共享方式但是我们改进了这种方法。

首先对于某一层的卷积核参数,我们会按以下方法初始化其中一部分,然后剩下就随机初始化了。
在这里插入图片描述

然后对于深度方面,假设 U [ 1 , 2 , . . . , l u ] U[1,2,...,l_u] U[1,2,...,lu] W [ 1 , 2 , . . . , l w ] W[1,2,...,l_w] W[1,2,...,lw]对应两个两个网络的参数矩阵,则共享权重的方式如下:
在这里插入图片描述

子代结构生成方式

通过给输入的结构给一定的轻微扰动,可以生成一个新的结构。随机选择五种参数中的一种,并随机赋一个搜索域中的新的值来替代原来的那个。这种算法被用来生成初始种群,也被用来进行模型的变异。

实验与结果

两步:CIFAR-10上搜索基本结构,迁移到ImageNet上。我们把原训练集划分为测试与验证两个部分,然后验证集部分用来评测与选择模型。我们采用标准的预处理与扩增方式。

Stage 1: CIFAR-10

种群大小:64,采样大小:16。每一次变异之后 模型会训练一个epoch然后在验证集上评测精度。共进货出约1400个模型然后仅取前8个重新在整个训练集上训练。模型的参数量是我们优化的第二个目标,我们的期望参数量是3M每个模型都有7个block,并在第3个和第5个block中有下采样。初始通道数为32。为了保证不超出存储范围我们给expansion rate加了一个限制 。

在search过程中的训练,batch size=128,lr=0.0256并用SGD
优化算法。momentum=0.9,weight decay=3E-4。第一步训练4卡用了22小时。在评测时,则用96batch训上630epochs,初始lr为0.0125遵从余弦退火重启计划,其余与搜索时一致。其他的trick没看懂,不管。这个训练过程双卡约13小时。

事实是,即使是相同的初值,结果也有很大的差异,我们汇报5次运行的平均值与标准差。96.42%的ACC以及仅有2.04M的参数量,标准差为0.05。

Stage 2: ImageNet

大多数设置没有变(细略),把乘-加数当作副优化目标,下采样出现在第2、3、4、6个block里面。训练与评测具体参数详见论文。

此次搜索大约经过了100次变异,也就是我们只采样了164个模式。而在MnasNet里面则需要大约采样8K个,节省了大量资源。第二阶段在8卡上花了4天时间。

简化测试

  1. EAT的效率。我们让ImageNet也从scratch开始搜索,发现在相同的搜索周期数下明显不如有EAT初始化的搜索。
  2. EAT的效果。我们将CIFAR-10的模型不加修改直接用到ImageNet里面,也有不错的acc。说明了它是可以被迁移的。
  3. 基本模型的影响。

结论与未来工作

用其他的搜索算法,或者是应用到其他的视觉任务上。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值