为了优化进化算法在神经网络结构搜索时候选网络训练过长的问题,参考ENAS和NSGA-III,论文提出连续进化结构搜索方法(continuous evolution architecture search, CARS),最大化利用学习到的知识,如上一轮进化的结构和参数。首先构造用于参数共享的超网,从超网中产生子网,然后使用None-dominated排序策略来选择不同大小的优秀网络,整体耗时仅需要0.5 GPU day



来源:晓飞的算法工程笔记 公众号

论文: CARS: Continuous Evolution for Efficient Neural Architecture Search

Introduction


  目前神经网络结构搜索的网络性能已经超越了人类设计的网络,搜索方法大致可以分为强化学习、进化算法以及梯度三种,有研究表明进化算法能比强化学习搜索到更好的模型,但其搜索耗时较多,主要在于对个体的训练验证环节费事。可以借鉴ENSA的权重共享策略进行验证加速,但如果直接应用于进化算法,超网会受到较差的搜索结构的影响,因此需要修改目前神经网络搜索算法中用到的进化算法。为了最大化上一次进化过程学习到的知识的价值,论文提出了连续进化结构搜索方法(continuous evolution architecture search, CARS)

  首先初始化一个有大量cells和blocks的超网(supernet),超网通过几个基准操作(交叉、变异等)产生进化算法中的个体(子网),使用Non-dominated 排序策略来选取几个不同大小和准确率的优秀模型,然后训练子网并更新子网对应的超网中的cells,在下一轮的进化过程会继续基于更新后的超网以及non-dominated排序的解集进行。另外,论文提出一个保护机制来避免小模型陷阱问题

Approach


  论文使用基因算法(GA)来进行结构进化,GA能提供很大的搜索空间,对于结构集$C={C_1,...,C_N}$,$N$为种群大小。在结构优化阶段,种群内的结构根据论文提出的pNSGA-III方法逐步更新。为了加速,使用一个超网$\mathcal{N}$用来为不同的结构共享权重$W$,能够极大地降低个体训练的计算量

Supernet of CARS

  从超网$\mathcal{N}$中采样不同的网络,每个网络$\mathcal{N}_i$可以表示为浮点参数集合$W_i$以及二值连接参数集合$C_i$,其中0值表示网络不包含此连接,1值则表示使用该连接,即每个网络$\mathcal{N}_i$可表示为$(W_i, C_i)$对

  完整的浮点参数集合$W$是在网络集合中共享,如果这些网络结构是固定的,最优的$W$可通过标准反向传播进行优化,优化的参数$W$适用于所有网络$\mathcal{N}_i$以提高识别性能。在参数收敛后,通过基因算法优化二值连接$C$,参数优化阶段和结构优化阶段是CARS的主要核心

Parameter Optimization

  参数$W$为网络中的所有参数,参数$W_i=W\odot C_i, i\in {1,...,N}$,$\odot$为mask操作,只保留$C_i=1$对应位置的参数。对于输入$X$,网络的结果为$P_i=\mathcal{N}_i(X,W_i)$,$\mathcal{N}_i$为$i$-th个网络,$W_i$为其参数

  给定GT $Y$,预测的损失为$L_i$,则$W_i$的梯度计算如公式1

  由于参数$W$应该适用于所有个体,因此使用所有个体的梯度来计算$W$的梯度,计算如公式2,最终配合SGD进行更新

  由于已经得到大量带超网共享参数的结构,每次都集合所有网络梯度进行更新会相当耗时,可以借鉴SGD的思想进行min-batch更新。使用$N_b < N$个不同的网络进行参数更新,编号为${n_1,...,n_b}$。计算如公式3,使用小批量网络来接近所有网络的梯度,能够极大地减少优化时间,做到效果和性能间的平衡

