经典CNN:LeNet-5,AlexNet,VGG,ResNets

1. 为什么要进行实例探究?

(Why look at case studies)

上周我们讲了CNN的基本构建,比如卷积层、池化层以及全连接层等。事实上,过去几年计算机视觉中的大量研究都集中在如何把这些基本构件组合起来,形成有效的卷积神经网络。对于我们来说,通过研究别人构建的有效组件案例是个不错的办法。

实际上在计算机视觉任务中表现良好的神经网络框架往往也适用于其它任务,也就是说,如果有人已经训练或者计算出擅长识别猫、狗、人的神经网络或者神经网络框架,而你的计算机视觉识别任务是构建一个自动驾驶汽车,你完全可以借鉴别人的神经网络框架来解决自己的问题。


2. 经典的卷积网络

(Classic networks)

介绍几种经典的卷积神经网络结构,分别是LeNet、AlexNet、VGGNet。

  • LeNet-5
    LeNet-5模型主要是针对灰度设计的,由Yann LeCun教授于1998年提出来的,它是第一个成功应用于数字识别问题的卷积神经网络。在MNIST数据中,它的准确率达到大约99.2%。典型的LeNet-5结构包含CONV layer,POOL layer和FC layer,顺序一般是 CONV layer->POOL layer->CONV layer->POOL layer->FC layer->FC layer->OUTPUT layer,即 y^\hat{y}。下图所示的是一个数字识别的LeNet-5的模型结构:
    在这里插入图片描述
    该LeNet模型总共包含了大约6万个参数。值得一提的是,当时Yann LeCun提出的LeNet-5模型池化层使用的是average pool,而且各层激活函数一般是Sigmoid和tanh。现在,我们可以根据需要,做出改进,使用max pool和激活函数ReLU。

  • AlexNet
    AlexNet模型是由Alex Krizhevsky、Ilya Sutskever和Geoffrey Hinton共同提出的,其直接对彩色的大图像进行处理,+结构如下所示:
    在这里插入图片描述
    AlexNet模型与LeNet-5模型类似,只是要复杂一些,总共包含了大约6千万个参数。同样可以根据实际情况使用激活函数ReLU。原作者还提到了一种优化技巧,叫做Local Response Normalization(LRN)。 而在实际应用中,LRN的效果并不突出。

  • VGG
    VGG也称为VGG-16网络,其参数多达1亿3千万,模型更加复杂一些,一般情况下,其CONV layer和POOL layer设置如下:

    • CONV = 3×3 filters, s = 1, same
    • MAX-POOL = 2×2, s = 2

    在这里插入图片描述


3.残差网络(ResNets)

(Residual Networks)

如果神经网络层数越多,网络越深,由于梯度消失和梯度爆炸的影响,整个模型难以训练成功。解决的方法之一是人为地让神经网络某些层跳过下一层神经元的连接,隔层相连,弱化每层之间的强联系。这种神经网络被称为 残差网络 (ResNets)。

下面是一个普通的神经网络块的传输:
在这里插入图片描述
而残差网络由许多隔层相连的神经元子模块组成,我们称之为 残差块 Residual block。单个 残差块 的结构如下图所示:
在这里插入图片描述
上图中红色部分称为 short cut 或者 skip connection,直接建立 a[l]a^{[l]}a[l+2]a^{[l+2]}之间的隔层联系。其前向传播的计算步骤为:

  • z[l+1]=W[l+1]a[l]+b[l+1]z^{[l+1]}=W^{[l+1]}a^{[l]}+b^{[l+1]}
  • a[l+1]=g(z[l+1])a^ {[l+1]}=g(z^{ [l+1]} )
  • z[l+2]=W[l+2]a[l+1]+b[l+2]z ^{[l+2]} =W ^{[l+2]} a^{[l+1]}+b^{ [l+2]}
  • a[l+2]=g(z[l+2]+a[l])a^{ [l+2] }=g(z ^{[l+2]} +a^{ [l]} )

a[l]a ^{[l]} 直接隔层与下一层的线性输出相连,与 z[l+2]z^{[l+2]} 共同通过激活函数(ReLU)输出 a[l+2]a^{[l+2]}

该模型由Kaiming He, Xiangyu Zhang, Shaoqing Ren和Jian Sun共同提出。由多个 残差块 组成的神经网络就是 残差网络。其结构如下图所示:

在这里插入图片描述

实验表明,这种模型结构对于训练非常深的神经网络,效果很好。另外,为了便于区分,我们把 非残差网络 称为 Plain Network。

与 Plain Network 相比,Residual Network 能够训练更深层的神经网络,有效避免发生发生梯度消失和梯度爆炸。从下面两张图的对比中可以看出,随着神经网络层数增加,Plain Network 实际性能会变差,training error 甚至会变大。然而,Residual Network 的训练效果却很好,training error 一直呈下降趋势。

在这里插入图片描述

参考:
大树先生:DeepLearning.ai 笔记
红色石头:deeplearning.ai笔记

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章