首发于SIGAI
从基础网络到NAS经典论文梳理解读

从基础网络到NAS经典论文梳理解读

原创声明:本文为 SIGAI 原创文章,仅供个人学习使用,未经允许,不能用于商业目的。

其它机器学习、深度学习算法的全面系统讲解可以阅读《机器学习-原理、算法与应用》,清华大学出版社,雷明著,由SIGAI公众号作者倾力打造。

本文PDF全文链接:从基础网络到NAS经典论文梳理

本文作者:纳西格格

基础网络Base Mode


Lenet LeCun 1998年

《Gradient-based learning applied to document recognition》


优点:引入卷积、激活、池化、全连接





Alexnet Alex 2012年

《ImageNet Classification with Deep Convolutional Neural Networks》


优点:更深的网络、数据增广、RELU、Dropout、LRN、多GPU训练(分组卷积)对输入数据随机裁剪、用RELU代替Sigmoid、以一定概率失去失活的神经元不进行前向和后向传播,防止过拟合、局部响应归一化。




Zfnet 纽约大学2013年

《Visualizing and Understanding Convolutional Networks》


优点:ZF-Net只是将AlexNet第一层卷积核由11变成7,步长由4变为2,第3,4,5卷积层转变为384,384,256。



VGG 牛津大学 2014年

《Very Deep Convolutional Networks for Large-Scale Image Recognition》


优点:VGG采用的是一种Pre-training的方式,这种方式在经典的神经网络中常见得到,就是先训练一部分小网络,然后再确保这部分网络稳定之后,再在这基础上逐渐加深。表从左到右体现的就是这个过程,并且当网络处于D阶段的时候,效果是最优的,因此D阶段的网络也就是VGG-16了!E阶段得到的网络就是VGG-19了!VGG-16的16指的是conv+fc的总层数是16,是不包括max pool的层数!使用更小的卷积核3X3,1X1,3X3减小计算参数,1X1减小输入维度,同时都增加了非线性。




Nin 新加坡国立大学 2014年

《 network in network 》



优点:引入多层感知机(MLP),MLP 能拟合任意函数,不需要做先验假设.

MLP与卷积神经网络结构天然兼容,可以通过BP方便的做训练;

MLP本身也能做的较深,且特征能够得到复用;

通过MLP做卷积可以起到feature map级联交叉加权组合的作用,能提升特征抽象能力;

最后一层卷积feature map的个数与分类类别数一致,这种一致性可以产生相对较少的feature map,比如有10个分类和10个n×n的feature map;

每个feature map对应一个分类,并对整个feature map求平均值,这种方法能提高空间变换的稳定性,但损失了位置信息(例如在目标检测中位置信息很重要),比如10个n×n的feature map会得到10个实数值组成的一维向量;

用softmax做归一化,注意这里要区分传统CNN下的softmax激活和softmax归一,这一层没有需要优化的参数。

传统CNN与Mlpconv的区别如下图:



•这一时期设计网络常用方法总结:


数据处理,随机裁剪等;

使用好的激活函数,relu替换sigmoid,防止过拟合采用dropout,lrn,卷积核变小减少计算量和参数,增加非线性,采用1X1减少维度,

加速训练分组训练;


Googlenet google 2014年

《Going deeper with convolution》


优点:引入inception模块,使用Network in Network中1x1 conv及AvgPool替换fc,

想通过一种spared layer architecture来实现较优的多维度特征表达,然后通过对这种结构

进行叠加,中间不时再插入一些MaxPool层以减少参数数目(从而节省内存与计算开销),

最终就行成了Inception v1分类模型。




Inception-v1/v2/v3/v4:

Inception-v1 googlenet《Going deeper with convolution》


优点:提高特征提取单元提取特征能力,提高单层的提取特征的能力,提取不同尺寸的信息,丢失信息很少。整个特征空间由N个不连续局部特征空间集合组成。使用1X1卷积减少计算量。采用这个密集结构避免稀疏的结构设计导致较多的cache miss及内存地址非连续搜索的overhead。




Inception-v2 google 2015年

《 Rethinking the Inception Architecture for Computer Vision 》