Architecture Optimization

  对于结构的优化过程,使用NSGA-III算法的non-dominated排序策略进行。标记${\mathcal{N}_1,...,\mathcal{N}_N}$为$N$个不同的网络,${\mathcal{F}_1,...,\mathcal{F}_M}$为希望优化的$M$个指标,一般这些指标都是有冲突的,例如参数量、浮点运算量、推理时延和准确率,导致同时优化这些指标会比较难

  首先定义支配(dominate)的概念,假设网络$\mathcal{N}_i$的准确率大于等于网络$\mathcal{N}_j$,并且有一个其它指标优于网络$\mathcal{N}_j$,则称网络$\mathcal{N}_i$支配网络$\mathcal{N}_j$,在进化过程网络$\mathcal{N}_j$可被网络$\mathcal{N}_i$代替。利用这个方法,可以在种群中挑选到一系列优秀的结构,然后使用这些网络来优化超网对应部分的参数

  尽管non-dominated排序能帮助选择的更好网络,但搜索过程仍可能会存在小模型陷阱现象。由于超网的参数仍在训练,所以当前轮次的模型不一定为其最优表现,如果存在一些参数少的小模型但有比较高的准确率,则会统治了整个搜索过程。因此,论文基于NSGA-III提出pNSGA-III,加入准确率提升速度作为考虑

  假设优化目标为模型参数和准确率,对于NSGA-III,会根据两个不同的指标进行non-dominated排序,然后根据帕累托图进行选择。而对于pNSGA-III,额外添加考虑准确率的增长速度的non-dominated排序,最后结合两种排序进行选择。这样,准确率增长较慢的大模型也能得到保留。如图2所示,pNSGA-III很明显保留的模型大小更广,且准确率与NSGA-III相当

Continuous Evolution for CARS

  CARS算法的优化包含两个步骤,分别是网络结构优化和参数优化,另外,在初期也会使用参数warmup

  • Parameter Warmup,由于超网的共享权重是随机初始化的,如果结构集合也是随机初始化,那么出现最多的block的训练次数会多于其它block。因此,使用均分抽样策略来初始化超网的参数,公平地覆盖所有可能的网络,每条路径都有平等地出现概率,每种层操作也是平等概率,在最初几轮使用这种策略来初始化超网的权重
  • Architecture Optimization,在完成超网初始化后,随机采样$N$个不同的结构作为父代,$N$为超参数,后面pNSGA-III的筛选也使用。在进化过程中生成$t\times N$个子代,$t$是用于控制子代数的超参,最后使用pNSGA-III从$(t+1)\times N$中选取$N$个网络用于参数更新
  • Parameter Optimization,给予网络结构合集,使用公式3进行小批量梯度更新

Search Time Analysis

  CARS搜索时,将数据集分为数据集和验证集,假设单个网络的训练耗时为$T_{tr}$,验证耗时$T_{val}$,warmup共$E_{warm}$周期,共需要$T_{warm}=E_{warm}\times T_{tr}$时间来初始化超网$\mathcal{N}$的参数。假设进化共$E_{evo}$轮,每轮参数优化阶段对超网训练$I_{param}$周期,所以每轮进化的参数优化耗时$T_{param}=I_{param}\times T_{tr}\times N_b$,$N_b$为mini-batch大小。结构优化阶段,所有个体是并行的,所以搜索耗时为$T_{arch}=T_{val}$。CARS的总耗时如公式5

Experiments


Experimental Settings

  • supernet Backbones

  超网主干基于DARTS的设置,DARTS搜索空间包含8个不同的操作,包含4种卷积、2种池化、skip连接和无连接,搜索normal cell和reduction cell,分别用于特征提取以及下采样,搜索结束后,根据预设将cell堆叠起来

  • Evolution Details

  在DARTS中,每个中间节点与之前的两个节点连接,因此每个节点有其独立的搜索空间,而交叉和变异在搜索空间相对应的节点中进行,占总数的比例均为0.25,其余0.5为随机生成的新结构。对于交叉操作,每个节点有0.5的概率交叉其连接,而对于变异,每个节点有0.5的概率随机赋予新操作

