目录
1. Inception-v1
论文链接:Going deeper with convolutions
1.1 为什么提出Inception
一般来说,提升网络性能最保险的方法就是增加网络的深度和宽度,但这样做同时也会伴随着副作用:
- 当越深越宽的网络往往会有着巨大的参数量,当数据量很少的时候,训练出来的网络容易过拟合
- 需要更多的计算资源
- 网络越深,梯度容易消失,优化困难(这时还没有提出BN时,网络的优化极其困难)
基于此,我们的目标就是,提高网络计算资源的利用率,在计算量不变的情况下,提高网络的宽度和深度。作者认为,解决这种困难的方法就是,把全连接改成稀疏连接,卷积层也是稀疏连接,但是不对称的稀疏数据数值计算效率低下,因为硬件全是针对密集矩阵优化的,所以,我们要找到卷积网络可以近似的最优局部稀疏结构,并且该结构下可以用现有的密度矩阵计算硬件实现,产生的结果就是Inception。
1.2 网络结构
Inception Module基本组成结构有四个成分。1*1卷积核,3*3卷积核,5*5卷积核,3*3最大池化。最后对四个成分运算结果进行通道上组合。
Inception结构如下图:
图(a)是原始版本的Inception模型,它的结构特点有
- 如此大小的卷积核,并没有特殊的意义,主要是为了方便对齐,后期可以得到相同大小的特征图易于拼接
- 使用不同大小的卷积核,则使感受野的大小也不同,这样即可得到不同尺度的特征。
图(b)是相对于图(a)增加了1*1卷积核进行降维,作用是
- 由于5*5的卷积核计算量太大,降低维度可以减少计算量
- 增加网络的深度和宽度,提高网络的表达能力
1.3 作用
Inception的核心思想:通过多个卷积核提取图像不同尺度的信息,最后进行融合,可以得到图像更好的表征
具体来说,假设我们要提取狗的脸部特征,不同图片中狗脸占比显然是不一样的,那么我们就需要使用不同大小的卷积核提取不同的信息。信息分布比较全局性的图像采用大卷积核,信息分布比较局部性的图像采用小卷积核。
作者提出的Inception的优点:
- 显著增加了每一步的单元数目,计算复杂度不会不受限制,尺度较大的特征在卷积之前先降维
- 视觉信息在不同尺度上进行处理融合,这样下一步可以从不同尺度提取特征
1.4 GoogLeNet
GoogLeNet是由Inception Module组成的,它的结构图:
它的特点:
- 采用模块化结构,方便增加和修改。整个网络结构其实就是叠加Inception Module
- 使用Dropout层,防止过拟合
- 使用Averagepool来代替全连接层的思想。实际在最后一层还是添加了一个全连接层,是为了大家做finetune。
- 另外增加了两个辅助的softmax分支,作用有两点,一是为了避免梯度消失,用于向前传导梯度。反向传播时如果有一层求导为0,链式求导结果则为0。二是将中间某一层输出用作分类,起到模型融合作用。最后的loss=loss_2 + 0.3 * loss_1 + 0.3 * loss_0。实际测试时,这两个辅助softmax分支会被去掉。
2. Inception-v2
论文链接:Batch Normalization
2.1 创新点
谷歌团队在2015年提出了Inception-v2,首次提出了批量归一化(Batch Normalization)方法,同时也改进了网络结构。具体的创新点:
2.1.1 Batch Normalization
在神经网络的每层计算中,参数变化导致数据分布不一致,会产生数据的协方差偏移问题,通过对第i