优点:加入BN,5X5改为俩个3X3,引入1X1减少输入维度和计算量。但是在早期慎重使用bottleneck模块,可以在模型较靠后深层使用,可以size很小。深度和宽度同时增加,网络匀称。将对称的conv计算换为非对称的conv计算。Inception-v1中间增加的分类层加入bn或者drop层可以提供分类精度。传统下采样方案要么损失信息,要么计算量增加。




Inception-v3 google 2015年

《 Rethinking the Inception Architecture for Computer Vision 》


优点:从input到output,feature map的宽和高基本都会逐渐变小,但是不能一下子就变得很小。 另外输出的维度channel,一般来说会逐渐增多(每层的num_output),否则网络会很难训练。对输入先进行降维。卷积核分解为NX1和1XN。


使用Auxiliary Classifiers,在网络中间层加上分类器,计算辅助失真和梯度,然后把这个梯度加到常规网络的梯度上,有效解决了梯度消失的现象,其实这样做的方式,呼应了ResNet中解决梯度消失的问题得方法,虽然ResNet表面上看起来loss是在最后一层计算的,但是其实本质上最后一层的loss其实在ResNet的子网络中都有计算,也就相当于GoogLenet中把loss层加上网络中间层的方式。


同时进行步长为2的卷积和池化,然后串联,从图中可以看出降低尺寸是用过卷积加上合适的stride实现的,当然也有一个支路是通过pooling的方式实现,这种方式可以有效避免信息的损失。比inception-v2在中间分类层多bn或者drop操作。Label smoothing使用label的先验分布信息对softmax loss修正。


H\left(q^{\prime}, p\right)=-\sum_{k=1}^{K} \log p(k) q^{\prime}(k)=(1-\epsilon) H(q, p)+\epsilon H(u, p)





Inception-v4 google 2016年

《 Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning 》


优点:Inception-v3包括了4个卷积模块运算(1个常规卷积块+3个inception结构),Inception-v4

变成了6个卷积模块。










Inception resnet-v1 google 2016年

《 Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning 》


优点:在inception-resnet中所用的inception-resnet模块里都在inception子网络的最后加入了一个1x1扩展conv操作用于使得它的输出宽度(channels数目)与子网络的输入宽度相同,从而方便相加。






Inception resnet-v2 google 2016年

《 Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning 》


优点:对inception-resnet网络中的residual模块的输出进行scaling(如以0.1-0.3),那么可以让它的整个训练过程更加地稳定。inception v3/v4与inception-resnet v1/v2模型的收敛速度对比,residual learning的引入可以使得inception网络收敛速度更快,但最终它们达到的精度却类似。








•Googlenet系列网络拓扑结构设计思路:


借鉴network in network提高单层提取多维度特征,使用这个密集结构防止cache miss和内存不连续搜索over head。采用1X1卷积减小计算量。将5X5的卷积改为2个3X3卷积,网络最开始使用普通卷积或者简单的inception模块,复杂的inception模块或者bottleneck可以在靠后的深层网络中使用,size可以小一些。可以将对称卷积改为非对称卷积,比如1XN,NX1。可以在网络中加入中间分类层,类似resnet是为了解决梯度消失,但是可以加入bn或者drop。网络最好是同时增加宽度、深度,匀称些。传统下采样容易丢失信息或者计算量增加,采用步长为2的卷积和池化。采用lable smoothing中lable的先验分布修正softmax loss。当采用resnet时可以加入1X1卷积使得inception输出与输入channels数目相同,方便相加。可以对于inception-resnet中inception输出加入scaling提高训练稳定性,加入resnet learning可以提高训练收敛速度,但是精度没变。可以使用averagepooling替换全连接层。


Resnet v1 v1.5 何恺明 2015年

《deep residual learning for image recognition》


优点:层数比较深;引入残差单元解决梯度消失考虑到x的维度与F(X)维度可能不匹配情况,需进行维度匹配。


\begin{aligned} \mathbf{y}_{l}=& h\left(\mathbf{x}_{l}\right)+\mathcal{F}\left(\mathbf{x}_{l}, \mathcal{W}_{l}\right) \\ & \mathbf{x}_{l+1}=f\left(\mathbf{y}_{l}\right) \end{aligned}



