cnn之inception-v3模型结构与参数浅析

一:背景总论

	接上篇,在对LeNet有一定理解之后,我们开始谈谈CNN里面另一个经典的模型--inception-v3
	笔者在勉强读完原文之后,不得不佩服原作者对cnn研究之深入,其对cnn整体架构,参数的
	调优,训练的优化,以及整个模型的优化都提出了很多建设性的意见。本文将首先阐述论文的
	基本思想,然后对其主要方法进行分析理解,然后再系统理解inceptionv3网络结构。前事不
	忘后事之师,我们开始吧!

1. 论文背景
整个论文的思路主要是为了解决一个问题–如何处理网络更深(层数)更窄带(神经元个数/卷积核个数)来的问题,主要问题如下:
(1):参数过多而训练数据不足的时候容易导致过拟合(如何减小参数)
(2):当网络越来越深,带来的梯度消失,模型难以优化(如何防止梯度爆炸或梯度消失)
(3):网络越大计算复杂度越大,难以复用(如何降低计算损失)

在论文摘要中就针对这几个问题提出了主要的解决方案–分解卷积激进正则化(这也是inception3的主要思想,待会儿会重点讲解)。
(1):减少参数:卷积核大化小(例如5 * 5化成两个3 * 3)或者卷积核非对称化(3 * 3化成1*3和3 * 1两种)
(2):减少计算损失:解决该缺点的根本方法是将全连接甚至一般的卷积都转化为稀疏连接。为了打破网络对称性和提高学习能力,传统的网络都使用了随机稀疏连接。但是,计算机软硬件对非均匀稀疏数据的计算效率很差,所以在AlexNet中又重新启用了全连接层,目的是为了更好地优化并行运算。现在的问题是有没有一种方法,既能保持网络结构的稀疏性,又能利用密集矩阵的高计算性能(incption 结构能解决的问题,下面详述)
(3):如何避免梯度爆炸或梯度消失:BN层(下篇文章我们重点讲解)

2.论文提出的cnn设计原则
针对以上问题,以及解决办法如何执行,作者提出了许多在任何cnn网络中都值得广泛参考的建议,这些建议也是inception3的设计原则。
1:为了避免出现特征表示瓶颈,尤其是在网络的前面,应该在从输入到输出中尽量避免特征维度的严重压缩,特征表示维度应该尽量温和的减少。
2:高维度信息应该在网络局部进行处理,这样可以在卷积网络中增加非线性激活响应,可以使得网络训练得更快。(大化小分解卷积就是很好的例子)
3:空间聚合可以通过低纬嵌入,不会导致网络表示能力的降低。例如在进行大尺寸的卷积(如3*3)之前,我们可以在空间聚合前先对输入信息进行降维处理,如果这些信号是容易压缩的,那么降维甚至可以加快学习速度。
4:平衡好模型的宽度和深度,通过平衡网络每层滤波器的个数和网络的层数可以使得网络达到最佳效果。增加网络的宽度和深度都会提升网络的性能,但两者并行增加才能使网络性能最大化。

二: 重点–分解卷积

总论:分解卷积的主要目的是为了减少网络中的参数,主要方法有:大卷积分解成小卷积,分解为非对称卷积。

1,大卷积分解成小卷积

在cnn中一个5* 5 的卷积核 可以分解成两个3* 3的卷积核,这样可以减少28%的参数(论文作者实验所得),同时,分解后增加了一个激活函数(因为增加了一个卷积核),也就增加了非线性激活响应(也就是非线性表达能力)。使得网络的局部特征维度更加明显,加快了网络训练速度。分解示意图如下
cnn之inception-v3模型结构与参数浅析_第1张图片
结构示意图如下,简称modelA
cnn之inception-v3模型结构与参数浅析_第2张图片
到这里,各位朋友肯定在想经过分解操作之后,虽然会对局部特性的表征能力有提升,但是对于整个模型的表征性能会不会有负面作用呢?作者通过实验回答了这个问题–不会。如下图,
蓝色的虚线是通过对分解卷积使用两次Relu(都能看到这了,我就不解释什么是relu了)得到的精度–77.2%。而红色的线是对未经过分解的卷积核通过liner+relu得到的精度–76.2%。所以经过卷积核分解不会降低模型的整体表征能力
cnn之inception-v3模型结构与参数浅析_第3张图片

2,分解为非对称卷积

例如将一个33的卷积分解成一个13卷积和一个3*1卷积,这样可以减少33%的参数,分解示意图如下
cnn之inception-v3模型结构与参数浅析_第4张图片
结构示意图如下,简称model B
cnn之inception-v3模型结构与参数浅析_第5张图片
其他非对称卷积如下,简称model C
cnn之inception-v3模型结构与参数浅析_第6张图片

3,辅助分类器

在inception-v1中,使用了辅助分类器,其主要作用是用来帮助梯度回传,加深网络的深度。inception–v3也使用了辅助分类器,但其主要作用是用作正则化器,这是因为辅助分类器做过归一化处理,或者有一个dropout层,其网络主分类器效果会更好。这也从侧面证明了归一化可以作为正则化器使用。
cnn之inception-v3模型结构与参数浅析_第7张图片

4,有效的特征网格大小缩减

