扒一扒神经网络--Inception v1

Inception v1


GoogLeNet(Inception v1)

Title: Going Deeper with Convolutions

Author and affiliation: 贾扬青;Google

Year: 2015 CVPR

Honors: 1st in classification and detection in ILSVRC14

Datasets: ILSVRC-2014 dataset

Main contributions(inception的设计原则): 

前因:

对于改善一个神经网络性能的最直接的方法就是增加其规模大小,因为越深的神经网络往往能够提取到更多深层次更抽象的信息,但仅仅靠纯粹的层级堆叠形成的深度网络,由于其参数过多,也由于数据集的限制,往往使得网络模型容易过拟合,过多的参数也加大网络的计算量。随着层数的加深,梯度也很容易消失。不合理的扩展网络常常会带来很多无效的计算(比如,权重逼近于0),这样下来,很多计算资源就被浪费了。

对于解决这些问题,一个最根本的方法就是在网络中引入稀疏性,并用更稀疏的结构去替代全连接层。

如果数据集的分布可以用一个大且稀疏的网络去表达,网络拓扑可以通过一层层的分析上一层的激活单元的相关统计信息和聚集输出高度相关性的神经元来优化。但这需要很多的限制条件,但Hebbian原理使得在弱前提的情况下上述想法也是可行的(这里个人理解为输出具有高相关性的神经单元,如果用Hebbian原理来分析的话,那么常常同时兴奋的神经单元相关性更强,为上述想法提供了可能性)。

Hebbian原理——neurons that fire together, wire together。意思就是两个神经元或者神经元系统,如果总是同时兴奋,就会形成一种‘组合’,其中一个神经元的兴奋会促进另一个的兴奋。如果系统的输入会导致同样的模式重复出现,那么组成这个模式的元素之间的相互关联性将会大大增强。

为了打破网络的对称性(不同的特征图有不同的输入,迫使其抽取不同的特征)和提高学习能力,传统网络都会使用稀疏连接。但要用稀疏的网络有一个首要的问题需要解决,那就是不均匀(稀疏的任意性)的稀疏数据结构的输入。现在的计算架构对于这类数据的计算常常并不是那么有效。而这种类型的非均匀稀疏模型对于工程化和计算性能的要求都比较高。目前的解决方法是使用卷积来利用空间上的稀疏性(并不需要输入图像的所有像素,而只需检测几十或者几百个核提取的比如边缘的像素信息),但在网络的浅层数据还是稠密连接的(浅层还未提取到抽象信息)。

因此,考虑在滤波器上利用稀疏性,而不是在patch上。但对于稠密矩阵的计算,目前的硬件水平还不是很跟得上。大量研究[2]表明,将稀疏矩阵聚集成相对稠密的子空间是一种有效的方法。

后果:

1) 小卷积的聚集:

因此,GoogLeNet采用了NIN的思想,设计出了一种高效的深度神经网络结构--Inception,利用局部稀疏的子网络去使整体模型近似一个稀疏的结构,从增加网络的深度和宽度两个方面进一步加深CNN,同时考虑到了更好的利用计算资源的问题。作者指明,基于上述理念,只需找出一个局部最优结构,然后在网络中对其进行重复就可以达到目的。

前面我们提到,我们需要去分析最后一层的相关统计信息,并聚集具有高相关性的单元。在网络的浅层(接近于输入图像),高相关性的单元会聚集在局部的区域。因此,利用这一特性,我们假设每个浅层单元对应于原图像的某些区域,它们会被分到同一个滤波组中。然后在得到区域中的大量的聚类单元后,跟上一层1*1的卷积进行覆盖。同时,也可以扩大patch的覆盖区域,在空间上有更大的聚类范围,而这样总的patch数会减少。

2)patch的对齐问题

但是不同大小的patch会带来对齐的问题,因此为了方便网络的对齐,inception v1中卷积核只使用了1*1,3*3和5*5。网络中会使用这些聚集的卷积进行融合成为一个输出向量以作为下一层的输入。此外,由于池化的操作对网络的性能有一定益处,因此在网络中将继续保留池化操作。GoogLeNet还提出一个tricks,由于在网络的高层中,特征已经变得很抽象了,所以其空间聚集度会变低,这时候加大大卷积(3*3和5*5)的数量更合理。

需要注意的是,在NIN中的MLP中通过1*1的卷积加深了网络,在GoogLeNet中,1*1也会被大量使用。主要有如下原因:

a. 在计算存在瓶颈时,可用来降维而不影响感受野。

b. 1*1的卷积不仅可以用于加深网络,而且对于加宽网络也是可行的。