这里论文中采用两种方法解决这一问题(其实是三种,但通过实验发现第三种方法会使performance急剧下降,故不采用):


1、zero_padding:对恒等层进行0填充的方式将维度补充完整。这种方法不会增加额外的参数


2、projection:在恒等层采用1x1的卷积核来增加维度。这种方法会增加额外的参数




Resnet v2 何恺明2016年

《Identity Mappings in Deep Residual Networks》


优点:直接使用Identity mapping,即替换h映射函数比其它形式函数精度高。为了实现f函数直接Identity mapping将BN + ReLu放到Conv之前,模型训练的速度加块了、精度提高了、也更容易回避overfitting的问题了。


\mathbf{x}_{L}=\mathbf{x}_{l}+\sum_{i=l}^{L-1} \mathcal{F}\left(\mathbf{x}_{i}, \mathcal{W}_{i}\right)



\frac{\partial \mathcal{E}}{\partial \mathbf{x}_{l}}=\frac{\partial \mathcal{E}}{\partial \mathbf{x}_{L}} \frac{\partial \mathbf{x}_{L}}{\partial \mathbf{x}_{l}}=\frac{\partial \mathcal{E}}{\partial \mathbf{x}_{L}}\left(1+\frac{\partial}{\partial \mathbf{x}_{l}} \sum_{i=l}^{L-1} \mathcal{F}\left(\mathbf{x}_{i}, \mathcal{W}_{i}\right)\right)




Resnext 何恺明 2017年

《Aggregated Residual Transformations for Deep Neural Networks》


优点:结合resnet和inception resnet多个分支,但是每个分支结构相同,减少参数。运用分组卷积。一是如果一个block输出同样大小的channel size,那么blocks输入、输出有着相同的hyper-parameters(即width和filter sizes);二是若其输出与输入有着不同的大小(如downsampling操作),那么就需要相应地扩大filters的数目。防止层数增多信息丢失。增加cnn表达能力可以通过提高深度(梯度消失)、宽度(参数增多)、修改网络(增加一个block中分支数目)cardinatity比height、width更有效。





Res2net 南开大学 2019年

《res2net a new multi scale backbone architecture》


优点:Res2Net 是在粒度级别上来表示多尺度特征并且增加了每层网络的感受野范围。与现有的增强单层网络多尺度表达能力的 CNNs 方法不同,它是在更细的粒度上提升了多尺度表征能力。


Res2Net 模块的网络性能更好,在更多视觉任务上的实验结果均显示 Res2Net 模块可以显著的提升现有算法的指标。它揭示了CNN 网络里面除了深度,宽度等现有维度之外,还可以有新的维度“尺度”。



