NASNet--训练小数据的Cell以减少计算量

NAS的基本原理可以在我之前的那篇博文找到,有着详细的介绍:

NAS(神经结构搜索)学习记录

论文地址:CVPR 2018 Google Brain

《Learning Transferable Architectures for Scalable Image Recognition》

1. 背景

NAS介绍了如何使用强化学习学习一个完整的CNN网络或是一个独立的RNN单元,这一篇论文是神经网络架构搜索开篇之作NAS的集成和发展,也是由谷歌的Zoph等人提出来的,针对NAS论文中的缺点进行改进,在分类精度和训练资源、时间上,都优于前者;

但是NAS提出的网络的计算代价是相当昂贵的,仅仅在CIFAR-10上学习一个网络就需要500台GPU运行28天才能找到合适的结构。这使得NAS很难迁移到大数据集上,更不要提像ImageNet这样几百G的大数据规模了;(架不住谷歌有钱,有钱真的可以为所欲为~)

为了将NAS迁移到大数据集乃至ImageNet上,这篇文章提出了在小数据(CIFAR-10)上学习一个网络单元(Cell),然后通过堆叠更多的这些网络单元的形式将网络迁移到更复杂,尺寸更大的数据集上面;

NASNet架构特点是由两个AutoML设计的Layer组成——Normal Layer and Reduction Layer,这样的效果是不再需要相关专家用human knowledge来搭建卷积网络架构,直接用RNN把Hyperparameter计算出来,这样就实现了AI自动学习;

2. 亮点

  1. 和NAS一样,采用controller RNN来预测子网络参数,而且controller RNN不再用来预测每一层的网络参数,而是用来预测Cell里面的Block参数;
  2. 第一次提出了Cell(细胞,可以理解为网络单元)和Block的概念;
  3. 设计了一个新的search space(称为NASNet search space)使得训练出来的结构具有可转移性,以便 AutoML 找到最佳层并灵活进行多次堆叠来创建最终网络,在 CIFAR-10 上执行了架构搜索,并将学到的最好架构转移到 ImageNet 图像分类和 COCO 对象检测中;
  4. 提出了一种新的正则化技术ScheduleDropPath;

3. 原理

对于ImageNet这种大型的数据集来说,直接使用NAS计算代价昂贵,所以可以先在CIFAR-10这种小型数据集上搜索出一个好的模型,然后再迁移到ImageNet上进行训练,这种可转移性是作者通过设计一个新的search space实现的,NASNet search space中的卷积网络都由卷积层(称为"Cell")组成,这些卷积层有相同的结构,不同的权重。搜索“Cell”而不是整个网络结构好处在于:Cell有更好的泛化能力,并且计算代价没那么大;

该算法的思想即用一个称为控制器的循环神经网络(RNN)生成描述子网络结构的串,从而确定子网络的结构。然后在训练集上训练子网络,在验证集上计算其精度值。以精度值作为反馈信号,采用策略梯度算法更新控制器网络的参数。在迭代时,控制器会以给予那些有更高精度值的神经网络以更高的概率值,从而确保策略函数能够输出最优网络结构。
和NAS思想一样,只不过原来NAS中优化的算法是policy梯度,而论文中采用 Proximal Policy Optimization (PPO)算法:

4. 人工设计的网络结构

网络结构是根据目前主流的优秀网络结构(如ResNet和GoogleNet)的重复堆叠思想,使得RNN控制器学习得到也是基本单元convolutional cell,作者通过堆叠convolution cell从而构建整个网络结构,由于作者只是通过RNN学习到Cell,所以网络的总体结构还是需要人工预先设计,根据先验知识设计出如下图网络堆叠Cell得到的CIFAR_10和ImageNet:(先验知识~~,好吧)

Cell分两种:Normal和Reduction。当输入特征和输出特征的分辨率是一致时,采用Normal Cell,当输入特征的分辨率是输入特征的一半时,采用Reduction Cell。Reduction Cell的设计方法Normal Cell基本一样,只是在输入特征上添加了一个stride=2的卷积操作,降低分辨率。在整体网络架构中,Normal Cell和Reduction Cell的设计原则是每N个Normal Cell中插入一个Reduction Cell,最后使用RNN控制器用来预测这两种Cell,如下图所示。

