本文简单对inception模块的改进进行了简单介绍,包括inception v1、inception v2、inception v3和inception v4。参考了相关博客:详解Inception结构:从Inception v1到Xception、Inception模块
一、inception模块的发展历程
首先引入一张图
2012年AlexNet做出历史突破以来,直到GoogLeNet出来之前,主流的网络结构突破大致是网络更深(层数),网络更宽(神经元数)。所以大家调侃深度学习为“深度调参”,但是纯粹的增大网络的缺点:
1.参数太多,容易过拟合,若训练数据集有限;
2.网络越大计算复杂度越大,难以应用;
3.网络越深,梯度越往后穿越容易消失(梯度弥散),难以优化模型。
那么解决上述问题的方法当然就是增加网络深度和宽度的同时减少参数,Inception就是在这样的情况下应运而生。
二、Inception v1模型
下图中展示了原始Inception(native inception)结构和GoogLeNet中使用的Inception v1结构,使用Inception v1 Module的GoogleNet不仅比Alex深,而且参数比AlexNet足足减少了12倍,网络大小约是VGGNet的1/20。
左图事inception的原始版,右图事inception改进版,通过对模块改进,使用1×1的卷积可以减少参数的积累,故这里提高了深度的同时又提高了宽度且减少了模型参数。
特点:
1、深度拼接。减少参数
2、1×1卷积。进一步减少参数
三、inception v2
inception v2 基于v1版本进一步改进,引入了BN层,使每一层的输出均进行归一化处理。同时采用两个3×3卷积代替一个5×5的卷积,在此基础上再次优化参数数量并提高运算速度。
特点:
1、Batch Normalization。这样能够加速网络的收敛。
2、小卷积核替代大卷积核。这样的连接方式在保持感受野范围的同时又减少了参数量,并且可以避免表达瓶颈,加深非线性表达能力。
四、inception v3
卷积分解,将一个n×n卷积更改为1×n和n×1两个卷积
特点
1、非对称卷积分解
五、inception v4
在残差卷积的基础上进行改进,引入inception v3
将残差模块的卷积结构替换为Inception结构,即得到Inception Residual结构。除了上述右图中的结构外,作者通过20个类似的模块进行组合,最后形成了InceptionV4的网络结构。
六、总结
(一)深度网络的通用设计原则
1、避免表达瓶颈。特征图应逐渐变小,不能变小幅度过大,造成大量信息丢失。
2、高维特征更易处理。 高维特征更易区分,会加快训练。
3、多汇集。在低维空间进行空间宽度扩展,然后采用深度拼接的方式汇集到一处。
4、底层降维。随着特征图的尺寸减小,可以对其维度继续降低,减少channels数量,采用1x1 conv 不仅不会影响模型精度,反而还能使其收敛速度加快。
上述的这些并不能直接用来提高网络质量,而仅用来在大环境下作指导。
(二)卷积分解(Factorizing Convolutions)
对称卷积分解,多个小卷积替代大卷积
非对称卷积分解,将一个n×n卷积更改为1×n和n×1两个卷积
涉及到的网络模型的相关论文以及下载地址:
[v1] Going Deeper with Convolutions, 6.67% test error : Going Deeper with Convolutions
[v2] Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift, 4.8% test error : http://arxiv.org/abs/1502.03167
[v3] Rethinking the Inception Architecture for Computer Vision, 3.5% test error : Rethinking the Inception Architecture for Computer Vision
[v4] Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning, 3.08% test error : Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning