从LeNet-5到NasNet

匿名 (未验证) 提交于 2019-12-03 00:25:02

LeNet-5



  • input:输入图片,32*32像素;
  • C1:5*5卷积核,生成6个feature maps,共需要(6*5*5 + 6)=156个参数;
  • S2:2*2个像素相加,然后乘以一个参数,加上一个偏置,共计2*6=12个参数;
  • C3:5*5卷积核,生成16个feature maps,每个feature map由S2中若干个feature maps卷积得到,如图Table1所示;
  • S4:和S2相同的操作,共计16*2 = 32个参数;
  • C5:与S4全连接,共计(5*5*16*120+120)=48120个参数;
  • F6:与C5全连接,共计(120*84+84) = 10164 个参数;
  • output: 与F6全连接。


附:下图是keras自动生成的网络图,正如图所示在平均池化层中是没有参数的。这与Le net原始论文不同。


Alex net:



VGGNet:
堆叠多个小的卷积核而不使用池化操作可以增加网络的表征深度,同时限制参数的数量。
vgg16和vgg19都有5个block块,每个block块有一个MaxPooling2D,是特征图缩小两倍。共缩小32倍。卷机层与全连接层相连接时先进行了扁平化处理,然后连接看了两个4096的全连接,最后再接一个softmax分类函数。如果不加全连接层,在keras中会对特征进行全局平均池化以防止过拟合。
优点:
1.参数量减少了 81%(相比alxexnet),而感受野保持不变。
2.小卷积核的使用也扮演了正则化器的角色,并提高了不同卷积核的有效性。
缺点:其评估的开销比浅层网络更加昂贵,内存和参数(140M)也更多。这些参数的大部分都可以归因于第一个全连接层。

ResNet:
代表网络 :resnet50 resnet101,resnet152
优点:
1.增加了神经网络架构的跳过连接(skip connection),卷积层的默认函数变成了恒等函数,卷积核学到的任何新信息都可以在基本表征中添加或减去,因此更容易优化残差映射。跳过连接不会增加参数的数量,但可以获得更稳定的训练和显著的性能提升。
2.每次卷积完成后、激活进行前都采取批归一化。
3.网络删除了全连接层,并使用平均池化层减少参数的数量。由于网络加深,卷积层的抽象能力更强,从而减少了对全连接层的需求。
4.引用1*1卷机来降维和升维,在进行3*3卷机之前,先对特征图进行降为,卷机后升维,恢复原来的维度。这样进行卷机操作的时候可以降低参数的数量,而且可以增加非线性。



Inception:
代表网络 :Inception v1,Inception v2,Inception v3,Inception v4
Inception v1:

在Inception v1中1*1卷积用于降维,减少weights大小和feature map维度。
Inception v2:

1.加入了BN层,使每一层的输出都规范化到一个N(0, 1)的高斯,从而增加了模型的鲁棒性,可以以更大的学习速率训练,收敛更快,初始化操作更加随意,同时作为一种正则化技术,可以减少dropout层的使用。
2.学习VGG用2个3x3的conv替代inception模块中的5x5,既降低了参数数量,也加速计算。
Inception v3:
将7x7分解成两个一维的卷积(1x7,7x1),3x3也是一样(1x3,3x1)。既可以加速计算(多余的计算能力可以用来加深网络),又可以将1个conv拆成2个conv,使得网络深度进一步增加,增加了网络的非线性,还有值得注意的地方是网络输入从224x224变为了299x299,更加精细设计了35x35/17x17/8x8的模块。
Inception v4:
重点有两部分,一部分是对inception-v3进行架构的细化与改进,inception模块中嵌入inception模块,但是总的来看模型是一致的。另一部分便是结合了微软的resnet,也就是残差网络,使用了新的inception模块,也就是inception-resnet模块,相较于传统的inception-v4模型inception-resnet-v2计算量更小,能达到相差不多的效果。

inception-resnet-A:
1.使用更简单的inception模型。并且每个inception分支后面都跟着一个1x1线性卷积层(就是不带激活函数的卷积层),这是为了匹配输入时的维度,因为残差分支是直接将输入送给输出,但是inception这边很明显进行通道压缩了,所以要通过1x1卷积重新扩增到输入时的维度,用原文话说就是,补偿inception模块带来的降维。

2.它说如果通道数量超过1000时,这个inception-resnet就会失去稳定,并且在训练的早期死亡,死亡意指几千次迭代后在平均池化前的最后一层会开始完全零化,就是只产生很小的数。并且这种现象无法被避免,无论是调低学习率还是增加批次归一化在这一层。但是他们发现如果在将其添加到前一层激活函数之前进行缩小似乎就能稳定训练,一般他们会挑选一些0.1到0.3之间的缩放系数在进行累加层激活之前来压缩inception-resnet模组。
Reduction-A:

这张图上通道数是变量。这个模组是三个模型共用的,所以不同模型有不同系数。reduction就是减少的意思,这个模组负责减半数据空间尺寸,并且加深通道,不知道从某种程度上我们是否可以将其理解为聚集特征。
inception-resnet-B:
inception-resnet-C:

ResNeXt:
文中提出了另外一种维度cardinality,和channel和space的维度不同,cardinality维度主要表示ResNeXt中module的个数。
1.增大Cardinality比增大模型的width或者depth效果更好
2.与 ResNet 相比,ResNeXt 参数更少,效果更好,结构更加简单,更方便设计
Xception:
在Inception V3的基础上提出了Xception(Extreme Inception),基本思想就是通道分离式卷积(depthwise separable convolution operation)。模型参数有微量的减少,减少量很少。精度较Inception V3有提高,但提高不大。卷积的操作上面,主要进行2种变换,空间变换和通道变换而Xception就是在这2个变换上做文章。
1.ception V3是先做1*1的卷积,再做3*3的卷积,这样就先将通道进行了合并,即通道卷积,然后再进行空间卷积,而Xception则正好相反,先进行空间的3*3卷积,再进行通道的1*1卷积。
2.这个区别是最不一样的,Inception V3在每个module中都有RELU操作,而Xception在每个module中是没有RELU操作的。
mobilenets:
MobileNets其实就是Exception思想的应用。区别就是Exception文章重点在提高精度,而MobileNets重点在压缩模型,同时保证精度。obileNets模型基于深度可分解的卷积,它可以将标准卷积分解成一个深度卷积和一个点卷积(1 × 1卷积核)。深度卷积将每个卷积核应用到每一个通道,而1 × 1卷积用来组合通道卷积的输出。
宽度乘数:
ααα
DK×DK×αM×DF×DF+αM×αN×DF×DF
αα2
分辨率乘数:
ραρ
DK×DK×αM×ρDF×ρDF+αM×αN×ρDF×ρDF
其中,ρρρρ2
nasnet:

1.

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


2.为了生成可扩展的网络结构并且能够结构任意size的图像,基于此论文设计的convlolution cell主要包含两种:

Reduction Cell:将输入feature map的长宽各减少为原来的一半的卷积,是通过增加stride的大小来降低size。
最后RNN控制器用来预测这两种Cell。

3.核心改进:一个convolution cell由B个block组成,对于每个block来说RNN控制器有5个预测步骤也有5个输出的预测值。每个block的输入是前面的两个block的最后的输出。


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






Step5中的连接方式一般有两种选择




文章来源: 从LeNet-5到NasNet
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!