在训练的时候,只选择一种Normal和Reduction Cell,同一个网络中相同类型的Cell结构是共享的,所以controller RNN只需要预测一个Cell的结构即可,这种方法设计极大地减小了搜索的次数和范围;

作者在训练的过程还加了一种额外的技巧,即先在小的数据集上(如Cifar-10)搜索Cell结构,等搜索结果出来后,再堆叠更多的Cell,应用在大数据集上(如ImageNet)。这样在搜索的过程中,子网络模型训练的时间便大幅减小,提高搜索的效率;

在Cifar-10数据上,论文使用了500个GPU,搜索了4天的时间。相比NAS的实验,搜索效率提升了7倍。在训练子网络时,采用Scheduled DropPath的方法,以一定的概率(随着迭代的次数线性增加)随机扔掉Cell里的某些路径。

5. RNN控制器(controller RNN)

每个网络单元由B个网络块(block)组成,在实验中  。每个块的具体形式如图右侧部分,每个块有并行的两个卷积组成,它们会由控制器决定选择哪些Feature Map作为输入(图中灰色部分)以及使用哪些卷积(图中黄色部分)来计算输入的Feature Map。最后它们会由控制器决定如何合并这两个Feature Map。

Block的参数预测步骤有:

1. 从输入候选范围内选择两个隐状态作为Block的两个输入:

  • 从第h_{i-1}个Feature Map或者第h_{i}个Feature Map或者之前已经生成的网络块中选择一个Feature Map作为hidden layer A的输入;
  • 采用类似的方法为hidden Layer B选择一个输入;

2. 从操作候选空间选择operation作为步骤1中两个输入的操作:

  • 为hidden layer A选择一个操作;
  • 为hidden Layer B中选择一个操作;

3. 选择一个操作(add,concatenate)用来结合上述卷积的两个输出feature map从而产生一个new hidden state,并将其添加到hidden states中。

预测步骤总共会循环B次( 考虑到计算资源的限制,论文限制了search space,设置B=5),直至预测出Cell所有Block结构为止。

6. 搜索出来的Cell结构

下图为NASNet-A的Cell结构,可以看出虽然作者没有设计类似ResNet那样的residual connection结构(或者叫skip connection),但是这些Cell在训练过程中自己学会了这种skip connection(虚线连接),这个过程就是上图两个灰色矩形框的select过程:

其他两种基于不同的search spaces得到的NASNet-B和NASNet-C的Cell结构:

 NASNet-B结构:

 NASNet-C结构:

 NASNet-B和NASNet-C的B=4 ,NASNet-B没有将未使用的hidden states直接串联起来,相反,在卷积单元内创建的所有hidden states,即使它们当前被使用,也被送到下一层。另外, NASNet-B和NASNet-C还在combine操作后使用了layer normalization或instance normalization.

7. 超参数选择

 强化学习:

  1. NASNet进行迁移学习时使用的优化策略是Proximal Policy Optimization(PPO);
  2. 作者尝试了均匀分布的搜索策略,效果略差于策略搜索。

Scheduled DropPath:

In DropPath, each path in the cell is stochastically dropped with some fixed probability during training. In our modified version, ScheduledDropPath, each path in the cell is dropped out with a probability that is linearly increased over the course of training.

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

NASNet需要人为设定的超参数:

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

8. 总结

NASNet最大的贡献是解决了NAS无法应用到大数据集上的问题,它使用的策略是先在小数据集上学一个网络单元,然后在大数据集上堆叠更多的单元的形式来完成模型迁移;

大量的参数都是人为设定的,网络的搜索空间更倾向于密集连接,优点是减小了强化学习的搜索空间,从而提高运算速度,在相同的硬件环境下,NASNet的速度要比NAS快7倍;

搜索出来的好的结构不一定是对称的;

没钱整GPU怎么办(~ ~)

参考

NASNet详解

论文笔记-NASNet 

NASNet总结 

仅为学习记录,侵删! 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖虎记录学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值