此外,GoogLeNet还被用于目标检测领域。对于这一领域,R-CNN [1]主张把目标检测的问题分成两大子问题去解决:利用底层次信息(颜色、纹理等) 来产生目标位置的proposals,然后再用CNN分类器对这些预测的 location proposals进行分别。GoogLeNet对这两个子问题都进行了增强设计以提高目标检测的准确度。

Strcture:

a. naive版本的inception

根据NIN的设计理念以及上述想法,在naive版本中,inception采用了如下的结构。但这种结构有一个问题,在深层的卷积层中,大量的卷积核的使用会让5*5的卷积计算量变得很大。此外,pooling的加入也让输入和输出的特征图数量相同。虽然这种结构可以去近似最优稀疏结构,但随着网络深度的增加,计算量会变得很大。这与设计GoogLeNet的初衷——减少计算量,增加有效计算冲突。

b. inception v1

在naive的基础上,inception加入了1*1的卷积并带有修正线性激活单元用于在“昂贵的”卷积(3*3和5*5)之前来降维以避免这些卷积带来的大量计算。同时在1*1的卷积也可以用来对当前多通道信息进行重组,以获得具有更少冗余信息的特征图。需要注意的是,先用池化操作对上一层的特征图进行一次aggregation,在其之后用1*1的卷积来降维,前后顺序两者不同。

这种在同一层运用多种尺寸的卷积核进行aggregate,然后作为下一层的输入的模式也让网络结构学习到了多尺度的信息。需要注意的是,在作者的实际实验过程中发现,由于内存方面的问题,到高层次再使用Inception,低层次保留普通卷积结构。

c. GoogLeNet

采用了Inception v1的GoogLeNet的结构如下图,其中所有的卷积有带有修正线性单元进行了激活。网络的输入为经过了均值化的224*224的RGB图像。网络一共有22层,但在网络架构中加入了一些最大池化层(stride=2)用于对当前的尺寸折半处理,因此算上pooling一共有27层。与NIN的方法一致,GoogLeNet中没有使用全连接层,而是在网络的最后使用了平均池化来替代,但保留了dropout层(在平均池化后)。但为了使GoogLeNet可以用到其他的数据集上(类别数不同),在平均池化后(已包含dropout)还是用了一层FC。

浅层的网络在分类问题上的表现也是不错的,这也说明了在更深层的网络中的中间层的特征具有很强的辨别性。因此GoogLeNet在中间层中加入了两个辅助分类器(softmax)用于将中间层的结果用于最后输出的loss计算(以0.3的占比)。这种做法既给网络提供了正则化的处理也对梯度消失的问题有一定的改善。当然了,在测试阶段,这两个辅助的分类器是要被丢弃的~

如下表格提供了GoogLeNet的具体层级的参数配置:

Results:

在实验中,作者采用了七种采样方式对模型进行了训练。采用了Alexnet中所用的方法,对于数据集的图像,resize到四种尺度大小(最短边分别为256,288,320,352),然后分别取这些resize后的图像左、中、右部分的方形区域。接着,对于这些方形区域(也就是上述所说的四种尺度的区域),再分别取几个角,中央部分大小为224*224,以及方形区域resize成224*224大小的图像,并进行镜像翻转。因此对于一张图,最终会产生4*3*6*2=144个crops。虽然作者后来发现当裁剪数目达到一定量后,进行这么aggressive的裁剪不是必要的。

对于这些裁剪后的图像,最终采用取它们经过softmax的预测值的平均值作为原始图像的预测值。最终GoogLeNet的结果如下,由于对计算资源的合理利用,它的速度也是比较快的,采用了Inception模块的网络要比没有采用Inception模块的同样架构的网络快2~3倍。

对于在目标检测领域的应用效果,GoogLeNet的表现也是很不错的~

Github:

Tensorflow 实现: Inception v1

Reference:

[1] Ross B. Girshick, Jeff Donahue, Trevor Darrell, and Jitendra Malik. Rich feature hierarchies for accurate object detection and semantic segmentation. In Computer Vision and Pattern Recognition, 2014. CVPR 2014. IEEE Conference on, 2014.

[2] Umit V. C¸ ataly ¨ urek, Cevdet Aykanat, and Bora Uc¸ar. On two-dimensional sparse matrix par- ¨ titioning: Models, methods, and a recipe. SIAM J. Sci. Comput., 32(2):656–683, February 2010.


作者:miya_xu 出处:https://blog.csdn.net/u012885745/article/details/84635469 欢迎转载或分享,但请务必声明文章出处。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值