Experiments on CIFAR-10

  • Small Model Trap

  图3训练了3个不同大小的模型,在训练600轮后,模型的准确率与其大小相关,从前50轮的曲线可以看出小模型陷阱的原因:

  1. 小模型准确率上升速度较快
  2. 小模型准确率的波动较大

  在前50轮模型C一直处于下风,若使用NSGA算法,模型C会直接去掉了,这是需要使用pNSGA-III的第一个原因。对于模型B和C,准确率增长类似,但由于训练导致准确率波动,一旦模型A的准确率高于B,B就会被去掉,这是需要使用pNSGA-III的第二个原因

  • NSGA-III vs. pNSGA-III

  如图2所示,使用pNSGA-III能避免小模型陷阱,保留较大的有潜力的网络

  • Search on CIFAR-10

  将CIFAR分为25000张训练图和25000张测试图,共搜索500轮,参数warmup共50轮,之后初始化包含128个不同网络的种群,然后使用pNSGA-III逐渐进化,参数优化阶段每轮进化训练10周期,结构优化阶段根据pNSGA-III使用测试集进行结构更新

  • Search Time analysis

  对于考量模型大小和准确率的实验,训练时间$T_{tr}$为1分钟,测试时间$T_{val}$为5秒,warmup阶段共50轮,大约耗费1小时。而连续进化算法共$E_{evo}$轮,对于每轮结构优化阶段,并行测试时间为$T_{arch}=T_{val}$,对于每轮的参数优化阶段,设定$N_b=1$,$T_{param}$大约为10分钟,$T_{evo}$大约为9小时,所以$T_{total}$为0.4 GPU day,考虑结构优化同时要计算时延,最终时间大约为0.5 GPU day

  • Evaluate on CIFAR-10

  在完成CARS算法搜索后,保留128个不同的网络,进行更长时间的训练,然后测试准确率

  • Comparison on Searched Block

  CARS-H与DARTS参数相似,但准确率更高,CARS-H的reduction block包含更多的参数,而normal block包含更少的参数,大概由于EA有更大的搜索空间,而基因操作能更有效地跳出局部最优解,这是EA的优势

Evaluate on ILSVRC2012

  将在CIFAR-10上搜索到网络迁移到ILSVRC22012数据集,结果表明搜索到的结构具备迁移能力

CONCLUSION


  为了优化进化算法在神经网络结构搜索时候选网络训练过长的问题,参考ENAS和NSGA-III,论文提出连续进化结构搜索方法(continuous evolution architecture search, CARS),最大化利用学习到的知识,如上一轮进化的结构和参数。首先构造用于参数共享的超网,从超网中产生子网,然后使用None-dominated排序策略来选择不同大小的优秀网络,整体耗时仅需要0.5 GPU day

参考内容





如果本文对你有帮助,麻烦点个赞或在看呗~

更多内容请关注 微信公众号【晓飞的算法工程笔记】

