NASNet

最近在看NASNet,但是NASNet是基于NAS来的,于是还得先看NAS的论文,学习过程中看到几篇好的文章,mark下
论文笔记NAS
NAS综述
NAS详解

NASNet论文理解
NASNet详解
解读NASNet
NASNet
NASNet学习笔记
NASNet
NASNet论文笔记

但觉得还是自己总结下,才能更好地消化。

背景
NASNet网络的提出源于Learning Transferable Architectures for Scalable Image Recognition,这篇文章是由Google Brain的大佬们Barret Zoph, Vijay Vasidevan, Jonathon Shlens, Quoc V.Le发表的,开源了源码。它是NAS(Neural Architecture Search)的升级版。

NAS讲的是利用强化学习(Reinforcement Learning)来学习一个好的网络结构,具体讲就是利用RNN来生成神经网络模型的描述,然后使用强化学习来训练这个RNN,使得生成的神经网络模型精度最大化。

但是用NAS进行计算的代价是相当昂贵的,仅仅在CIFAR-10上学习一个网络就需要500台GPU运行28天才能找到合适的结构,因此很难将NAS迁移至大数据集上,就更不用说ImageNet这种几百g的大规模数据了。

因此,Google Brain的大佬们就在这个基础上做了改进,基于谷歌之前推出的AutoML来首先在小数据集上(CIFAR-10)上进行神经网络结构搜索,学习出一个网络单元(Cell),然后通过堆叠更多的网络单元,将网络迁移至大规模数据集如ImageNet图像分类和COCO对象检测数据集上进行训练。

这种可转移性是作者通过设计一个新的search space实现的。search space中的卷积网络都由卷积层(称为Cell)组成,这些卷积层(cell)有相同的结构,不同的权重。搜索“cell”而不是整个网络结构的好处:这样不仅快,而且,cell有更好的泛化能力

建议:
NASNet这篇论文中许多关键点都是基于NAS做的,因此建议先看懂NAS这篇论文,再来阅读NASNet

网络结构
NASNet方法的中心思想和之前的一样:
NASNet_第1张图片
NASNet仍然采用NAS的核心机制自动生成网络:利用RNN控制器预测一个网络结构,接着训练网络直到收敛,在验证集上测试得到一个准确率R。然后将R反馈给RNN控制器去更新RNN控制器的参数,从而产生更好的网络结构。区别在于NAS中优化的算法是policy梯度,而NASNet中采用的Proximal Policy Optimization(PPO)算法。

NASNet架构的特点是由两个AutoML设计的layer组成:

  • Normal Layer:特征图经过此cell后大小不变,每个cell由非常多的小单元组成,每个小单元都有五个部分
  • Reduction Layer:输出feature map对输入feature map进行了一次降采样,在reduction cell中,对使用input feature作为输入的操作(卷积或池化)会默认步长为2
    NASNet_第2张图片
    这样的效果是不再需要相关专家用human knowledge来搭建卷积网络结构,直接用RNN把Hyperparameter计算出来,实现AI自动学习。但是网络只预测能够堆叠的单元,而网络的整体结构仍需认为设计。网络总体结构如下:
    NASNet_第3张图片
    上图分别为论文基于两种Cell在Cifar-10和ImageNet上构建的网络结构,借鉴了主流的网络结构(如ResNet和GoogleNet)的重复堆叠思想。当spatial activation的大小减小时,输出的通道数量都翻倍,这是为了大致上能够维持hidden state的维度。因此,RNN控制器学习得到也只是Normal cell和Reduction cell的结构。

NASNet Search Space
NASNet_第4张图片
每个Block有两个hidden states输入hi和h(i-1),给定RNN两个初始的hidden states,控制器RNN会预测余下的结构,整个流程如下图所示:
NASNet_第5张图片
每个网络单元由B的网络块(block)组成,在实验中B=5。每个块的具体形式如图右侧部分所示,每个块有并行的两个卷积组成,他们会由控制器决定哪些feature map作为输入(灰色部分)以及使用哪些运算(黄色部分)来计算输入的feature map。最后它们会由控制器决定如何合并这两个feature map。两个示意图中绿色的部分为5个,即重复了5次基本模块的预测。每种方法每种操作都对应于一个softmax损失,这样重复了B次,得到一个最终block模块,最终的损失函数就有5B个。
每一个基本模块的生成流程(5步)如下:
步骤1:从h(i-1)个feature map或者第h(i)个feature map或者之前已经生成的网络块中选择一个feature map作为hidden layer A的输入
步骤2:从与步骤1相同的选项中选择第二个隐藏状态,例如上图基本模块的hidden layerB
步骤3:选择要应用于步骤1中选择的隐藏状态的操作(黄色框)
步骤4:选择要应用于步骤2中选择的隐藏状态的操作(黄色框)
步骤5:选择一个方法来组合步骤3和步骤4的输出来创建(绿色框)