\mathbf{y}_{i}=\left\{\begin{array}{ll}{\mathbf{x}_{i}} & {i=1} \\ {\mathbf{K}_{i}\left(\mathbf{x}_{i}+\mathbf{y}_{i-1}\right)} & {1<i \leqslant s}\end{array}\right.



最后y1,y2,y3,y4 进行concat操作,使得channel保持不变。可以用3x3的组卷积(group convolution)替代原3x3卷积,可以加入SE 单元(block)。



•Resnet系列设计网络拓扑结构思路:


层数比较深可以采用引入残差单元,防止梯度消失。用zero padding补充0将维度补完整,针对复杂datasets不增加参数,也可以采用1X1补充完整,但是会增加参数。可以使用identity mapping替换其他形式connection,精度会提高。而且采用identity mapping可以使信息直接向前向后传递,而且采用bn、relu的pre-activation可以加快训练速度、提高精度防止过拟合。可以结合resnet和inception,为了减少参数,每个分支模型一样。提高cnn表达能力,可以增加宽度、深度,但是最有效是增加新的参数,即每一层block分支数,同时可以采用分组卷积。如果下采样,必须增加filter数。提高单层网络多尺度表达能力和感受野,可以在更细的粒度上拆分一个特征,加入分组卷积和se block。


SqueezeNet Stanford 2016年

《 SQUEEZENET: ALEXNET-LEVEL ACCURACY WITH 50X FEWER PARAMETERS AND <0.5MB MODEL SIZE 》


优点:


一、将3X3的conv filters替换为1X1的conv filters。

二、减少输入至3X3conv layer的feature maps的input channels数目。

三、将网络中所需的downsample操作后推迟。


Fire module:由两部分构成,分别为squeeze layer与expand layer。其中squeeze layer为1x1的conv layer,主要用于将输入此module的input channels数目进行缩减;而expand layer包含1x1的conv layer与3x3的conv layer,主要用于真正的feature maps的特征再融合,再表达。s1x1 = SR * (e1x1 + e3x3)。而SR称为缩减系数。




优点:微观设计中:发现开始随着SR增加,最终的网络accuracy确会提升,但其边际提升值却是愈来愈小,另外SR自0.75升至1时accuracy不升反降。3x3 conv的比例为0.5时,模型精度达到了最大为85.3%。


宏观设计中:squeezenet + simple bypass性能更好



Xception google 2017年

《Xception: Deep Learning with Depthwise Separable Convolutions》


优点:替换inception模块为depthwiseconv+pointwiseconv,又另外加了residual connects。inception module中使用了大量的1x1 conv来重视学习channels之间的关联,然后再分别使用3x3/5x5(两个3x3)等去学习其不同维度上的单个channel内的空间上的关联;图2只使用3x3 convs来表示单个channel内的空间关联关系,图3等价于先使用一个1x1 conv来学习input feature maps之上channels间特征的关联关系,然后再将1x1 conv输出的feature maps进行分割,分别交由下面的若干个3x3conv来处理其内的空间上元素的关联关系。图4将每个channel上的空间关联分别使用一个相应的conv 3x3来单独处理。引入residual learning加快收敛




优点:Entry flow主要是用来不断下采样,减小空间维度;中间则是不断学习关联关系,优化特征;最终则是汇总、整理特征,用于交由FC来进行表达。



Mobilenet v1 google 2017年

《mobilenets:efficient convolutional neural networks for mobile vision applications》


优点:采用depthwise和pointwise卷积,节省计算量和参数。使用缩减参数影响每层宽度,

使用分辨率参数影响featureMap大小。




Mobilenet v2 google 2018年

《mobilenetv2:inverted residuals and linear bottlenecks》


优点:采用深度可分离卷积,第一步叫深度卷积(depthwise convolution),它通过对每个输入通道执行利用单个卷积核进行滤波来实现轻量级滤波,第二步是一个1x1卷积,叫做逐点卷积(pointwise convolution),它负责通过计算输入通道间的线性组合来构建新的特征。


引入线性瓶颈(linear bottlenecks),1. 如果感兴趣流形在ReLU之后保持非零值,那么它对应到一个线性变换。2. ReLU能够保存输入流形的完整信息,但是输入流形必须存在于输入空间的一个低维子空间中。


反向残差(inverted residuals)经典的残差连接的层都是通道数非常多的层,然而,反向残差连接的是瓶颈层。


将输入瓶颈尺寸和内部尺寸的比值称为扩展率。使用RELU6低精度计算更加鲁棒。使用宽度乘法器调整分辨率。内存有效管理方式。瓶颈残差块一个瓶颈块操作F(x)由三个操作组成:F(x)=[A⋅N⋅B]x,其中A是线性变换,N是非线性变换,B也是一个线性变换。




优点:对于低维的“兴趣流形”输入,可以在卷积块中插入线性瓶颈来捕获。即将深度可分离卷积中 1*1 卷积后的ReLU变成线性变换: DepthConv(3*3)+ BN + ReLU + Conv(1*1)+ BN + linear 。与普通的残差块相比,普通残差块是中间窄,两边宽,深度可分离卷积的反转残差块是两边窄中间宽,因为中间采用深度可分离卷积,所以非常节省参数。将深度可分离卷积与残差模块组合,即带bottleneck的residual module,其上的3x3 conv使用了效率更高的DepthwiseConv。




Mobilenet v3 google 2019年

《 Searching for MobileNetV3 》


优点:通用的骨干网+特定任务网络head成为一种标准的设计模式。没有新的block,神经架构的搜索。资源受限的NAS(platform-aware NAS)与NetAdapt,前者用于在计算和参数量受限的前提下搜索网络的各个模块,所以称之为模块级的搜索(Block-wise Search),后者用于对各个模块确定之后网络层的微调。新的激活函数:


MobileNetV3 是神经架构搜索得到的模型,其内部使用的模块继承自:

1.MobileNetV1 模型引入的深度可分离卷积。

2.MobileNetV2 模型引入的具有线性瓶颈的倒残差结构。

3.MnasNet 模型引入的基于squeeze and excitation结构的轻量级注意力模型。




优点:不同的宽度参数和分辨率参数。使用swish激活函数代替ReLU能够有效提高网络的精度,但是swish的计算量太大了。因此作者对swish进行了数值近似,提出h-swish(hard version of swish)函数。





Sufflenet v1 megvii 2017年

《ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices》


优点:结合了channel shuffle的group convolutions。1x1 conv所构成的bottleneck模块进行优化,因此它的整体unit设计主要是从之前的Xception等网络中演变而来。1X1conv占用很多计算消耗。groups数目的模块可带来网络表达能力(以及最终分类准确率)的稳定提高。





Sufflenet v2 megvii 2018年

《ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design》


优点:高效cnn网络设计的四个准则:


一、当输入、输出channels数目相同时,conv计算所需的MAC(memory accesscost)最为节省。

二、过多的group convolution会加大MAC开销。

三、网络结构整体的碎片化会减少其可并行优化的程序。

四、element-wise操作会消耗较多的时间,不可小视。


弃用了1x1的group convolution操作,而直接使用了input/output channels数目相同的1x1普通conv。提出了一种ChannelSplit新的类型操作,将module的输入channels分为两部分,一部分直接向下传递,另外一部分则进行真正的向后计算。到了module的末尾,直接将两分支上的output channels数目级连起来,从而规避了原来ShuffleNet v1中Element-wise sum的操作。然后我们再对最终输出的output feature maps进行RandomShuffle操作,从而使得各channels之间的信息相互交通。采用mobilenet中的缩减系数。




>



Densenet 康奈尔大学 2018年

《Densely Connected Convolutional Networks》


优点:有效地复用各layers之间的feature map计算,从而减少每层需用的训练参数。


DenseNet不只是使用了更前面的一个layer的输出作为后继layer的输入,而是使用了前面所有与它具有同等feature map size的layers。另外DenseNet在使用这些pre layers作为输入时也没有将它们相加(像Resnet那样),而是通过直接简单级连的方式向后传播。Hl函数准确讲是一个复合函数集合。在DenseNet中它共包含三个操作分别为BN + ReLu + Conv(3x3)。transition layers它亦是由三项操作来完成,分别是BN + Conv(1x1) + AvgPool(2x2)。如果每个layer分别产生出k个output feature maps,那么第l个layer(Hl)所对应的输入feature maps应为k0 + (l-1) X k。此处k0对应着input layer的输入feature maps channels。一般k可为12。这里k亦称为增加速率(Growth rate)。


x_{l}=H_{l}\left ( \left [ x_{0},x_{1},...,x_{l-1}\right ]\right )


在每层3x3 conv操作前引入了1x1 conv的bottle neck layer,有效地将输入feature maps数量控制在合理的范围内。所以每个layer真正的计算(Hl)实际为:BN-ReLU-Conv(1x1)-BN-ReLU-Conv(3x3)。将引入了Bottleneck layers的DenseNet称为DenseNet-B。即在transition layers上所用的1x1 conv上使用了压缩参数theta(0< theta <=1)。在论文中将引入压缩参数的DenseNet称为DenseNet-C,而将同时引入bottleck layers与压缩参数的DenseNet称为DenseNet-BC。





Squeeze-and-excitation networks momenta 2018年

《 Squeeze-and-excitation networks》


优点:采用了一种全新的「特征重标定」策略。具体来说,就是通过学习的方式来自动获取到每个特征通道的重要程度,然后依照这个重要程度去提升有用的特征并抑制对当前任务用处不大的特征。



首先是Squeeze 操作,我们顺着空间维度来进行特征压缩,将每个二维的特征通道变成一个实数,这个实数某种程度上具有全局的感受野,并且输出的维度和输入的特征通道数相匹配。它表征着在特征通道上响应的全局分布,而且使得靠近输入的层也可以获得全局的感受野,这一点在很多任务中都是非常有用的。


其次是Excitation 操作,它是一个类似于循环神经网络中门的机制。通过参数w 来为每个特征通道生成权重,其中参数w被学习用来显式地建模特征通道间的相关性。


最后是一个Reweight 的操作,我们将Excitation 的输出的权重看做是进过特征选择后的每个特征通道的重要性,然后通过乘法逐通道加权到先前的特征上,完成在通道维度上的对原始特征的重标定。



使用global average pooling 作为Squeeze 操作。紧接着两个Fully Connected 层组成一个Bottleneck 结构去建模通道间的相关性,并输出和输入特征同样数目的权重。我们首先将特征维度降低到输入的 1/16,然后经过ReLu激活后再通过一个Fully Connected 层升回到原来的维度。这样做比直接用一个Fully Connected 层的好处在于:


1)具有更多的非线性,可以更好地拟合通道间复杂的相关性;