CARS: 华为提出基于进化算法和权值共享的神经网络结构搜索,CIFAR-10上仅需单卡半天 | CVPR 2020的更多相关文章

  1. Evolution of Image Classifiers,进化算法在神经网络结构搜索的首次尝试 | ICML 2017

    论文提出使用进化算法来进行神经网络结构搜索,整体搜索逻辑十分简单,结合权重继承,搜索速度很快,从实验结果来看,搜索的网络准确率挺不错的.由于论文是个比较早期的想法,所以可以有很大的改进空间,后面的很大 ...

  2. #mxnet# 权值共享

    https://www.cnblogs.com/chenyliang/p/6847744.html Note:后记此权值共享非彼卷积共享.说的是layer实体间的参数共享. Introduction ...

  3. CNN中的局部连接(Sparse Connectivity)和权值共享

    局部连接与权值共享 下图是一个很经典的图示,左边是全连接,右边是局部连接. 对于一个1000 × 1000的输入图像而言,如果下一个隐藏层的神经元数目为10^6个,采用全连接则有1000 × 1000 ...

  4. tensorflow-参数、超参数、卷积核权值共享

    根据网上查询到的说法,参数就是在卷积神经网络中可以被训练的参数,比如卷积核的权值和偏移等等,而超参数是一些预先设定好并且无法改变的,比如说是卷积核的个数等. 另外还有一个最最基础的概念,就是卷积核的权 ...

  5. 用hadoop实现SimRank++算法(1)----权值转移矩阵的计算

    本文主要针对广告检索领域的查询重写应用,依据查询-广告点击二部图,在MapReduce框架上实现SimRank++算法.关于SimRank++算法的背景和原理请參看前一篇文章<基于MapRedu ...

  6. Dijkstra算法为什么权值不能为负

    Dijkstra算法当中将节点分为已求得最短路径的集合(记为S)和未确定最短路径的个集合(记为U),归入S集合的节点的最短路径及其长度不再变更,如果边上的权值允许为负值,那么有可能出现当与S内某点(记 ...

  7. HDU 1533 KM算法(权值最小的最佳匹配)

    Going Home Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  8. EAS:基于网络转换的神经网络结构搜索 | AAAI 2018

    论文提出经济实惠且高效的神经网络结构搜索算法EAS,使用RL agent作为meta-controller,学习通过网络变换进行结构空间探索.从指定的网络开始,通过function-preservin ...

  9. 最短路径问题 HDU - 3790 (Dijkstra算法 + 双重权值)

    参考:https://www.cnblogs.com/qiufeihai/archive/2012/03/15/2398455.html 最短路径问题 Time Limit: 2000/1000 MS ...

随机推荐

  1. IDEA启动项目报错:Cannot open URL.Please check this URL is correct

    IDEA启动项目报错:Cannot open URL.Please check this URL is correct 问题:IDEA启动SSM项目,使用的Tomcat,报错 Cannot open ...

  2. 基于.NetCore3.1搭建项目系列 —— 使用Swagger做Api文档 (上篇)

    前言 为什么在开发中,接口文档越来越成为前后端开发人员沟通的枢纽呢? 随着业务的发张,项目越来越多,而对于支撑整个项目架构体系而言,我们对系统业务的水平拆分,垂直分层,让业务系统更加清晰,从而产生一系 ...

  3. Netty源码分析一<序一Unix网络I/O模型简介>

    Unix网络 I/O 模型   我们都知道,为了操作系统的安全性考虑,进程是无法直接操作I/O设备的,其必须通过系统调用请求内核来协助完成I/O动作,而内核会为每个I/O设备维护一个buffer.以下 ...

  4. 3D游戏中各种空间变换到底是怎么回事

    每一个游戏可以呈现炫丽效果的背后,需要进行一系列的复杂计算,同时也伴随着各种各样的顶点空间变换.渲染游戏的过程可以理解成是把一个个顶点经过层层处理最终转化到屏幕上的过程,本文就旨在说明,顶点是经过了哪 ...

  5. mysql数据库设计文档-导出字段设计

    navicat 是我一直在使用的一个数据库操作工具,非常方便快捷.如果没有可用navicat可以留言邮箱我直接发您. 今天来介绍一下使用navicat导出数据库字段设计.废话不多说,先看导出效果. 查 ...

  6. iOS开发:Swift/Objective-C高效生成随机字符串

    原文连接 Objective-C版 // 随机生成字符串(由大小写字母.数字组成) + (NSString *)random: (int)len { char ch[len]; for (int in ...

  7. MySQL笔记(6)-- SQL更新语句日志系统流程

    一.背景 在上一篇[MySQL笔记(5)-- SQL执行流程,MySQL体系结构]中讲述了select查询语句在MySQL体系中的运行流程,从连接器开始,到分析器.优化器.执行器等,最后到达存储引擎. ...

  8. hdu2544SPFA板题

    SPFA顾名思义就是更快的最短路算法,是Bellman ford算法的优化,SPFA的平均复杂度大约是O(K*|E|),在一般情况下K大约是小于等于2的数,但是总有人对你心怀不轨,构造一组SPFA最坏 ...

  9. 金融和IT的区别

    在进入金融圈之前, 我写了十五年的代码, 在San Francisco Bay Area(也就是中国人所说的硅谷)工作过两三年. 去年因为Fintech和香港.NET俱乐部的缘故, 我接触了私人银行和 ...

  10. NDCG的理解

    2019-05-29 14:15:44