论文提出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 cellreduction cell,分别主要用于特征提取以及池化。单元的搜索就是定义里面每个块的输入、算子以及合并输出方式,细节可以看NASNet的论文,也可以看我之前的NASNet解读

Evolutionary Algorithm

  进化算法始终保持population(种群)的大小为$P$个模型,使用随机网络进行population初始化,然后进行$C$轮进化来优化种群。每轮以均匀的概率随机选取S个模型,将选取的模型中准确率最高的作为parent,然后将parent进行mutation(变异)得到新网络child,在训练和验证后将child加入到historypopulation的右侧中,最后删除population最左边的模型,算法可以通过分发“$while |history|$”来进行并行计算

  需要注意,在锦标赛选择中,通过去掉S-sample中最差的模型来保持最初种群数始终为$P$,这可以认为是non-aging evolution。相反的,论文的新方法每次直接去掉种群中最老的模型,这样能为搜索带来更多的可能性,而非只关注高准确率模型,称为aging evolution

  直观的,变异可认为是提供探索,而参数$S$则可以认为是提供榨取(获取最优模型的可能)。不同的参数$S$控制榨取的侵略性,$S=1$等于随机搜索,$2\le S\le P$则代表不同的贪婪程度

  变异有三种形式,每次只能进行一种变异,两种主要的为hidden state mutationop 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的更多相关文章

  1. 伯克利、OpenAI等提出基于模型的元策略优化强化学习

    基于模型的强化学习方法数据效率高,前景可观.本文提出了一种基于模型的元策略强化学习方法,实践证明,该方法比以前基于模型的方法更能够应对模型缺陷,还能取得与无模型方法相近的性能. 引言 强化学习领域近期 ...

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

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

  3. 深度学习基础-基于Numpy的卷积神经网络(CNN)实现

    本文是深度学习入门: 基于Python的实现.神经网络与深度学习(NNDL)以及动手学深度学习的读书笔记.本文将介绍基于Numpy的卷积神经网络(Convolutional Networks,CNN) ...

  4. Lucene5.5.4入门以及基于Lucene实现博客搜索功能

    前言 一直以来个人博客的搜索功能很蹩脚,只是自己简单用数据库的like %keyword%来实现的,所以导致经常搜不到想要找的内容,而且高亮显示.摘要截取等也不好实现,所以决定采用Lucene改写博客 ...

  5. 基于Python的卷积神经网络和特征提取

    基于Python的卷积神经网络和特征提取 用户1737318发表于人工智能头条订阅 224 在这篇文章中: Lasagne 和 nolearn 加载MNIST数据集 ConvNet体系结构与训练 预测 ...

  6. SDUT 2142 数据结构实验之图论二:基于邻接表的广度优先搜索遍历

    数据结构实验之图论二:基于邻接表的广度优先搜索遍历 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Descript ...

  7. 基于 SoC 的卷积神经网络车牌识别系统设计(0)摘要

    ​NOTES:现如今,芯片行业无比火热啊,无论是前景还是钱景,国家芯片战略的发布,公司四五十万的年薪,着实令人非常的向往,为了支持芯片设计者,集成了工作.科研.竞赛于一体的<基于 SoC 的卷积 ...

  8. 基于 SoC 的卷积神经网络车牌识别系统设计(1)概述

    NOTES: 这是第三届全国大学生集成电路创新创业大赛 - Arm 杯 - 片上系统设计挑战赛(本人指导的一个比赛).主要划分为以下的 Top5 重点.难点.亮点.热点以及创新点:1.通过 Arm C ...

  9. 谷歌发布基于机器学习的Android APP安全检测系统:Google Play Protect

    Google Play作为众所周知的在线应用市场,因为审查制度的松散,经常会有一些恶意软件伪装成其他应用混入其中.此前阿里聚安全小编就报道了2例关于恶意软件伪装在Google Play上的事件:< ...

随机推荐

  1. JavaSE25-Junit&注解

    1.Junit单元测试 1.1 测试分类 1. 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值. 2. 白盒测试:需要写代码的.关注程序具体的执行流程. Junit使用:白盒测试 步骤: ...

  2. hydra-microservice 中文手册(3W字预警)

    Hydras 是什么? Hydra 是一个 NodeJS 包(技术栈不是重点,思想!思想!思想!),它有助于构建分布式应用程序,比如微服务. Hydra 提供服务发现(service discover ...

  3. 01-docker基本使用

    docker 常用命令 指令 说明 docker images 查看已经下载的镜像 docker rmi 镜像名称:标签名 删除已经下载的镜像 docker search 镜像 从官方仓库中查看镜像 ...

  4. Mac电脑完美解决 BasicIPv6ValidationError 问题,通过命令行更改ip设置

    在更改mac电脑ip网络时,提示BasicIPv6ValidationError.

  5. Docker 笔记学习

    文章目录 概述 CentOS7 Docker 安装 启动 Docker 后台服务 镜像加速 Docker常用命令 如何创建一个镜像 存储和载入镜像 上传镜像 容器的基本操作 创建容器 终止容器 如何进 ...

  6. Python 中的运算符重载

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 一种运算符对于不同类型的对象,有不同的使用方式.例如, + 用于整型对象,表示两个数相加:用于字符串 ...

  7. 为什么会有kafka消息系统?小问题藏着大细节!

    前言:老刘今天写这篇文章首先想对一些复制粘贴的博客表达不满:其次是想用通俗易懂的话解释消息系统:最后欢迎各位英雄好汉.女中豪杰前来battle. 1. 为什么有消息系统? 1.1 背景 今天复习kaf ...

  8. springboot实现mybaitis逆向工程

    springboot实现mybaitis逆向工程 首先引入依赖,一共需要两个依赖(一个是mybaits依赖,一个是mybatis逆向工程插件) <dependency> <group ...

  9. java中将文件夹里面的文件复制到指定的文件夹(java IO)

    //现在制定路径下创建名称为左侧的文件夹 public class Copy { public static void main(String[] args) { //原始文件地址 File srcF ...

  10. 使用metadata-extractor获取照片中的位置、曝光度、大小...

    使用metadata-extractor实现获取图片中的属性信息 官网:https://drewnoakes.com/code/exif/ 简介:metadata-extractor允许您通过简单的A ...