2)极大地减少了参数量和计算量。然后通过一个Sigmoid 的门获得0~1 之间归一化的权重,最后通过一个Scale 的操作来将归一化后的权重加权到每个通道的特征上。用两个 1*1 卷积代替文中的两个全连接层。


•轻量级网络等设计网络技巧:


尽量将3X3换为1X1 conv filters,输入到3X3 convfiter的input channels数目少,如果下采样尽量放在深度layer,以免影响性能。可以用1X1减少输入数目,采用1X1和3X3多尺度特征融合再表达。采用深度可分离卷积,并且深度可分离卷积与residual connects结合。先用1X1学习input feature maps上channels间特征关联关系,然后分割用3X3分别处理每个channel。网络先是下采样,然后学习关联关系,最后整合特征。


可以使用缩减参数影响每层宽度和分辨率大小参数影响feature map大小。深度可分离卷积与residual connects结合,由于感兴趣流在低维空间,所以可以引入线性瓶颈。而且引入反向残差,连接瓶颈层,中间宽,俩边窄,因为中间使用深度可分离卷积。使用RELU6低精度计算更加鲁棒。使用分组卷积与residual connects还有深度可分离卷积结合,使用channel shuffle融合channel信息。Channel input和output一致,MAC最少。过多的group conv会增加MAC。网络碎片化太多会影响并行优化。Element-wise会消耗很多时间。弃用分组卷积,而是使用input channel与output channel相同的普通1X1conv,采用channel split操作,用channel concatnatee替换channel sum,之后再接channel shuffle。使用每个layer的feature maps,减少训练参数。通过级联的方式先后传播,dense block中引入conv 1X1的bottleneck,transition layer中在conv 1X1中引入压缩参数。通过学习获得每个特征通道的重要程度,提升有用的特征抑制无用的特征。Squeeze将二维特征通道压缩为一个实数。Excitation使用循环神经网络中的门机制,使用俩个全连接,可以替换为conv,通过参数w得到每个特征通道的权重。然后乘法逐通道加权到之前的特征上,完成对原始特征的重标定。


