[Lecture 9 ] CNN Architectures(CNN架构)

文章目录

        • 课堂提问
        • 1. LeNet-5
        • 2. AlexNet
        • 3. ZFNet
        • 4. VGGNet
        • 5. GoogleNet
        • 6. ResNet (残差网络)
        • 7. 比较
        • 8. 一些别的架构
        • 总结
        • 推荐阅读

课堂提问

  • Q1: 为什么学习ResNet中学习残差比学习直接映射要好?
  • A1: 具体请阅读原论文,但是从直觉上来说,我们直接学习映射,然后网络层堆的越来越多,最后可能太复杂了,但是如果学习残差,则我们加深网络的同时只是学习的残差 F ( X ) = H ( X ) − X F(X)=H(X)-X F(X)=H(X)X,如果学的过于复杂了,网络只需要学习残差F(X)=0,就可以将其挤掉,即一个恒等映射。

1. LeNet-5

[Lecture 9 ] CNN Architectures(CNN架构)_第1张图片
第一次用CNN来做手写体识别,网络比较浅,只有5层。

2. AlexNet

[Lecture 9 ] CNN Architectures(CNN架构)_第2张图片

  • 其在LeNet上做了一些改进,同时由于当时GPU容量不足,其特征图的前向计算和梯度的反向传播是在两张GPU上并行进行的。
    [Lecture 9 ] CNN Architectures(CNN架构)_第3张图片
    [Lecture 9 ] CNN Architectures(CNN架构)_第4张图片
  • 其获得了2012年的ImageNet的冠军

3. ZFNet

  • 其在AlexNet上做了一些超参数的优化,但是主要结构还是类似的,获得了2013年的ImageNet的冠军。
    [Lecture 9 ] CNN Architectures(CNN架构)_第5张图片

4. VGGNet

[Lecture 9 ] CNN Architectures(CNN架构)_第6张图片

  • 其的关键特点是固定使用 3 ∗ 3 3*3 33 尺寸的卷积核,和 2 ∗ 2 2*2 22 尺寸的池化核,相比于AlexNet其的深度更深,当然,参数也更多。

Q: 为什么使用 3*3 的卷积核?
A: 两层 3 ∗ 3 3*3 33 的 conv(步长为1),堆叠起来感受野(receptive field)与一个 7 * 7 的卷积核相同。但是,其参数量更小,而且能够组成更深的网络,更多的非线性激活,形成的特征更丰富。即参数量为
3 ∗ ( 3 ∗ 3 ∗ C i n ∗ C o u t ) 和 7 ∗ 7 ∗ C i n ∗ C o u t 3*(3*3*C_{in}*C_{out}) 和7*7*C_{in}*C_{out} 3(33CinCout)77CinCout

Q: 3个 s = 1 , k = 3 s=1,k=3 s=1,k=3的卷积核的有效感受野为多大?
A: 7 ∗ 7 7*7 77,可参考另一篇博客CNN中感受野的初步计算。

下面显示VGG16的每层的参数设置和总参数量:
[Lecture 9 ] CNN Architectures(CNN架构)_第7张图片

  • 可以看到存储量主要是在前几层的卷积层中,所以,对于后面的卷积层我们可以适当的增加通道数来丰富特征表达;
  • 而参数量主要几种在全连接层,因为FC层是密集连接;

总结
[Lecture 9 ] CNN Architectures(CNN架构)_第8张图片

5. GoogleNet

GooleNet是ILSVRC’14的分类冠军,VGGNet是第二名。它是一个更深的网络,有22层,但是参数量更少。
它设计了一个特殊的 inception 模块来进行组合卷积。然后再每一层中叠加该模块,同时顶层没有使用全连接层,减少了大量的参数量。
[Lecture 9 ] CNN Architectures(CNN架构)_第9张图片
Inception模块
[Lecture 9 ] CNN Architectures(CNN架构)_第10张图片

  • 该模块可以看成一个子网络,对输入的特征图进行不同尺度的卷积操作,来捕获输入中不同尺度的信息。然后在深度上将输出串联。
  • 但是这种模块也会产生计算性能的问题,同时我们的输出深度会越来越大(其中池化操作深度不变),例如:(卷积尺度保持不变是通过零填充)
  • [Lecture 9 ] CNN Architectures(CNN架构)_第11张图片
  • 而其中一个解决方案就是我们在卷积操作之前使用 1 ∗ 1 1*1 11 的卷积来减少深度,称为 沙漏层(Bottleneck)。
    [Lecture 9 ] CNN Architectures(CNN架构)_第12张图片
    其它部分

