Inception v1\v2\v3\v4创新点总结:
Inception v1 (GoogleNet) 2014
Inception v2 (Batch Norm) 2015
Inception v3 (Factorization) 2015
Inception v4 (ResNet) 2016
一、GoogLeNet Incepetion V1
为了解决巨量参数带来的过拟合和大大增加了计算成本的问题提出了 Inception结构
【inception】
- 密集成分 来近似最优的局部稀疏结构
- 始用NIN,采用1*1卷积降维,降低参数量
【总结】
- googlenet采用了模块化结构,方便添加和修改
- 网络的最后采用了average pooling 来替代全连接层。(但在最后还是加了一个全连接层,主要是为了方便以后finetune)
- 虽然移除了 全连接层,但是还是在网络中使用了dropout
- 为了避免梯度消失,网络额外增加了两个辅助的softmax 用于向前传到梯度。
二、GoogLeNet Incepetion V2
- 加入了BN batch noramalization 加快了学习 减少了计算量
- 解决梯度消失和梯度爆炸问题
- 学习了VGG用两个3´3的卷积代替5´5的大卷积
三、GoogLeNet Incepetion V3
给出了一些已被证明有效的用于放大网络的通用准则和优化方法。
- 避免表达瓶颈,特别是网络靠前的地方。
(信息流前向传播过程中显然不能经过高度压缩的层,即表达瓶颈。从input到output,feature map的宽和高基本都会逐渐变小,但是不能一下子就变得很小。) - 高位特征更容易处理。高维特征更容易区分,回加快训练
- 可以在低维度上惊喜空间汇聚,二无需担心丢失更多信息。比如在进行3*3卷积之前,可以对输入降维,而不会产生严重后果。
- 平衡网络的深度和宽度。
优化Inception结构
引入Factorizaiton into small conv 的思想:
一个较大的二维卷积拆分成两个较小的一维卷积。如 7*7 拆分成 1 * 7 和7 * 1
好处有三:
1.节约的大量参数,加速运算。
2.增加了一层非线性,加强了模型表达能力。
3.非对称的卷积拆封,可以处理更多更丰富的空间特征。
第一张图 :是v1使用的 inception
第二张图:用3*3卷积 替代大核卷积
第三张图:用n * 1 替代大卷积核
优化辅助分类器
优化池化
按照传统的做法,在pooling之前,为了防止信息丢失,应当加入了expand层,如下图右半部分。这么做有个问题,会增加运算量。
上图可以这么理解,Szegedy利用了两个并行的结构完成grid size reduction,分别是conv和pool,就是上图的右半部分。左半部分是右半部分的内部结构。
优化标签
Labels的脉冲性质会引发两个不良后果:一是over-fitting,另外一个是降低了网络的适应性。
Szegedy在阐述完上面两个缺点后,补充了一句话,说不良后果的产生就是因为网络太依赖它所预测的结果。原来很突兀的one_hot_labels稍微的平滑了一点,分给其他labels,避免了网络过度学习labels而产生的弊端。
label smooth
new_labels = (1.0 - label_smoothing) * one_hot_labels + label_smoothing / num_classes
四、Inception V4
主要是结合了微软的 ResNet