from:https://blog.csdn.net/xjz18298268521/article/details/79079008

NASNet总结

论文:《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。的更多相关文章

  1. muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制

    目录 muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制 eventfd的使用 eventfd系统函数 使用示例 EventLoop对eventfd的封装 工作时序 runInLoo ...

  2. 深度学习笔记(七)SSD 论文阅读笔记简化

    一. 算法概述 本文提出的SSD算法是一种直接预测目标类别和bounding box的多目标检测算法.与faster rcnn相比,该算法没有生成 proposal 的过程,这就极大提高了检测速度.针 ...

  3. 深度学习笔记(七)SSD 论文阅读笔记

    一. 算法概述 本文提出的SSD算法是一种直接预测目标类别和bounding box的多目标检测算法.与faster rcnn相比,该算法没有生成 proposal 的过程,这就极大提高了检测速度.针 ...

  4. 深度学习中的序列模型演变及学习笔记(含RNN/LSTM/GRU/Seq2Seq/Attention机制)

    [说在前面]本人博客新手一枚,象牙塔的老白,职业场的小白.以下内容仅为个人见解,欢迎批评指正,不喜勿喷![认真看图][认真看图] [补充说明]深度学习中的序列模型已经广泛应用于自然语言处理(例如机器翻 ...

  5. [原创]java WEB学习笔记31:会话与状态管理 session机制 概述(定义,session机制,session的声明周期,保存session的方式,Session的创建与删除)

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  6. [原创]java WEB学习笔记28: 会话与状态管理Cookie 机制

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  7. Redis 学习笔记(四)RDB 和 AOF 持久化机制

    一.Redis 持久化简介 Redis 的持久化功能是区别于 Memcached 显著特性,数据持久化可以保证系统在发生宕机和重启后数据不会丢失,对于 redis 这种存储在内存中的数据库显得尤为重要 ...

  8. JS学习笔记:(一)浏览器页面渲染机制

    浏览器的内核主要分为渲染引擎和JS引擎.目前市面上常见的浏览器内核可以分为这四种:Trident(IE).Gecko(火狐).Blink(Chrome.Opera).Webkit(Safari).这里 ...

  9. Spring 学习笔记(五)—— Bean之间的关系、作用域、自动装配

    继承 Spring提供了配置信息的继承机制,可以通过为<bean>元素指定parent值重用已有的<bean>元素的配置信息. <?xml version="1 ...

随机推荐

  1. jquery:给正则表达式添加变量

    http://www.2cto.com/kf/201402/277766.html 正则表达式普通用法:var checkString=/^.*\S+.*$/;  //注意正则表达式没有引号 chec ...

  2. Android UI开发神兵利器之Icon

    好的设计离不开Icon 话不多.介绍2个国外的站点,一个用来找Icon,一个用来搞页面设计 http://dryicons.com/free-icons/ http://www.webdesignsh ...

  3. oracle学习之路(四) ---------PL/SQL 表,二维数组(TABLE)

    LOB类型 ORACLE提供了LOB (Large OBject)类型.用于存储大的数据对象的类型.ORACLE眼下主要支持BFILE, BLOB, CLOB 及 NCLOB 类型. NCLOB 存储 ...

  4. 删除反复行SQL举例

    删除反复行SQL实验简单举例 说明:实验按顺序进行.前后存在关联性.阅读时请注意.打开文件夹更便于查看. 构造实验环境: SQL> select count(*) from emp;   COU ...

  5. Chrome自带恐龙小游戏的源码研究(完)

    在上一篇<Chrome自带恐龙小游戏的源码研究(七)>中研究了恐龙与障碍物的碰撞检测,这一篇主要研究组成游戏的其它要素. 游戏分数记录 如图所示,分数及最高分记录显示在游戏界面的右上角,每 ...

  6. ubuntu boost.python

    安装boost(未尝试只安装 libboost-python-dev) sudo apt-get install libboost-all-dev 新建hello_ext.cpp,输入以下代码 1 c ...

  7. 设置jvm运行内存

    :1.右击项目—Bulid Path—Configure Build Path—Libraries,找到JRE System Libraary[Sun JDK 1.6.0_13],选中JRE Syst ...

  8. 1-1:CSS3课程入门之属性选择器

    div[name=jewave] 选取属性名为name且属性值是"jewave"的元素 div[name^=jewave]选取属性名为name且属性值以"jewave&q ...

  9. eclipse没有(添加)"Dynamic Web Project"选项的方法

    建议使用代理lantern,否则可能要花很长时间显示和下载插件 http://www.dabu.info/eclipse-no-add-dynamic-web-project-option.html ...

  10. JS常用方法手记

    1.判断arr数组是否含有元素str,没有返回-1 arr.indexOf(str) 2.遍历arr数组,k为键,v为值 arr.map((v, k) => { return;}) 3.arr数 ...