AutoML


Nas google 2017年:

《neural architecture search with reinforcement learning》


优点:耗费GPU,通过一个controllerRNN在搜索空间(search space)中得到一个网络结构(论文中称为child network),然后用这个网络结构在数据集上训练,在验证集上测试得到准确率R,再将这个准确率回传给controller,controller继续优化得到另一个网络结构,如此反复进行直到得到最佳的结果,整个过程称为Neural Architecture Search。


通过观察发现目前的神经网络的结构和内部连接是一个可变的长度string来指定的,所以可以使用RNN去产生如此的可变长度的网络结构。

生成child network:RNN中每一softmax预测的输出作为下一个的输入。 Controller生成一个网络结构后,用训练数据进行训练直到收敛,然后在验证集上进行测试得到一个准确率。论文中提到生成网络结构的终止条件是当网络层数达到一个值时就会停止。


训练controller:其中控制器(RNN)的设计借鉴了sequence to sequence的思想,不同的是它优化的是一个不可微的目标,也就是网络的accuracy。RNN的参数会通过增强学习算法更新,以得到更好的模型结构。


控制器可以看作agent,控制器产生一组token,也就是超参数,看作agent的action,使用产生的模型在验证集的准确率作为reward。





优点:其中parameter server共同保存了控制器的所有参数,这些server将参数分发给controller,每一个controller使用得到的参数进行模型的构建,这里由于得到的参数可能不同,构建模型的策略是随机的,导致每次构建的网络结构也会不同。每个controller会构建一个batch,也就是m个网络,然后并行地训练这些网络,得到它们的accuracy。也就是说,每一个controller会得到一个batch也就是m个网络,和它们的accuracy,然后根据之前提到的公式,计算参数的梯度。接着,计算完梯度的controller会将梯度发送给servers。这些server在得到梯度后,分别对自己负责的参数进行更新。更新后,当controller再次训练时,会得到更新后的参数。这里如果每个controller各自发送自己的梯度,之间不进行同步,就是异步更新。







