NASNet学习笔记—— 核心一:延续NAS论文的核心机制使得能够自动产生网络结构; 核心二:采用resnet和Inception重复使用block结构思想; 核心三:利用迁移学习将生成的网络迁移到大数据集上提出一个new search space。
from:https://blog.csdn.net/xjz18298268521/article/details/79079008
论文:《Learning Transferable Architectures for Scalable Image Recognition》
注
先啥都不说,看看论文的实验结果,图1和图2是NASNet与其他主流的网络在ImageNet上测试的结果的对比,图3是NASNet迁移到目标检测任务上的检测结果,从这图瞬间感觉论文的厉害之处了,值得阅读好几篇。
图1ImageNet数据集上的比较
图2 NASNet与目前最好的网络的比较
图3 NASNet目标检测的效果
1. 概述
此论文是一开始发表于ICLR2017,后来转投与CVPR2017,又是Google
Brain的一篇著作,其开源了源代码,目前还没有找到caffe版本的实现。论文是在之前的一篇论文NAS–Neural Architecture
Search With Reinforcement
Learning的基础做了突破性的改进,使得能让机器在小数据集(CIFAR-10数据集)上自动设计出CNN网络,并利用迁移学习技术使得设计的网络能够被很好的迁移到大数据集(ImageNet数据集),同时也可以迁移到其他的计算机视觉任务上(如目标检测)。
自我总结
看了论文一遍后发现真是云里雾里,真是硬着头皮看完了一遍,发现是论文许多核心的点都是基于NAS做的,在论文中只是几句带过,所以看完一篇论文后我不得不先去下载NAS论文看,看完NAS论文后回头再重新看这篇论理解起来就简单多了,极力推荐先看NAS论文(也是一篇很好的论文)再看此篇论文。
2. 论文核心
看完NAS论文和此篇论文,我将从以下几点描述论文的核心点。
核心一:延续NAS论文的核心机制使得能够自动产生网络结构;
核心二:采用resnet和Inception重复使用block结构思想;
核心三:利用迁移学习将生成的网络迁移到大数据集上提出一个new search space。
核心一
论文是采用了NAS的核心机制来自动生成网络,还是利用RNN控制器去预测一个网络结构,接着训练这个网络直到收敛,去验证集上测试得到一个准确率R,将这个R作为回报信号反馈给RNN控制器去更新RNN控制器的参数,从而产生更好的网络结构。只不过原来NAS中优化的算法是policy梯度,而论文中采用
Proximal Policy Optimization
(PPO)算法。整个的流程还是使用强化学习机制,具体的细节在NAS论文中有阐述,这里就不详细阐述了。
图4 生成网络的机制
NAS那篇论文中的实验都是在CIFAR-10上做的,所以那种搜索方式可以在能接受的时间范围内达到目的,但是如果想要在ImageNet数据集应用就不大行,因此就有了这篇文章,核二和核心三也是基于此提出的,也就是设计一个合适的new
search
space,使得在CIFAR-10上得到的最好的网络结构可以方便地迁移到ImageNet这样的图像尺寸大且数量也多的数据集上,因此这篇文章可以看做的ICLR2017那篇NAS文章的升级版,搜索速度比之前快了7倍左右。
核心二
论文借鉴了目前主流优秀的网络结构(如ResNet和GoogleNet)的重复堆叠思想,使得RNN控制器学习得到也是基本单元convolutional
cell,这是和原来的NAS很不一样的地方。论文通过堆叠convolution
cell从而构建整个网络结构,如图5所示就是基于这两种cell在不同数据集上构建的网络结构。
为了生成可扩展的网络结构并且能够结构任意size的图像,基于此论文设计的convlolution cell主要包含两种:
Normal Cell:不改变输入feature map的大小的卷积;
Reduction Cell:将输入feature map的长宽各减少为原来的一半的卷积,是通过增加stride的大小来降低size。
最后RNN控制器用来预测这两种Cell。
图5 Normal Cell和Reduction Cell构建网络结构
核心三
核心三也是论文一大改进,也是论文的核心所在,对于RNN控制器预测的输出和NAS不一样了。上述所描述的convolution
cell到底是什么呢?论文的解释是一个convolution
cell由B个block组成,那么一个block又是什么呢,看看图6就一目了然,对于每个block来说RNN控制器有5个预测步骤也有5个输出的预测值。每个block的输入是前面的两个block的最后的输出。
图6 RNN控制器预测每个convolution cell中的每个block结构图
图中的预测步骤一共是5个步骤:
Step1:从hidden states(前面block中产生的)中选择一个hidden state—hi-1;
Step2:重复step的操作,选择一个hidden state—hi;
Step3:为step1中选择的hidden state选择一个操作;
Step4:为step2中选择的hidden state选择一个操作;
Step5:选择一个方法去连接step3和step4中的输出从而产生一个new hidden state,并将其添加到hidden states中。
说明
考虑到计算资源的限制,论文限制了search space,设置B=5。
Step3和step4中选择的操作可以下面的这些选项选择
Step5中的连接方式一般有两种选择
(1)element-wise addition between two hidden states
(2)concatenation between two hidden states along the filter dimension
上述的5个step就是此论文的核心了,也就是作者设计的new search
space,这是和ICLR2017那篇NAS文章最不一样的地方,NAS那篇文章中的search
space包含了filter的size,stride等等,而这篇文章则通过构造convolution
cell的方式大大降低了search的难度。
图6中左右两个图都是一个block的示意图,且是相互对应的,比如左图中的两个灰色框对应右图中的最底下两个虚线框,左图中的两个黄色框对应右图中的3*3
conv和 2*2 maxpool,左图中的绿色框对应右图中的add操作。
图7就是作者通过实验得到的表现最好的Normal Cell和Reduction Cell结构。每个convolution
cell(比如Fiugre4中的Normal Cell和Reduction
Cell)都是B个block的结果,在Figure4中,B=5,所以可以看到不管在Normal Cell还是Reduction
Cell中都有5个add操作。注意图6展示的是论文称为NASNet-A的Cell结构,论文中的其他两种基于不同的search
spaces得到的NASNet-B和NASNet-C的Cell结构可以看论文中最后的附录部分。可以看出虽然作者没有设计类似ResNet那样的residual
connection结构(或者叫skip connection),但是这些Cell在训练过程中自己学会了这种skip
connection(图7中的虚线连接),这个学习的过程就是图6中前面两个灰色矩形框的select过程(可以和ICLR2017的NAS中设计的skip
connection结构对比,在那篇文章中采用的sigmoid结构表达层与层之间的连接关系),而且作者发现当手动插入residual
connection时并没能提高模型的效果。
图7 NASNet-A的Cell结构示意图
NASNet学习笔记—— 核心一:延续NAS论文的核心机制使得能够自动产生网络结构; 核心二:采用resnet和Inception重复使用block结构思想; 核心三:利用迁移学习将生成的网络迁移到大数据集上提出一个new search space。的更多相关文章
- muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制
目录 muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制 eventfd的使用 eventfd系统函数 使用示例 EventLoop对eventfd的封装 工作时序 runInLoo ...
- 深度学习笔记(七)SSD 论文阅读笔记简化
一. 算法概述 本文提出的SSD算法是一种直接预测目标类别和bounding box的多目标检测算法.与faster rcnn相比,该算法没有生成 proposal 的过程,这就极大提高了检测速度.针 ...
- 深度学习笔记(七)SSD 论文阅读笔记
一. 算法概述 本文提出的SSD算法是一种直接预测目标类别和bounding box的多目标检测算法.与faster rcnn相比,该算法没有生成 proposal 的过程,这就极大提高了检测速度.针 ...
- 深度学习中的序列模型演变及学习笔记(含RNN/LSTM/GRU/Seq2Seq/Attention机制)
[说在前面]本人博客新手一枚,象牙塔的老白,职业场的小白.以下内容仅为个人见解,欢迎批评指正,不喜勿喷![认真看图][认真看图] [补充说明]深度学习中的序列模型已经广泛应用于自然语言处理(例如机器翻 ...
- [原创]java WEB学习笔记31:会话与状态管理 session机制 概述(定义,session机制,session的声明周期,保存session的方式,Session的创建与删除)
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- [原创]java WEB学习笔记28: 会话与状态管理Cookie 机制
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- Redis 学习笔记(四)RDB 和 AOF 持久化机制
一.Redis 持久化简介 Redis 的持久化功能是区别于 Memcached 显著特性,数据持久化可以保证系统在发生宕机和重启后数据不会丢失,对于 redis 这种存储在内存中的数据库显得尤为重要 ...
- JS学习笔记:(一)浏览器页面渲染机制
浏览器的内核主要分为渲染引擎和JS引擎.目前市面上常见的浏览器内核可以分为这四种:Trident(IE).Gecko(火狐).Blink(Chrome.Opera).Webkit(Safari).这里 ...
- Spring 学习笔记(五)—— Bean之间的关系、作用域、自动装配
继承 Spring提供了配置信息的继承机制,可以通过为<bean>元素指定parent值重用已有的<bean>元素的配置信息. <?xml version="1 ...
随机推荐
- Oracle创建自增字段和修改方法-ORACLE SEQUENCE的简单介绍
http://blog.csdn.net/zhoufoxcn/article/details/1762351先假设有这么一个表: create table S_Depart ( DepartI ...
- ubuntu在terminal下安装mysql
安装的时候.仅仅须要在terminal中输入下面几条命令 1.sudo apt-get install mysql-server 2.apt-get isntall mysql-client 3. s ...
- 小白学习python之路(一):安装python3
引言 作为一个python小白,之前学的是java,不过听说python很流行,功能很强大,可以用很少的代码实现更强的功能,因此我也是被吸引了过来,并且把我的学习经历记录下来. 当然了,要学习 ...
- Maven的安装以及在IDEA中的配置
Maven的安装 之前的一篇博客中已经写到过了Maven的安装.这里就只给出链接了. http://www.cnblogs.com/tuhooo/p/5905569.html 版本虽然不同,但是安装的 ...
- 重新编译Nginx指导手册【修复静态编译Openssl的Nginx漏洞 】(转)
1. 概述 当前爆出了Openssl漏洞,会泄露隐私信息,涉及的机器较多,环境迥异,导致修复方案都有所不同.不少服务器使用的Nginx,是静态编译opensssl,直接将openssl编译到ng ...
- Mongodb亿级数据量的性能测试
进行了一下Mongodb亿级数据量的性能测试,分别测试如下几个项目: (所有插入都是单线程进行,所有读取都是多线程进行) 1) 普通插入性能 (插入的数据每条大约在1KB左右) 2) 批量插入性能 ...
- 05 redis中的Setbit位图法统计活跃用户
一:场景=>>>长轮询Ajax,在线聊天时,能够用到 Setbit 的实际应用 场景: 1亿个用户, 每个用户 登陆/做任意操作 ,记为 今天活跃,否则记为不活跃 每周评出: 有奖活 ...
- CSS -- 未解之疑
@.css那些事儿 -- 第9章 反馈表单 自己编写了CSS,可是红框中的横线比下面的要粗.对比作者的代码,发现可能与上面标题h3的height和line-height有关,但是不知道具体是为什么? ...
- uva 12083 Guardian of Decency (二分图匹配)
uva 12083 Guardian of Decency Description Frank N. Stein is a very conservative high-school teacher. ...
- 使用T4模板为EF框架添加数据库实体注释
网上有一个解决方法如下: http://www.cnblogs.com/stone_w/archive/2012/10/25/2738345.html 不过我试了下没解决太麻烦了 而且一旦EF要重新生 ...