其中,在步骤3、4可以选择的操作有:

  • 直接映射
  • 1*1卷积
  • 3*3卷积
  • 3*3深度可分离卷积
  • 3*3空洞卷积
  • 3*3平均池化
  • 3*3最大池化
  • 13卷积 + 31卷积
  • 5*5深度可分离卷积
  • 5*5最大池化
  • 7*7深度可分离卷积
  • 7*7最大池化
  • 17卷积 + 71卷积
    在步骤5中可以选择的合并操作有:
  • 单位加
  • 拼接
    最后所有生成的feature map通过拼接操作合成一个完整的feature map

为了能让控制器同时预测Normal Cell 和Reduction Cell,RNN会有25B个输出,其中前5B个输出预测Normal Cell的B个块,后5B个输出预测Reduction Cell的B个块,RNN使用的是单层100个隐层节点的LSTM

这篇论文和NAS最不一样的地方就是该文中的new search space,NAS中的search space包含了filter的size,stide等,而这篇文章通过构造convolution cell的方式大大降低了search的难度。

本文中基于不同的search spaces得到三种网络结构,NASNet-A、NASNet-B和NASNet-C:
NASNet-A:
NASNet_第6张图片
NASNet-B:
NASNet_第7张图片
NASNet_第8张图片
NASNet-C
NASNet_第9张图片
NASNet_第10张图片
NASNet-B和NASNet-C中的B=4,NASNet-B没有将未使用的hidden states直接串联起来,相反,在卷积单元内穿件的所有hidden states,即使它们当前被使用,也被送到下一层。另外,NASNet-B和NASNet-C还在combine操作后使用了layer normalization或instance normalizattion

可以看出虽然作者没有涉及类似ResNet那样的residual connections(skip connection),但是这些cell在训练过程中自己学会了这种skip connections(NASNet-A中的虚线连接),这个学习的过程就是上图中前面两个灰色矩形框的select过程(可以和NAS论文中涉及的skip connections结构对比,NAS中采用的sigmoid结构表达层与层之间的连接关系),而且作者发现当手动插入residual connections时并没有提高模型的效果。

Scheduled Drop Path
在优化类似于Inception的多分支结构时,以一定概率随机丢弃部分分支是避免过拟合的一种非常有效的策略,如DropPath。但是DropPath对NASNet不是特备好,在NASNet的Scheduled Drop Path中,丢弃的概率会随着训练时间的增加线性增加,因为:训练的次数越多,模型越容易过拟合,DropPath的避免过拟合的作用才能发挥的越有效

其他超参数
定义网络的表示方法,因为Figure2那张图中还有两个超参数未确定:
1.Cell重复的数量N
2.初始的filter的数量

网络结构的符号定义为:“N@倒数第二层filter的数量”,比如“4@64”代表Cell重复数量为4,倒数第二层filter数量为64的网络

在NASNet中,强化学习的搜索空间大大减小,需要人为设定超参数:

  1. .激活函数统一使用RELU,实验表明ELU nonlinearity效果略优于ReLU
  2. 全部使用valid卷积,padding值由卷积核大小决定
  3. Reduction cell的feature map的数量需要乘以2,Normal cell数量不变。初始数量人为设定,一般来说数量越多,计算越慢,效果越好
  4. Normal cell的重复次数(N)人为设定
  5. 深度可分离卷积在深度卷积核单位卷积中间不使用BN或Relu
  6. 使用深度可分离卷积时,该算法执行两次
  7. 所有卷积遵循Relu->卷积->BN的计算顺序
  8. 为了保持Feature map的数量的一致性,必要的时候添加1*1卷积

总结

  • 论文延续了NAS论文的核心机制使得能够自动产生网络结构
  • 采用reset和Inception重复使用block结构思想
  • 利用迁移学习将生成的网络迁移到大数据集上提出一个new search space,并在实验中搜索得到最优的网络结构NASNet
  • 提出新的正则化技术,ScheduledDropPath,是DropPath的改进版,可以大大提高了模型的泛化能力
  • DropPath方法在训练过程中以随机概率p进行drop,该概率训练中保持不变,而scheduedDropPath方法在训练过程线性的提高随机概率p

你可能感兴趣的:(Deep,learning)