NASNet学习笔记

  • Post author:
  • Post category:其他




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结构示意图



版权声明:本文为xjz18298268521原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。