介绍
Inception神经网络,在2014年ImageNet大规模视觉识别挑战赛(ILSVRC14)中提出,用于分类和检测
主要特点:允许增加网络的 深度 和 宽度,同时保持计算预算不变(摘自论文摘要)
名字出处
名字来自 电影盗梦空间,其英文名:Inception
在ILSVRC14比赛中,该团队选择了 GoogLeNet 作为团队名称。此名称是对Yann LeCuns开拓性的 LeNet 5网络 的致敬[10]。还使用GoogLeNet来指代我们提交的竞赛中使用的Inception体系结构的特定形式
论文网址:
https://arxiv.org/abs/1409.4842
本站网址:
https://www.malaoshi.top/show_1EF5WonwMeei.html
发展
Inception经历4个版本,论文如下:
V1 Going Deeper with Convolutions
V2 Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
V3 Rethinking the Inception Architecture for Computer Vision
V4 Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning
如何提升神经网络性能
传统神经网络
从LeNet-5 开始,卷积神经网络(CNN)通常具有一种标准结构-堆叠的卷积层(后面可能是 归一化 或 最大池化),然后是一个或多个完全连接的层。
LeNet-5参见:https://www.malaoshi.top/show_1EF5X7TvNqeO.html
传统提升性能的方法
提升深度神经网络性能,最直接 的方法就是增加网络 深度 和 宽度
传统方法的缺点
但会带来2个缺点:
- 大量的参数,容易 过拟合
- 增加计算量
解决缺点的关键 - 稀疏连接
解决2个缺点的根本方法是:将全连接 和 一般的卷积 改为 稀疏连接。
依据:
符合Hebbin赫布原理,生物神经系统的连接也是稀疏的
根据 Arora等人的论文《Provable bounds for learning some deep representations》,大型、非常稀疏的深度神经网络,可以通过分析最后一层的激活的相关统计量,逐层构建最佳网络拓扑。
该论文50多页,涉及到大量数学计算,并且网上查到的资料较少,这里不做解释
如何实现稀疏连接结构
目前大多数面向视觉的机器学习系统都是通过 卷积 来利用空间域的稀疏性
原文:Most current vision oriented machine learning systems utilize sparsity in the spatial domain just by the virtue of em- ploying convolutions.
稀疏连接的问题
现在计算机对 稀疏数据进行计算的效率很低
解决稀疏连接的问题
解决:根据论文《On Two-Dimensional Sparse Matrix Partitioning: Models, Methods, and a Recipe》,将稀疏矩阵聚类为相对密集的子矩阵,会提高性能。
在多个尺寸上进行卷积,然后再 连接,把相关性强的特征聚集到一起
模块1
卷积过程图:
- 采用不同大小的卷积核,意味着感受野的大小不同,可以得到不同尺度的特征
- 卷积核大小采用1、3和5,目的:
- 感受野的大小不同,可以得到不同尺度的特征
- 方便对齐。设定卷积步长stride=1之后,只要分别设定pad=0、1、2,卷积结果的尺寸相同,可以直接拼接;
- 文章说很多地方都表明 pooling 挺有效,所以Inception里面也嵌入了。
- 网络越到后面,特征越抽象,而且每个特征所涉及的感受野也更大了,因此随着层数的增加,3x3和5x5卷积的比例也要增加。
- 拼接意味着不同尺度特征的融合;
缺点:
使用5x5的卷积核会带来巨大的计算量
计算量:
论文中第一个经过此模块的尺寸大小是:输入特征图尺寸:28 × 28 × 192,卷积核 5 x 5 x 32,输出特征图尺寸:28 x 28 x 32
根据 https://www.malaoshi.top/show_1EF53TtDvZ4C.html 可知:5 * 5 * 192 * 28 * 28 * 32 = 120422400(只算乘法)
模块2
为解决模型1的缺点,作者提出模型2:
3个黄色1*1卷积核的作用
在相同尺寸的感受野中叠加更多的卷积,能提取到更丰富的特征。
依据:Network in Network(NIN, https://arxiv.org/pdf/1312.4400.pdf)
2个红框1*1卷积核的作用
使用1*1*96和1*1*16的卷积核,是为了 降维,卷积后的特征图尺寸是28x28x96和28x28x16
再与后面的卷积核 3*3*128和5*5*32计算时,就会大大 降低计算量
瓶颈
像这种为了降维的卷积核,又称之为瓶颈,如下图:
降维后的计算量
与1*1*16的卷积核运算(降维),然后与5*5*32的卷积核做运算,两次卷积的计算量,如下(只算乘法):
1*1*16*28*28*192 + 5*5*32*28*28*16=2408448 + 10035200=12443648
与模型1相比,少了1个0
降维后是否会影响网络性能
降维后,虽然特征减少,但合理的运用降维,不会影响性能,而且会降低计算量
max pooling
在inception模块中有一个分支使用了max pooling,作者认为pooling也能起到提取特征的作用,所以也加入模块中。注意这个pooling的stride=1,pooling后没有减少数据的尺寸。
拼接
对输入做了4个分支,分别用不同尺寸的filter进行卷积或池化,最后再拼接到一起,有以下作用:
在多个尺度上同时进行卷积,能提取到不同尺度的特征。特征更为丰富也意味着最后分类判断时更加准确。
利用稀疏矩阵分解成密集矩阵计算的原理来加快收敛速度。
举个例子下图左侧是个稀疏矩阵(很多元素都为0,不均匀分布在矩阵中),和一个2x2的矩阵进行卷积,需要对稀疏矩阵中的每一个元素进行计算;如果像右图那样把稀疏矩阵分解成2个子密集矩阵,再和2x2矩阵进行卷积,稀疏矩阵中0较多的区域就可以不用计算,计算量就大大降低。这个原理应用到inception上就是要在特征维度上进行分解!传统的卷积层的输入数据只和一种尺度(比如3x3)的卷积核进行卷积,输出固定维度(比如256个特征)的数据,所有256个输出特征基本上是均匀分布在3x3尺度范围上,这可以理解成输出了一个稀疏分布的特征集;而inception模块在多个尺度上提取特征(比如1x1,3x3,5x5),输出的256个特征就不再是均匀分布,而是相关性强的特征聚集在一起(比如1x1的的96个特征聚集在一起,3x3的96个特征聚集在一起,5x5的64个特征聚集在一起),这可以理解成多个密集分布的子特征集。这样的特征集中因为相关性较强的特征聚集在了一起,不相关的非关键特征就被弱化,同样是输出256个特征,inception方法输出的特征“冗余”的信息较少。用这样的“纯”的特征集层层传递最后作为反向计算的输入,自然收敛的速度更快。
图4: 将稀疏矩阵分解成子密集矩阵来进行计算符合Hebbin赫布原理。
Hebbin原理是神经科学上的一个理论,解释了在学习的过程中脑中的神经元所发生的变化,用一句话概括就是fire togethter, wire together。赫布认为“两个神经元或者神经元系统,如果总是同时兴奋,就会形成一种‘组合’,其中一个神经元的兴奋会促进另一个的兴奋”。比如狗看到肉会流口水,反复刺激后,脑中识别肉的神经元会和掌管唾液分泌的神经元会相互促进,“缠绕”在一起,以后再看到肉就会更快流出口水。用在inception结构中就是要把相关性强的特征汇聚到一起。这有点类似上面的解释2,把1x1,3x3,5x5的特征分开。因为训练收敛的最终目的就是要提取出独立的特征,所以预先把相关性强的特征汇聚,就能起到加速收敛的作用。
GoogLeNet
参数
取消全连层
VGG网络的参数很多,是因为它在最后有两个4096的全连层!
采用了average pooling来代替全连接层
依据来自论文《Network In Network》
https://www.malaoshi.top/show_1EF5XPh0N0a9.html
但是,在最后还是加了一个全连接层,主要是为了方便finetune;
使用辅助分类器
避免梯度消失,作用:
- 把梯度有效的传递回去,不会有梯度消失问题,加快了训练
- 中间层的特征也有意义,空间位置特征比较丰富,有利于提成模型的判别力
总结:
- 采用了模块化的结构,方便增添和修改;
- 网络最后采用了average pooling来代替全连接层,想法来自NIN,事实证明可以将TOP1 accuracy提高0.6%。但是,实际在最后还是加了一个全连接层,主要是为了方便以后大家finetune;
- 虽然移除了全连接,但是网络中依然使用了Dropout ;
- 为了避免梯度消失,网络额外增加了2个辅助的softmax用于向前传导梯度。文章中说这两个辅助的分类器的loss应该加一个衰减系数,但看caffe中的model也没有加任何衰减。此外,实际测试的时候,这两个额外的softmax会被去掉。
感谢:
https://www.jianshu.com/p/cc830a6ed54b
https://blog.csdn.net/shuzfan/article/details/50738394
https://blog.csdn.net/zgcr654321/article/details/90264871
https://zhuanlan.zhihu.com/p/52802896
https://blog.csdn.net/weixin_39953502/article/details/80966046 (v1-v4)
https://www.cnblogs.com/leebxo/p/10315490.html
https://www.jianshu.com/p/a2ad00eddbd5