Nasnetgoogle 2018年:

《Learning Transferable Architectures for Scalable Image Recognition》


优点:NAS在小数据集生成网络在迁移学习到大数据集。


一、论文是采用了NAS的核心机制来自动生成网络,还是利用RNN控制器去预测一个网络结构,接着训练这个网络直到收敛,去验证集上测试得到一个准确率R,将这个R作为回报信号反馈给RNN控制器去更新RNN控制器的参数,从而产生更好的网络结构。只不过原来NAS中优化的算法是policy梯度,而论文中采用 Proximal Policy Optimization (PPO)算法。整个的流程还是使用强化学习机制。


二、主流优秀的网络结构(如ResNet和GoogleNet)的重复堆叠思想,使得RNN控制器学习得到也是基本单元convolutional cell,这是和原来的NAS很不一样的地方。论文通过堆叠convolution cell从而构建整个网络结构。Normal Cell:不改变输入feature map的大小的卷积; Reduction Cell:将输入feature map的长宽各减少为原来的一半的卷积,是通过增加stride的大小来降低size。 最后RNN控制器用来预测这两种Cell。



优点:图中的预测步骤一共是5个步骤:


Step1:从hidden states(前面block中产生的)中选择一个hiddenstate—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 thefilter dimension 。


NAS那篇文章中的search space包含了filter的size,stride等等,而这篇文章则通过构造convolution cell的方式大大降低了search的难度。 只有卷积类型搜索,不去搜索add和concat。





Mnasnetgoogle 2019年:

《MnasNet: Platform-Aware Neural Architecture Search for Mobile》


优点:基于squeeze and excitation结构的轻量级注意力模型。将 latency(运算延迟时间) 也作为优化目标,直接测量特定平台的实际inference latency,一种分层分解搜索空间的方法来确定网络结构。多目标优化问题,accuracy/latency,增强学习的网络搜索方法。


层级搜索空间,分解分层网络空间,基于梯度的增强学习方法来为多目标搜索问题寻找Pareto最优解,因为增强学习更为方便且便于定制奖励函数。






之前的自动搜索方法大都是寻找几种复杂的cells然后重复堆叠这些相同的cells,没有考虑到卷积操作基于操作的形状不同在延迟时间有着很大的差异,层级搜索空间简化了之前的cell搜索空间但允许cells不同。对分层分解搜索空间的理解:网络分成B个block,每个block可能有着不同的网络结构。层分级的重要性。很多轻量化模型重复block 架构,只改变滤波器尺寸和空间维度。论文提出的层级搜索空间允许模型的各个block 包括不同的卷积层。通过比较MnasNet的各种变体(即单独重复使用各个block),在准确率和实时性方面难以达到平衡层分级的重要性。



Netadaptgoogle 2018年:

《NetAdapt: Platform-Aware Neural Network Adaptation for Mobile Applications》


优点:当优化一个预先训练的网络以满足给定的资源预算时,使用直接指标(延迟和能量计算)的框架。经验度量用于评估不需要平台特定知识的直接度量。一种自动约束网络优化算法,在满足约束条件(即,资源预算)。生成一系列简单网络,实现网络的动态选择和进一步优化。Choose Number of Filters:是确定有多少过滤器保存在一个特定的层基于经验的测量。满足当前约束条件的最大过滤器数量。Choose Which Filters:根据前一步的体系结构选择要保留哪些过滤器。选择L2范数的N个过滤器。Short-/Long-Term Fine-Tune:NetAdapt中的短期调优和长期调优步骤都涉及到端到端的网络明智调优。短期调优比长期调优迭代更少。在算法的每次迭代中,我们都用相对较少的迭代次数(即(短期的)恢复精度,以并行或顺序恢复。这一步在适应资源减少较多的小网络时尤为重要,否则精度会下降到零,从而导致算法选择错误的网络方案。






Efficientnet google 2019年

《efficientnet:rethinking model scaling for convolutional neural networks》


优点:如果单独提升网络的深度、宽度和分辨率,当精度达到80%就很难提升。组合model scaling网络的宽度、深度和分辨率可以超过80%。网络结构搜索得到EfficientNet-B0。


2步优化,第一步是固定Φ=1,然后通过网格搜索找到满足公式3的最优α、β、γ,比如对于EfficientNet-B0网络而言,最佳的参数分别是α=1.2、β=1.1、γ=1.15(此时得到的也就是EfficientNet-B1)。第二步是固定第一步求得的α、β、γ参数,然后用不同的Φ参数得到EfficientNet-B1到EfficientNet-B7网络,与其他分类网络相比精确率差不多,但是参数量和计算量少很多。






•AutoML设计思想:


非常耗费GPU,RNN是根据sequence to sequence设计的,由于深度学习网络层数使用string来指定,RNN可以产生string。RNN通过accuracy来优化网络,由于accuracy不可微,采用变形形式。RNN通过优化Q-t参数,在search space创建child networks,在训练集训练,在验证集验证得到精度R强化学习用来优化RNN。当网络层数达到一定数目停止。参数存储在servers端,当controller得到参数创建一个batch m个网络,训练后根据变形公式计算梯度,将梯度反馈给severs端更新参数。会根据前面计算的概率P和自己的策略决定是否加入skip connection。RNN决定child networks的conv宽、高以及filter的宽、高,以及skip connection和其他element wise操作。可以先在小数据集上训练,然后迁移到大数据集上。不在搜索child networks的所有操作,仅仅搜索convolution cell方式,然后添加add和concate,减少search难度。将latency运算延时时间也作为优化目标,多目标优化问题,accuracy/latency。层级搜索空间,分解分层增强学习网络空间,之前的自动搜索都是搜索复杂cells然后重叠相同的cells,分层分解搜索是分为b个block,各个block可以拥有不同的网络结构。优化一个预先训练的网络满足资源预算(延迟和能量计算),不需要平台特定知识的直接度量,一种自动约束的网络优化算法,生成一系列网络,实现动态选择和进一步优化。提出基于squeeze and excitation 结构的轻量级注意力模型,使用h-swish(hard version of swish)替换relu。


参考文章:

1、CNN网络架构演进:从LeNet到DenseNet - Madcola - 博客园

2、机器学习与人工智能技术分享-第五章 深度神经网络

3、blog.csdn.net/numeria/a

4、精简CNN模型系列之二:SqueezeNet

5、精简CNN模型系列之七:Xception

6、blog.csdn.net/mou_it/ar

7、重磅!MobileNetV3 来了!

8、精简CNN模型系列之六:ShuffleNet v2

9、经典分类CNN模型系列其七:DenseNet

10、SENet(Squeeze-and-Excitation Networks)算法笔记---通过学习的方式来自动获取到每个特征通道的重要程度,然后依照这个重要程度去提升有用的特征并抑制对当前任务用处不大的特征

11、NEURAL ARCHITECTURE SEARCH WITH REINFORCEMENT LEARNING 笔记

12、blog.csdn.net/xjz182982

13、blog.csdn.net/thisiszdy

编辑于 2019-10-21

文章被以下专栏收录