AmoebaNet:经费在燃烧,谷歌提出基于aging evolution的神经网络搜索 | AAAI 2019
论文提出aging evolution,一个锦标赛选择的变种来优化进化算法,在NASNet搜索空间上,对比强化学习和随机搜索,该算法足够简洁,而且能够更快地搜索到更高质量的模型,论文搜索出的AmoebaNet-A在ImageNet上能达到SOTA
来源:【晓飞的算法工程笔记】 公众号
论文: Regularized Evolution for Image Classifier Architecture Search
Introduction
神经网络结构搜索的网络已经能够超越人工设计的网络,但是基于进化算法(evolutionary algorithms)和基因规划(genetic programming)还没有达到人工设计的网络的精度。为此,论文在标准的进化过程基础上进行两个改进:
- 提出改进锦标赛选择(tournament selection)的进化算法,命名aging evolution或regularized evolution。在锦标赛选择中,表现最好的基因会保留,而新方法将每个基因关联一个年龄,偏向于选择年轻的基因
- 在NASNet的搜索空间上采用最简单的变异集合进行进化,NasNet的搜索空间用小的有向图来表示卷积神经网络,节点表示隐藏层,带标签的边表示常见的网络操作,变异的规则仅允许随机将边连接到新的节点和修改边的标签
在NASNet空间进行搜索,能够直接地将论文提出的方法和原来的强化学习方法进行对比。论文提出的方法不仅简单,而且搜索速度更快,结果更优,搜索得到的AmoebaNet-A能达到83.9% top-1 error rate
Methods
Search Space
NASNet搜索空间定义的网络架构是固定的,如图1左,通过堆叠单元(cell)来组成网络,每个单元接受前两个单元的输出作为输入,有normal cell和reduction cell,分别主要用于特征提取以及池化。单元的搜索就是定义里面每个块的输入、算子以及合并输出方式,细节可以看NASNet的论文,也可以看我之前的NASNet解读
Evolutionary Algorithm
进化算法始终保持population(种群)的大小为$P$个模型,使用随机网络进行population初始化,然后进行$C$轮进化来优化种群。每轮以均匀的概率随机选取S个模型,将选取的模型中准确率最高的作为parent,然后将parent进行mutation(变异)得到新网络child,在训练和验证后将child加入到history和population的右侧中,最后删除population最左边的模型,算法可以通过分发“$while |history|$”来进行并行计算
需要注意,在锦标赛选择中,通过去掉S-sample中最差的模型来保持最初种群数始终为$P$,这可以认为是non-aging evolution。相反的,论文的新方法每次直接去掉种群中最老的模型,这样能为搜索带来更多的可能性,而非只关注高准确率模型,称为aging evolution
直观的,变异可认为是提供探索,而参数$S$则可以认为是提供榨取(获取最优模型的可能)。不同的参数$S$控制榨取的侵略性,$S=1$等于随机搜索,$2\le S\le P$则代表不同的贪婪程度
变异有三种形式,每次只能进行一种变异,两种主要的为hidden state mutation和op mutation,另外一种为不变异。hidden state mutation首先选择变异的是normal cell还是reduction cell,然后选择单元的5个block中的一个,最好在block的两个输入中选择一个进行变异,随机选择另外一个单元内的hidden state作为输入,前提不能产生环。op mutation则进行类似的选择,先单元类型,然后block,再选两个操作中的一个进行变异,替换成另一个随机操作
Baseline Algorithms
论文的主要对比算法为强化学习(RL)和随机搜索(RS)
Experimental Setup
在CIFAR-10上进行小模型(N和F都很小)搜索,直到验证了20k模型,之后将搜索到的最优结构应用到full-size的模型中(提高N和F),然后使用更长的训练时间来获得CIFAR-10和ImageNet上的准确率
Methods Details
op的选择与NASNet有点不同,包含:none (identity); 3x3, 5x5 and 7x7 separable (sep.) convolutions (convs.); 3x3 average (avg.) pool; 3x3 max pool;
3x3 dilated (dil.) sep. conv.; 1x7 then 7x1 conv,$P=100$,$S=25$,在搜索阶段每个模型训练25 epoch,$N=3/F=24$,在450张K40上训练7天,identity mutation的概率固定为0.05,其它的两种概率一致,搜索到的最优20个模型进行最终的训练
Results
Comparison With RL and RS Baselines
图3看出进化方法有更高的准确率,而且可以早停
图4进行了多次重复实验,进化算法比RS的准确率高,比RL的参数少
论文的进化算法搜索到的最优网络AmoebaNet-A
可以看到,在参数量和准确率方法,AmoebaNet-A要优于NASNet-A
ImageNet Results
将CIFAR-10上的最优模型转化到ImageNet上,准确率与当前的SOTA相似,对模型进行进一步加大后,得到SOTA模型83.9%,但是模型的参数量相对较大
CONCLUSION
论文提出aging evolution,一个锦标赛选择的变种来优化进化算法,在NASNet搜索空间上,对比强化学习和随机搜索,该算法足够简洁,而且能够更快地搜索到更高质量的模型,450块K40搜索大约7天,论文搜索出的AmoebaNet-A在ImageNet达到SOTA
如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】
AmoebaNet:经费在燃烧,谷歌提出基于aging evolution的神经网络搜索 | AAAI 2019的更多相关文章
- 伯克利、OpenAI等提出基于模型的元策略优化强化学习
基于模型的强化学习方法数据效率高,前景可观.本文提出了一种基于模型的元策略强化学习方法,实践证明,该方法比以前基于模型的方法更能够应对模型缺陷,还能取得与无模型方法相近的性能. 引言 强化学习领域近期 ...
- EAS:基于网络转换的神经网络结构搜索 | AAAI 2018
论文提出经济实惠且高效的神经网络结构搜索算法EAS,使用RL agent作为meta-controller,学习通过网络变换进行结构空间探索.从指定的网络开始,通过function-preservin ...
- 深度学习基础-基于Numpy的卷积神经网络(CNN)实现
本文是深度学习入门: 基于Python的实现.神经网络与深度学习(NNDL)以及动手学深度学习的读书笔记.本文将介绍基于Numpy的卷积神经网络(Convolutional Networks,CNN) ...
- Lucene5.5.4入门以及基于Lucene实现博客搜索功能
前言 一直以来个人博客的搜索功能很蹩脚,只是自己简单用数据库的like %keyword%来实现的,所以导致经常搜不到想要找的内容,而且高亮显示.摘要截取等也不好实现,所以决定采用Lucene改写博客 ...
- 基于Python的卷积神经网络和特征提取
基于Python的卷积神经网络和特征提取 用户1737318发表于人工智能头条订阅 224 在这篇文章中: Lasagne 和 nolearn 加载MNIST数据集 ConvNet体系结构与训练 预测 ...
- SDUT 2142 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
数据结构实验之图论二:基于邻接表的广度优先搜索遍历 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Descript ...
- 基于 SoC 的卷积神经网络车牌识别系统设计(0)摘要
NOTES:现如今,芯片行业无比火热啊,无论是前景还是钱景,国家芯片战略的发布,公司四五十万的年薪,着实令人非常的向往,为了支持芯片设计者,集成了工作.科研.竞赛于一体的<基于 SoC 的卷积 ...
- 基于 SoC 的卷积神经网络车牌识别系统设计(1)概述
NOTES: 这是第三届全国大学生集成电路创新创业大赛 - Arm 杯 - 片上系统设计挑战赛(本人指导的一个比赛).主要划分为以下的 Top5 重点.难点.亮点.热点以及创新点:1.通过 Arm C ...
- 谷歌发布基于机器学习的Android APP安全检测系统:Google Play Protect
Google Play作为众所周知的在线应用市场,因为审查制度的松散,经常会有一些恶意软件伪装成其他应用混入其中.此前阿里聚安全小编就报道了2例关于恶意软件伪装在Google Play上的事件:< ...
随机推荐
- JDK下载与安装
Java有很多个版本,最新的版本会兼容之前的. 先附上下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downlo ...
- 蚁剑AntSword插件:Bypass disable_Functions
参考文章: https://www.uedbox.com/post/58634/ 参考视频: https://www.bilibili.com/video/BV1Et411G7D7?from=sear ...
- 一步步分析:C语言如何面向对象编程
这是道哥的第009篇原创 一.前言 在嵌入式开发中,C/C++语言是使用最普及的,在C++11版本之前,它们的语法是比较相似的,只不过C++提供了面向对象的编程方式. 虽然C++语言是从C语言发展而来 ...
- vue封装API接口
第一步: 首先引入axios 然后创建两个文件夹api和http http.js 里面的 1 import axios from 'axios';//引入axios 2 3 //环境的切换 开发环境( ...
- 流程控制之☞ while 和 for 的故事
学习三连鞭... 什么是循环? 为什么要有循环? 如何用循环? 循环的基本语法:while 和 for 先来看while循环: while条件:首先得是个循环体. 1.如果条件为真,那么循 ...
- 2020 .NET 开发者峰会顺利在苏州落幕,相关数据很喜人以及线上直播回看汇总
在2019年上海中国.NET开发者大会的基础上,2020年12月19-20日 继续以"开源.共享.创新" 为主题的第二届中国 .NET 开发者峰会(.NET Conf China ...
- ceph如何快速卸载所有osd及擦除磁盘分区表和内容并重新加入
我的ceph集群中有4台服务器,16个osd,因为某些原因,集群中的数据都不要了,但是集群要保留给新的应用使用,集群现有的osd情况如下 [root@ceph-host-01 ~]# cat /etc ...
- 将Maven镜像更换为国内阿里云仓库
1.国内访问maven默认远程中央镜像特别慢 2.用阿里的镜像替代远程中央镜像 3.大部分jar包都可以在阿里镜像中找到,部分jar包在阿里镜像中没有,需要单独配置镜像 换为国内镜像,让你感受飞一般的 ...
- Hadoop集群安装配置
一.准备工作 1.首先准备好七台虚拟机,并确保都已经安装配置好jdk. 2.Hadoop3.2.0+jdk1.8自行到官网下载 3.修改好相称的主机名,并在hosts文件中相互添加. ######注意 ...
- 熬夜肝了一周!总结了这套对标阿里P8的java秘籍,限时发布3天!
前言 最近老是有粉丝私信我说感觉自己学java越来越难了,这其中有刚毕业的应届生说自己的技术找不到满意的工作,也有在学校的大学习说找不到学习方式,更多的是正在工作的java开发人员说是现在的技术更新太 ...