除了叠加Inception之外,GoogleNet还有其它小细节:

  • 主干网络(stem network): 先使用普通的卷积池化操作预处理[Lecture 9 ] CNN Architectures(CNN架构)_第13张图片
  • 尾端:没有使用太多的FC层
    [Lecture 9 ] CNN Architectures(CNN架构)_第14张图片
  • 辅助分支:为了使得前面几个层的参数也能得到训练,在中间添加辅助预测分支,帮助梯度更好的训练(至于最后是否有使用到多个分支来进行平均预测,请移步原论文)
    [Lecture 9 ] CNN Architectures(CNN架构)_第15张图片

6. ResNet (残差网络)

通过残差块使得网络在深度上得到了一个飞跃,在一定程度上解决了网络深度越深梯度传播越困难的问题。
引入
深度网络的优化困难问题:普通的网络增加深度后性能降低
[Lecture 9 ] CNN Architectures(CNN架构)_第16张图片
我们的直觉应该是:深层的网络不应该比浅层的表现差。
一个解决方案是:从浅层网络复制权重,然后增加一些网络层来学习恒等映射(identity mapping)。
但是ResNet中的做法却和这个不太一样,其转成成学习一个残差(residual mapping):
[Lecture 9 ] CNN Architectures(CNN架构)_第17张图片

  • 如上图,我们新增加网络层来学习我们的残差 Residual Mapping,如果 中间没有权重层,则其是一直不变地,这更像是学习如何去修正我们的X,而不是学习它本身。

即从某种意义上来说,它并不是像普通网络那样去学习我们输入的X该怎么去映射,即直接学习一个H(X)。而是去学习一个残差F(X) = H(X) - X,然后去修正我们的X,即H(X) = F(X) + X。如果网络已经OK了,就不用修正了,即残差为0。

  • 同时,这种残差结构有利于上流梯度的传播,因为加法门有一个分支能直接复制上流的梯度。

结构
ResNet的基本结构如下图:
[Lecture 9 ] CNN Architectures(CNN架构)_第18张图片

  • 其最后没有增加额外的FC层,只是先用平均池化来Pool,再添加分类的FC层。
  • 对于比较深的ResNet,其也有沙漏层(Bottleneck)来减少计算量。
    [Lecture 9 ] CNN Architectures(CNN架构)_第19张图片- 训练细节
    [Lecture 9 ] CNN Architectures(CNN架构)_第20张图片
    [Lecture 9 ] CNN Architectures(CNN架构)_第21张图片

7. 比较

[Lecture 9 ] CNN Architectures(CNN架构)_第22张图片
[Lecture 9 ] CNN Architectures(CNN架构)_第23张图片

8. 一些别的架构

[Lecture 9 ] CNN Architectures(CNN架构)_第24张图片
[Lecture 9 ] CNN Architectures(CNN架构)_第25张图片
[Lecture 9 ] CNN Architectures(CNN架构)_第26张图片
[Lecture 9 ] CNN Architectures(CNN架构)_第27张图片
[Lecture 9 ] CNN Architectures(CNN架构)_第28张图片
[Lecture 9 ] CNN Architectures(CNN架构)_第29张图片
[Lecture 9 ] CNN Architectures(CNN架构)_第30张图片

总结

[Lecture 9 ] CNN Architectures(CNN架构)_第31张图片
[Lecture 9 ] CNN Architectures(CNN架构)_第32张图片

推荐阅读

  • Convolutional Neural Networks: Architectures, Convolution / Pooling Layers
  • Understanding and Visualizing Convolutional Neural Networks
  • Transfer Learning and Fine-tuning Convolutional Neural Networks

你可能感兴趣的:(#,CS231n)