传统上,卷积神经网络通过池化操作来减小特征图的网格大小。为了避免特征表示瓶颈,除了作者提出的在网络的初期,避免特征维度的剧烈压缩之外,更重要的是在最大池化或者平均池化前,应增大网络滤波器激活的维数(也就是增大网络特征表征数量和能力),作者设计了一个结构,可以有效减少计算量和参数。
cnn之inception-v3模型结构与参数浅析_第8张图片

三:inception和inception–v3结构

1,inception结构的作用(inception的结构和作用)
作用:代替人工确定卷积层中过滤器的类型或者确定是否需要创建卷积层或者池化层。即:不需要人为决定使用什么过滤器,是否需要创建池化层,由网络自己学习决定这些参数,可以给网络添加所有可能值,将输入连接起来,网络自己学习需要它需要什么样的参数。
inception结构工作原理
cnn之inception-v3模型结构与参数浅析_第9张图片
2,inception结构的主要思想–用密集成分来近似最优的局部稀疏解(如上图)
(1):采用不同大小的卷积核意味着有不同大小的感受野,最后的拼接意味着不同尺度特征的融合。
(2):之所以卷积核大小采用1x1、3x3和5x5,主要是为了方便对齐。设定卷积步长stride=1之后,只要分别设定padding = 0、1、2,采用same卷积可以得到相同维度的特征,然后这些特征直接拼接在一起;
(3: 文章说很多地方都表明pooling挺有效,所以Inception里面也嵌入了pooling。
(4):.网络越到后面特征越抽象,且每个特征涉及的感受野也更大,随着层数的增加,3x3和5x5卷积的比例也要增加。
(5):最终版inception,加入了1x1 conv来降低feature map厚度。如果简单的将前面的结构应用到feature map上的话,concat起来的feature map厚度将会很大,所以在googlenet中为了避免这一现象提出的inception具有如下结构,在3x3前,5x5前,max pooling后分别加上了1x1的卷积核起到了降低feature map厚度的作用。(如下图)
cnn之inception-v3模型结构与参数浅析_第10张图片

inception–v3结构

Inception架构的主要思想是找出如何用密集成分来近似最优的局部稀疏结。2015 年 2 月, Inception V2 被提出, InceptionV2 在第一代的基础上将 top- 5错误率降低至 4.8% 。Inception V2 借鉴了 VGGNet 的设计思路,用两个 3 x 3 的卷积代替 5×5的大卷积。另外,在论文中,还首次提出了著名的 BN (BatchNormalization )方法。BN是一种非常有效的正则化方法。在对神经网络的某层使用BN 方法时,每一个 mini-batch 数据的内部都会进行标准化(Normalization)处理,使输出规范化到 N C0,1 )的正态分布。根据这篇论文中对 BN 的解释,传统的深度神经网络在训练时,尽管可以用堆砌相同结构的网络来达到提升网络性能的目的,但是这些网络层的输入都是在变化的,输入输出可能分布不一致,对特征的提取带来很大的障碍,也使得基于梯度下降的训练方式显得非常困难。在这种情况下,训练的过程只能采用一个较小的学习率。对每一层使用BN 方法则可以有效地解决这个问题,通过规范每一层的输出,使得输入输出满足同一正太分布,而其他网络层得到的输入的变化就小多了,这样,学习的效果会好很多而且比较有说服力。InceptionV3 网络是由 Google 开发的一个非常深的卷积网络。2015年 12 月, Inception V3 在论文《Rethinking the Inception Architecture forComputer Vision》中被提出,Inception V3 在 Inception V2 的基础上继续将 top-5的错误率降低至 3.5% 。Inception V3对 Inception V2 主要进行了两个方面的改进。首先,Inception V3 对 Inception Module 的结构进行了优化,现在 Inception Module有了更多的种类(有 35 × 35 、 1 7× 17 和 8× 8 三种不同结构),并且 Inception V3 还在 Inception Module 的分支中使用了分支(主要体现在 8x8 的结构中),如下图(a),图(b),图©。
cnn之inception-v3模型结构与参数浅析_第11张图片
cnn之inception-v3模型结构与参数浅析_第12张图片
cnn之inception-v3模型结构与参数浅析_第13张图片

其次,在 Inception V3 中还引入了将一个较大的二维卷积拆成两个较小的一维卷积的做法。例如, 7× 7 卷积可以拆成 1×7 卷积和7 × l卷积。当然3x3 卷积也可以拆成 Ix3 卷积和 3 × l卷积。这被称为Factorizationinto small convolutions 思想。在论文中作者指出,这种非对称的卷积结构拆分在处理更多、更丰富的空间特征以及增加特征多样性等方面的效果能够比对称的卷积结构拆分更好,同时能减少计算量。例如,2个33代替1个55减少28%的计算量,如下图所示。

cnn之inception-v3模型结构与参数浅析_第14张图片

总结
该节主要讲述了InceptionNet模型的主要特点和相比之前的神经网络改进的地方,另外讲述了BN的原理与作用,而后给出了InceptionNet-V3中减少训练计算量的方法,最后给出InceptionNet-V3的模型结构。详细的inception1-4可见该文章

你可能感兴趣的:(计算机视觉)