GoogLeNet系列网络原理深度解析

正文

1.原理解析

inception结构

2.网络结构

3.衍生版本

inception v2

inception v3

参考资料


论文名:Going Deeper with Convolutions

下载地址:https://arxiv.org/pdf/1409.4842.pdf

正文

        自从AlexNet模型取得显著成果之后,大量的研究者致力于进一步提升网络性能,Google从网络结构的稀疏表达入手,设计了GoogLeNet,在2014年ImageNet竞赛中获得分类赛的冠军。

1.原理解析

        论文中明确指出,提升网络模型性能的最直接的方式就是增加网络的规模:深度和宽度,然而它们会带来一些问题:

  • 网络模型的规模越大,模型越复杂(非线性表达能力越强),越容易产生过拟合,特别是在数据有限的情况下
  • 网络模型的规模越大,意味着模型的参数量越多,代表着模型的计算量越大,对计算资源的消耗越大。

         那么如何避免上述问题呢?文章认为将全连接层甚至是一般的卷积层转化为稀疏连接能有效解决上述问题,依据有二:生物神经系统的连接也是稀疏的;有文章指出对于大规模稀疏的神经网络,可以通过分析激活值的统计特性和对高度相关的输出进行聚类来逐层构建出一个最优网络。稀疏连接引发了一个新的问题:计算机软硬件对非均匀稀疏数据的计算效率很差,所以现在的新问题是:既能保证网络结构的稀疏性,又能利用密集矩阵的高计算性能。基于此,Google设计了inception结构来实现该目的。

inception结构

inception结构的主要作用是用密集成分来近似最优的局部稀疏结构

       上图是原始的inception结构,首先采用不同大小(1、3和5)的卷积核进行卷积运算,然后把运算结果进行拼接处理,对其进行以下几点说明:

  • 不同大小的卷积核意味着不同大小的感受野,对不同大小卷积运算进行拼接意味着不同尺度的特征融合,其作用有

1)提取不同尺度的特征且进行融合,能获取更加丰富的特征,有利于最后的分类判断准确性

2)稀疏矩阵的运算可以等价于分解成几个小的密集矩阵进行运算,如下图所示。 inception结构具有相同的作用,我们可以这么理解它:传统的卷积层的输入数据只和一种尺度(比如3x3)的卷积核进行卷积,输出固定维度(比如256个特征)的数据,所有256个输出特征基本上是均匀分布在3x3尺度范围上,这可以理解成输出了一个稀疏分布的特征集;而inception模块在多个尺度上提取特征(比如1x1,3x3,5x5),输出的256个特征就不再是均匀分布,而是相关性强的特征聚集在一起(比如1x1的的96个特征聚集在一起,3x3的96个特征聚集在一起,5x5的64个特征聚集在一起),这可以理解成多个密集分布的子特征集。这样的特征集中因为相关性较强的特征聚集在了一起,不相关的非关键特征就被弱化,同样是输出256个特征,inception方法输出的特征“冗余”的信息较少。用这样的“纯”的特征集层层传递最后作为反向计算的输入,自然收敛的速度更快。

GoogLeNet系列网络原理深度解析_第1张图片  

  • 文章说很多地方都表明pooling挺有效,所以Inception里面也嵌入了。
  •  网络越到后面,特征越抽象,而且每个特征所涉及的感受野也更大了,因此随着层数的增加,3x3和5x5卷积的比例也要增加。

        使用5x5的卷积核仍然会带来巨大的计算量。 为此,文章借鉴NIN,采用1x1卷积核来进行降维。 改进后的Inception结构如下:

         1x1卷积核的作用

  • 可以进行数据降维,减少参数量。
  • 相同尺寸的感受野叠加不同通道的卷积,能得到更加丰富的特征。

2.网络结构

3.衍生版本

GoogLeNet又称为inception v1,Google对inception结构进行了改进优化,得到了inception v2、v3、v4。

inception v2

        inception v2主要有两点改进:

  • 采用2个3*3的卷积代替1个5*5的大卷积核,降低参数量的同时减轻了过拟合
  • 提出了Batch Normalization(BN)正则化方法防止模型过拟合,使用BN需要进行以下几项调整:

        1)增大学习率并加快学习衰减速度以适应BN规范化后的数据;2)去除Dropout并减轻L2正则(BN已起到正则化的作用);3)去除LRN;4)更彻底地对训练样本进行shuffle;5)减少数据增强过程中对数据的光学畸变(BN训练更快,每个样本被训练的次数更少,因此真实的样本对训练更有帮助)

inception v3

        inception v2主要是引入了Factorization into small convolutions的思想,将一个二维卷积拆成两个一维卷积,这样可以减少参数量,同时增加了非线性表达能力(增加了一层),如下图所示,3*3的卷积拆分成1*3和3*1两个卷积

参考资料

https://zhuanlan.zhihu.com/p/32702031

你可能感兴趣的:(卷积神经网络CNN,CNN网络,GoogLeNet)