Inception V1 理解

在论文《Going Deeper with Convolutions》提出了GoogLeNet网络,并在 ILSVRC 2014(ImageNet Large Scale Visual Recognition Competition) 上取得了第一名,GoogLeNet 对网络中的传统卷积层进行了修改,提出了被称为 Inception 的结构,用于增加网络深度和宽度,提高深度神经网络性能。
我们知道,在卷积神经网络(CNN)中,传统情况下,最直接提升准确度的方法,就是 增加网络的尺寸,包括宽度和深度。深度也就是网络中的层数,宽度指每层中所用到的神经元的个数。但是这种简单直接的解决方式存在的两个重大缺点:
(1) 网络尺寸的增加也意味着参数的增加,也就使得网络更加容易过拟合。
(2) 计算资源的增加。

所以作者提出,根本的解决方法就是将 全连接的结构转化成稀疏连接的结构。
比如CNN,就是一种空间维度的稀疏连接,使用滤波核对输入图像的的某一部分进行卷积,共享滤波核的参数,这样神经网络的参数就主要是在滤波核上,相比于传统的全连接层,大大减少了参数的数量。

本论文的点睛之笔,是在作者继续提出了另一种方式,也就是在 特征维度进行稀疏连接,在多个不同的尺寸上进行卷积再聚合,把相关性强的特征聚集到一起,每一种尺寸的卷积只输出所有特征中的一部分,这也是种稀疏连接。

在这里插入图片描述
对输入特征,在不同尺寸是进行卷积,比如 3*3,5*5,1*1,还有最大池化上,进行了卷积,对于4个分支,分别用不同尺寸的filter进行卷积或池化,最后再在特征维度上拼接到一起。

那么,inception结构这样做的好处是什么呢?

1、在直观感觉上,在多个尺度上同时进行卷积,能提取到不同尺度的特征,特征更为丰富,也意味着最后分类判断时更加准确。

2、赫布原理(Hebbian Principle)。Hebbin原理是神经科学上的一个理论,用一句话概括就是fire togethter, wire together。赫布认为“两个神经元或者神经元系统,如果总是同时兴奋,就会形成一种‘组合’,其中一个神经元的兴奋会促进另一个的兴奋”。比如狗看到肉会流口水,反复刺激后,脑中识别肉的神经元会和掌管唾液分泌的神经元会相互促进,“缠绕”在一起,以后再看到肉就会更快流出口水。用在inception结构中就是要把相关性强的特征汇聚到一起。因为训练收敛的最终目的就是要提取出独立的特征,所以使用1x1,3x3,5x5多个尺度的卷积核,可以预先把相关性强的特征汇聚,起到加速收敛的作用。

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

举例:下图左侧是个稀疏矩阵(很多元素都为0,不均匀分布在矩阵中),和一个2x2的矩阵进行卷积,需要对稀疏矩阵中的每一个元素进行计算;如果像右图那样把稀疏矩阵分解成2个子密集矩阵,再和2x2矩阵进行卷积,稀疏矩阵中0较多的区域就可以不用计算,计算量就大大降低。
在这里插入图片描述
Inception 的网络结构实现了将稀疏矩阵聚类成相对稠密子空间,来对稀疏矩阵的计算优化。但是有个问题!滤波器数量的增加,以及加上池化操作,使得滤波器的计算开销非常大,尤其是网络越到后面,特征越抽象,而且每个特征所涉及的感受野也更大了,因此随着层数的增加,3x3和5x5卷积的比例也要增加,使用5x5的卷积核会带来 巨大的计算量。 处理十分低效,引起计算爆炸。

所以采用了 1x1卷积来进行降维和降低计算复杂度,具体操作,可以参考我的另一篇博客
https://blog.csdn.net/ding_programmer/article/details/104109895

参考博客
https://www.jianshu.com/p/22e3af789f4e

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章