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

news/2024/6/18 21:10:56

一:背景总论

	接上篇,在对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%的参数(论文作者实验所得),同时,分解后增加了一个激活函数(因为增加了一个卷积核),也就增加了非线性激活响应(也就是非线性表达能力)。使得网络的局部特征维度更加明显,加快了网络训练速度。分解示意图如下
在这里插入图片描述
结构示意图如下,简称modelA
在这里插入图片描述
到这里,各位朋友肯定在想经过分解操作之后,虽然会对局部特性的表征能力有提升,但是对于整个模型的表征性能会不会有负面作用呢?作者通过实验回答了这个问题–不会。如下图,
蓝色的虚线是通过对分解卷积使用两次Relu(都能看到这了,我就不解释什么是relu了)得到的精度–77.2%。而红色的线是对未经过分解的卷积核通过liner+relu得到的精度–76.2%。所以经过卷积核分解不会降低模型的整体表征能力
在这里插入图片描述

2,分解为非对称卷积

例如将一个33的卷积分解成一个13卷积和一个3*1卷积,这样可以减少33%的参数,分解示意图如下
在这里插入图片描述
结构示意图如下,简称model B
在这里插入图片描述
其他非对称卷积如下,简称model C
在这里插入图片描述

3,辅助分类器

在inception-v1中,使用了辅助分类器,其主要作用是用来帮助梯度回传,加深网络的深度。inception–v3也使用了辅助分类器,但其主要作用是用作正则化器,这是因为辅助分类器做过归一化处理,或者有一个dropout层,其网络主分类器效果会更好。这也从侧面证明了归一化可以作为正则化器使用。
在这里插入图片描述

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

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

三:inception和inception–v3结构

1,inception结构的作用(inception的结构和作用)
作用:代替人工确定卷积层中过滤器的类型或者确定是否需要创建卷积层或者池化层。即:不需要人为决定使用什么过滤器,是否需要创建池化层,由网络自己学习决定这些参数,可以给网络添加所有可能值,将输入连接起来,网络自己学习需要它需要什么样的参数。
inception结构工作原理
inception结构运行原理
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厚度的作用。(如下图)
在这里插入图片描述

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),图©。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述

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


http://www.niftyadmin.cn/n/1802227.html

相关文章

经典卷积神经网络

总论 在计算机的cv领域,我们需要掌握的就是常见的经典卷积神经网络的cnn架构,这些架构在nLp ,图像分类,分割,目标检测等领域都举有重要作用。本文只对模型原理和架构进行简单的了解,过程及证明可参考该 从2012年的Ale…

CNN模型之MobileNet

引言 MobileNet–2017年谷歌提出的专注于移动端和嵌入式设备的轻量级cnn架构。 随着人工智能的发展,cnn架构已经在计算机视觉领域取得了长足的进步。例如在每年的imagenet分类问题上,可以看到为了追求更高的精准度,研究者们提出的模型越来越…

深度解析ResNet及其变体

一:前言(问题由来) 在讲resnet之前我们需要知道resnet的由来,以及到底在解决什么问题,然后才是如何解决问题,最终才是工业化实现。本篇文章需要一定的resnet基础,新手可以多看看基础再来。 1&a…

mysql 优化--从原理到实操

前言: 由于公司最近重构网站,将原先的.net框架全部推翻,采用springbootmysqlredises等系列框架进行重构。在重构构成中,出现了一个问题,就是数据库sql数据查询非常迅速,但当数据进入springboot 框架&#x…

LSTM的前向和反向传播

一:LSTM结构 复杂版: 简单版: (一)结构剖析 lstm结构:三个门的特殊结构。lstm靠一些门的结构,让信息有选择性的影响循环神经网络中每个 时刻的状态。所谓的门的结构,就是一个使用…

双向循环神经网络原理

一:背景 在经典的循环神经网络中,状态的传输,是从前往后的,但是在有些任务中,某些时刻的输出不仅和 之前状态有关,也与之后的状态有关。这就需要双向循环神经网络(Bidirectional rnn&#xff0…

RNN中的门控循环结构---lSTM和GRU

一:门控循环神经网络简介 门控循环神经网络是在经典RNN基础之上调整而出的网络结构,通过加入门控机制(非线性激活函数,通常是sigmoid), 用来控制神经网络中的信息传递。门控机制可以用来控制记忆单元中哪些…

常见的语言模型(一)----n-gram

一:什么是语言模型 假设一门语言中所有可能的句子服从某种分布,每个句子加起来的概率为1,那么语言模型的任务就是预测每个句子在语言中出现的概率,对于一个好的模型,常见的句子应该得出相对较高的概率,非法…