(1) 与VGG同在2014年出现,取得了ILSVRC 2014比赛第一名。
(2) Inception V1有22层深,控制参数量的同时提高性能。控制参数量的原因:
- 参数越多模型越庞大,需要供模型学习的数据量就越大,而目前高质量的数据非常昂贵
- 参数越多,耗费的计算资源也会更大。
(3) 参数少、模型深、表达能力强:
- 去除了最后的全连接层,用全局平均池化层(将图片尺寸变为1*1)来取代它。全连接层占AlexNet 90%的参数,去除后训练快、减轻过拟合。
- Inception Module提高了参数的利用效率
(4) 一般,卷积层要提升表达能力,主要依靠增加输出通道数,副作用:计算量增大和过拟合。
- 一个输出通道对应一个滤波器,同一个滤波器共享参数,只能提取一类特征,因此一个输出通道只能做一种特征处理。
- 可以在输出通道之间进行信息组合。
(5) Inception Module
- 包含3种不同尺寸的卷积核1个最大池化,增加了网络对不同尺度的适应性,与Multi-scale类似。
- Inception Net的主要目标是找到最优的稀疏结构单元,即Inception Module
- 一个好的稀疏结构,应该把相关性高的一簇神经元节点连接在一起。普通数据中通过聚类,图像中临近区域的数据相关性高。
- 而且可能有多个卷积核,同一空间位置但在不同通道的卷积核的输出结果相关性极高。
- 1*1的卷积可以把这些相关性很高的、在同一个空间位置但是不同通道的特征连接在一起
- 1*1连接的节点相关性最高,使用大一点的卷积核3*3/5*5连接节点的相关性也很高,增加多样性。
- 整个网络中有多个堆叠的Inception Module,希望靠后的Module能捕获更高阶的抽象特征,因此靠后的Module的卷积的空间集中度应该逐渐降低,3*3和5*5大面积的卷积核的占比(输出通道数)应该更多。
(6) Inception Net 有22层深,使用辅助分类节点(auxiliary classifiers),将中间某一层的输出用作分类,用较小的权重(0.3)加到最终分类中。
(7) Inception 不同版本
- Inception V1,Going Deeper with Convolutions,2014年9月(top5 error = 6.67%)
- Inception V2,Batch normalization:Accelerating Deep Network Training by Reducing Internal Covariate, 2015年2月 (top5 error = 4.8%)
- Inception V3, Rethinking the Inception Architecture for Computer Vision, 2015年12月 (top5 error = 3.5%)
- Inception V4, Inception-ResNet and the Impact of Residual Connections on Learning, 2016年2月 (top5 error = 3.08%)
(8) Inception V2
- 学习VGG,用两个3*3的卷积替代5*5的大卷积,降低参数量并减轻过拟合
- 提出了Batch normalization,有效的正则化方法,让大型卷机网络的训练速度加快很多倍,同时收敛后的分类准确率也可以得到大幅提高。
- BN在用于神经网络某层时,会对每一个mini-batch数据的内部进行标准化处理,输出规范到 N(0,1)的正态分布,减少了Internal Covariate Shift(内部神经元分布的改变)。
- 传统的深度神经网络在训练时,每一层的输入的分布都在变化,导致训练变得困难,只能使用一个很小的学习速率解决这个问题。对每层使用BN后就可以有效解决这个问题。
- BN还起到了正则化的作用,可以减少或取消Dropout,简化网络结构。
- 除了BN外,提高增益的其他调整:
- 增大学习速率并加快学习衰减速度以适用BN规范后的数据
- 去除Dropout并减轻 L2 正则
- 去除 LRN
- 更彻底地对训练样本进行shuffle
- 减少数据增强过程中对数据的光学畸变,因为BN训练更快,每个样本被训练的次数更少,因此更真实的样本对训练更有帮助。
(9) Inception V3
- 引入了Factorization into small convolutions,将一个较大的二维卷积拆成两个较小的一维卷积,eg:7*7拆成1*7和7*1的卷积,3*3拆成1*3和3*1.节约了参数,减轻过拟合,同时增加了一层非线性扩展模型表达能力。非对称结构,比对称拆分为相同的小卷积效果更明显,可以处理更多/更丰富的空间特征,增加特征多样性。
- 优化了Inception Module的结构,有35*35 17*17 和8*8三种不同结构。只在网络后部出现,前部还是普通卷积曾。在Inception Module使用分支,分支中又实用分支。
(10) Inception V4
- 将Inception Module与ResNet结合。
参考资料:
《TensorFlow实战》黄文坚 唐源 著