enas 参数共享_CVPR2020 | CARS: 华为提出基于进化算法和权值共享的神经网络结构搜索,CIFAR10上仅需单卡半天...

点击上方“CVer”,选择加"星标"或“置顶”

重磅干货,第一时间送达9b602a99c4fd3fa84642e0392b65c383.png

本文转载自:晓飞的算法工程笔记

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

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

a9990318b34c84ee5a2c818c1e9f9676.png
  • 论文地址:https://arxiv.org/abs/1909.04977

Introduction


  目前神经网络结构搜索的网络性能已经超越了人类设计的网络,搜索方法大致可以分为强化学习、进化算法以及梯度三种,有研究表明进化算法能比强化学习搜索到更好的模型,但其搜索耗时较多,主要在于对个体的训练验证环节费事。可以借鉴ENSA的权重共享策略进行验证加速,但如果直接应用于进化算法,超网会受到较差的搜索结构的影响,因此需要修改目前神经网络搜索算法中用到的进化算法。为了最大化上一次进化过程学习到的知识的价值,论文提出了连续进化结构搜索方法(continuous evolution architecture search, CARS)
  首先初始化一个有大量cells和blocks的超网(supernet),超网通过几个基准操作(交叉、变异等)产生进化算法中的个体(子网),使用Non-dominated 排序策略来选取几个不同大小和准确率的优秀模型,然后训练子网并更新子网对应的超网中的cells,在下一轮的进化过程会继续基于更新后的超网以及non-dominated排序的解集进行。另外,论文提出一个保护机制来避免小模型陷阱问题

Approach


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

Supernet of CARS

  从超网中采样不同的网络,每个网络可以表示为浮点参数集合以及二值连接参数集合,其中0值表示网络不包含此连接,1值则表示使用该连接,即每个网络可表示为对
  完整的浮点参数集合是在网络集合中共享,如果这些网络结构是固定的,最优的可通过标准反向传播进行优化,优化的参数适用于所有网络以提高识别性能。在参数收敛后,通过基因算法优化二值连接,参数优化阶段和结构优化阶段是CARS的主要核心

Parameter Optimization

  参数为网络中的所有参数,参数,为mask操作,只保留对应位置的参数。对于输入,网络的结果为,为-th个网络,为其参数

1472f5e5eadcf842357820b346309051.png

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

f74ea8b680c0db7c48b665db102b56d9.png

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

15ed2bff5f0b6ec7bb90f70734709976.png

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

Architecture Optimization

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

abd3ebab691d2f2270c2bdb226ff1dca.png

  首先定义支配(dominate)的概念,假设网络的准确率大于等于网络,并且有一个其它指标优于网络,则称网络支配网络,在进化过程网络可被网络代替。利用这个方法,可以在种群中挑选到一系列优秀的结构,然后使用这些网络来优化超网对应部分的参数
  尽管non-dominated排序能帮助选择的更好网络,但搜索过程仍可能会存在小模型陷阱现象。由于超网的参数仍在训练,所以当前轮次的模型不一定为其最优表现,如果存在一些参数少的小模型但有比较高的准确率,则会统治了整个搜索过程。因此,论文基于NSGA-III提出pNSGA-III,加入准确率提升速度作为考虑

37d0f562c63a82cf07f2d975c465aa8c.png

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

Continuous Evolution for CARS

ceb58b643a28cf73ccb65539e2c506d7.png

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

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

Search Time Analysis

644f82e678240a884c742da1f6fc8652.png

  CARS搜索时,将数据集分为数据集和验证集,假设单个网络的训练耗时为,验证耗时,warmup共周期,共需要时间来初始化超网的参数。假设进化共轮,每轮参数优化阶段对超网训练周期,所以每轮进化的参数优化耗时,为mini-batch大小。结构优化阶段,所有个体是并行的,所以搜索耗时为。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
a2f4a04d0313e9abb8d1e20acef76e5d.png

  图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

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

  • Evaluate on CIFAR-10
aa29c5b145137b23ba4e301942e24931.png

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

  • Comparison on Searched Block
e54c9f7e8b675cd230acc9d4cb75b00b.png

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

Evaluate on ILSVRC2012

fae1851467801a677f9e94157ecb11c2.png

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

CONCLUSION


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

参考内容

  • Pareto相关理论 (https://blog.csdn.net/qq_34662278/article/details/91489077)

推荐阅读

2020年AI算法岗求职群来了(含准备攻略、面试经验、内推和学习资料等)

重磅!CVer-NAS交流群已成立

扫码添加CVer助手,可申请加入CVer-NAS微信交流群,旨在交流AutoML(NAS)等的学习、科研、工程项目等内容。

一定要备注:研究方向+地点+学校/公司+昵称(如NAS+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群

b85fface31fb1e11e4e75d48efc7ee74.png

▲长按加群

961b8591cd0350bd3183a4228e4ced5a.png

▲长按关注我们

麻烦给我一个在看!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/529894.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

gradle引入子module配置_原创 | 看完此文,你对Gradle的理解又升级了

前言这一篇来介绍一些Gradle进阶的内容,当然进阶内容非常多,这篇文章就总结一些相对重要的、常用的一些知识点,比如Gradle的签名配置和依赖管理。1.Android签名文件配置在一般公司中,当团队比较小的时候,App的签名信息…

怎樣制作线段动画_OPPO又开发布会!这两个PPT动画太炫了,荣获网友清一色好评...

前两天,OPPO在线上发布了find X2系列,观看发布会直播的时候,真的有被发布会的开场惊艳到,视觉体验太震撼了。这是我随便录的一个动画,满满的视觉冲击力:在看完发布会之后,我对整场发布会印象最深…

文件服务器的文件设置只读,服务器设置文件为只读

服务器设置文件为只读 内容精选换一换有,该NTP服务器仅限于在华为云控制台上购买的弹性云服务器安装使用。如需在购买的弹性云服务器上安装NTP服务器,您可以选择使用华为云控制台自己提供的NTP服务器,也可以选择其他NTP服务器。安装NTP服务器…

手机修改ntp服务器地址,修改手机ntp服务器ip地址

修改手机ntp服务器ip地址 内容精选换一换本文介绍使用云手机服务时需要了解的基本概念。云手机是一台包含原生安卓操作系统,具有虚拟手机功能的云服务器,简单来说,云手机云服务器Android OS。您可以远程实时控制云手机,实现安卓AP…

window10维护不了华为服务器,win10怎么打开云服务器异常

win10怎么打开云服务器异常 内容精选换一换本节介绍如何查看云服务器的mac地址。云服务器的mac地址不支持修改。登录Linux云服务器。执行以下命令,查看云服务器的mac地址。ifconfig查看MAC地址ifconfig登录Linux云服务器。执行以下命令,查看云服务器的ma…

命令行cd到_前端(只)需要掌握这些命令行(就还行了)

练习windows 用户在任意目录使用 shift 右键 打开 cmd 或者 powershell;或通过其他方式打开命令行cd ~/Desktop 回车恭喜你在命令行里进入了桌面输入命令 mkdir demo1cd demo1 进入目录cd .. 回退到桌面rm -rf demo1 删除目录,其中 -r 表示递归地删除路…

工况密度和标况密度怎么换算_什么是载流量?导线的载流量与电流密度怎么计算?图文详解!...

(1)导线规格在国标《GB/T3956-2008 电缆的导体》中,我们能看到国家对电缆导线的截面积进行标准化。按照国标规定,标称的电缆导线规格如下(单位mm2):0.5、0.75、1、1.5、2.5、4、6、10、16、25、35、50、70、95、120、150、185、240、300、400…

卸载cuda_NVIDIA驱动和CUDA安装

切换到集成显卡(X.Org X server)2. 卸载旧驱动sudo apt-get --purge remove nvidia* sudo apt autoremove # To remove CUDA Toolkit: $ sudo apt-get --purge remove "*cublas*" "cuda*" # To remove NVIDIA Drivers: $ sudo apt-g…

html加粗字体打印失效_论文格式要求及字体大小

点击上方“蓝字”带你去看小星星论文既是探讨问题进行学术研究的一种手段,又是描述学术研究成果进行学术交流的一种工具。下面小编为大家整理了论文格式要求及字体大小,欢迎阅读。1 02封面题目:小二号黑体加粗居中。各项内容:四号…

deepfakes怎么用_[mcj]deepfakesApp使用说明(1)

在众多AI换脸软件中Fakeapp是传播最广,操作最简单的一款,当然他同样也是源于Deepfakes。 这款软件在设计上的确是花了一些心事,只需稍加点拨,哪怕是再小白的人也能学会。下面我就做一个入门教程吧。跟着这个教程来,你肯…

alert 标题_[SwiftUI 知识碎片] Button、Image 和 Alert

译自 Buttons and images更多内容,欢迎关注公众号:Swift花园喜欢文章?不如来个 ➕三连?关注专栏,关注我 Button 和 Image在 SwiftUI 中,按钮可以由两种方式创建,取决于它们的外观。最简单的方式…

mysql数据存储到指定位置_Mysql数据库表分区存储到指定磁盘路径

. 前提:mysql5.6.6以上的版本以上的版本才支持单表指定目录,且目录权限是MySQL:mysql。 在mysql中数据文件存放于在my.cnf中datadir指定的路径,使用的表引擎不同产生的文件格式、表文件个数也会有所差异。 mysql的表引擎有多种,…

roslyn分析字符串代码_.NET 5 源代码生成器——MediatR——CQRS

在这篇文章中,我们将探索如何使用.NET 5中的新source generator特性,使用MediatR库和CQRS模式自动为系统生成API。中介者模式中介模式是在应用程序中解耦模块的一种方式。在基于web的应用程序中,它通常用于将前端与业务逻辑的解耦。在.NET平台…

mysql2008怎么重装_SQL Server2005、2008如何彻底删除卸载并重新安装?

很多小伙伴在删除SQL Server后重新安装总是遇到诸多问题导致安装失败,这是因为你没有将SQL Server彻底删除卸载完毕。本文就如何彻底卸载进行详细介绍,本文以SQL Server2008为例,2005的方法相似。方法/步骤1.按照传统方法将SQL Server 2005、…

mysql主从复制 火墙_MySQL高级知识(十五)——主从复制

前言:本章主要讲解MySQL主从复制的操作步骤。由于环境限制,主机使用Windows环境,从机使用用Linux环境。另外MySQL的版本最好一致,笔者采用的MySQL5.7.22版本,具体安装过程请查询相关资料。1.主从复制的基本原理slave会…

正则只能出现特定字符_python正则表达式的简单使用总结

原文作者:小哲,雷锋网在编程中,经常会涉及到字符串的操作,一个常用的策略就是利用split函数,然后对于特定的字符串进行匹配,但是这种方法格式复杂,可复用性较差。正则表达式是处理字符串匹配一个…

MySQL配置日志服务器_mysql配置数据库日志

mysql配置数据库日志云服务器(Elastic Compute Service,简称ECS)是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务。云服务器ECS免去了您采购IT硬件的前期准备,让您像使用水、电、天然气等公共资源一样便捷…

mysql dos 下切换连接_如何在dos下连接进入mysql对数据库进行操作

一、:windowsR 进入命令命令提示符输入 net start mysql若出现系统错误,要将命令提示符以管理员身份运行若出现不是内部指令,进入下面环境变量设置界面,配置path路径1.进入系统查看界面,点击高级系统设置2&#xff0c…

java获取文件大小_Java中获取文件大小的详解及实例代码

Java 获取文件大小今天写代码时需要实现获取文件大小的功能,目前有两种实现方法,一种是使用File的length()方法;另外一种是使用FileInputStream的available()方法,当InputStream未进行read操作时,available()的大小应该…

java如何获得当前路径_在java中如何得到当前路径

归纳一些网上取java路径的方法:注明:如果从ANT启动程序,this.getClass().getResource("")取出来的比较怪,直接用JAVA命令行调试就可成功。得到classpath和当前类的绝对路径的一些方法获得CLASSPATH之外路径的方法&#…