4.2 深度卷积网络:实例探究( 经典的卷积神经网络(LeNet-5、AlexNet、VGG)、残差网络、1x1卷积(维度==1x1的滤波器)、Inception 网络、CV现状)

简介 

本文讲到的经典 CNN 模型包括:

  • LeNet-5
  • AlexNet
  • VGG

此外还有 ResNet(Residual Network,残差网络),以及 Inception Neural Network。

 经典的卷积神经网络

LeNet-5

4.2 深度卷积网络:实例探究( 经典的卷积神经网络(LeNet-5、AlexNet、VGG)、残差网络、1x1卷积(维度==1x1的滤波器)、Inception 网络、CV现状)_第1张图片

特点:

  • LeNet-5 针对灰度图像而训练,因此输入图片的通道数为 1
  • 该模型总共包含了约 6 万个参数,远少于标准神经网络所需。
  • 典型的 LeNet-5 结构包含卷积层(CONV layer),池化层(POOL layer)和全连接层(FC layer),排列顺序一般为 CONV layer->POOL layer->CONV layer->POOL layer->FC layer->FC layer->OUTPUT layer。一个/多个卷积层后面跟着一个池化层的模式至今仍十分常用。
  • 当 LeNet-5模型被提出时,其池化层使用的是平均池化,而且各层激活函数一般选用 Sigmoid 和 tanh。现在,我们可以根据需要,做出改进,使用最大池化并选用 ReLU 作为激活函数。

相关论文:LeCun et.al., 1998. Gradient-based learning applied to document recognition。

吴恩达老师建议精读第二段,泛读第三段。

AlexNet

4.2 深度卷积网络:实例探究( 经典的卷积神经网络(LeNet-5、AlexNet、VGG)、残差网络、1x1卷积(维度==1x1的滤波器)、Inception 网络、CV现状)_第2张图片

特点:

  • AlexNet 模型与 LeNet-5 模型类似,但是更复杂,包含约 6000 万个参数。另外,AlexNet 模型使用了 ReLU 函数。
  • 当用于训练图像和数据集时,AlexNet 能够处理非常相似的基本构造模块,这些模块往往包含大量的隐藏单元或数据。

相关论文:Krizhevsky et al.,2012. ImageNet classification with deep convolutional neural networks。这是一篇易于理解并且影响巨大的论文,计算机视觉群体自此开始重视深度学习。

VGG

4.2 深度卷积网络:实例探究( 经典的卷积神经网络(LeNet-5、AlexNet、VGG)、残差网络、1x1卷积(维度==1x1的滤波器)、Inception 网络、CV现状)_第3张图片

特点:

  • VGG 又称 VGG-16 网络,“16”指网络中包含 16 个卷积层和全连接层
  • 超参数较少,只需要专注于构建卷积层。
  • 结构不复杂且规整,在每一组卷积层进行滤波器翻倍操作。
  • VGG 需要训练的特征数量巨大,包含多达约 1.38 亿个参数。

相关论文:Simonvan & Zisserman 2015. Very deep convolutional networks for large-scale image recognition。

残差网络

为什么残差网络

因为存在梯度消失和梯度爆炸问题,网络越深,就越难以训练成功。

残差网络(Residual Networks,简称为 ResNets)可以有效解决这个问题。 

简述

4.2 深度卷积网络:实例探究( 经典的卷积神经网络(LeNet-5、AlexNet、VGG)、残差网络、1x1卷积(维度==1x1的滤波器)、Inception 网络、CV现状)_第4张图片

4.2 深度卷积网络:实例探究( 经典的卷积神经网络(LeNet-5、AlexNet、VGG)、残差网络、1x1卷积(维度==1x1的滤波器)、Inception 网络、CV现状)_第5张图片

为了便于区分,在 ResNets 的论文He et al., 2015. Deep residual networks for image recognition中,非残差网络被称为普通网络(Plain Network)。将它变为残差网络的方法是加上所有的跳远连接。

优势

在理论上,随着网络深度的增加,性能应该越来越好。

但实际上,对于一个普通网络,随着神经网络层数增加,训练错误会先减少,然后开始增多。

但残差网络的训练效果显示,即使网络再深,其在训练集上的表现也会越来越好。

4.2 深度卷积网络:实例探究( 经典的卷积神经网络(LeNet-5、AlexNet、VGG)、残差网络、1x1卷积(维度==1x1的滤波器)、Inception 网络、CV现状)_第6张图片

残差网络 为什么有用

4.2 深度卷积网络:实例探究( 经典的卷积神经网络(LeNet-5、AlexNet、VGG)、残差网络、1x1卷积(维度==1x1的滤波器)、Inception 网络、CV现状)_第7张图片

4.2 深度卷积网络:实例探究( 经典的卷积神经网络(LeNet-5、AlexNet、VGG)、残差网络、1x1卷积(维度==1x1的滤波器)、Inception 网络、CV现状)_第8张图片

w[l+2].b[l+2] 就相当于一个开关,只要让这两个为0,就相当于没skip,可以达到增加网络深度却不影响网络性能的目的。
而是否把这两个参数设置为0,就要看反向传播,网络最终能够知道到底要不要skip。

1x1卷积(维度==1x1的滤波器)

1x1 卷积(1x1 convolution,或称为 Network in Network)指滤波器的尺寸为 1。

当通道数为 1 时,1x1 卷积意味着卷积操作==乘积操作。 

4.2 深度卷积网络:实例探究( 经典的卷积神经网络(LeNet-5、AlexNet、VGG)、残差网络、1x1卷积(维度==1x1的滤波器)、Inception 网络、CV现状)_第9张图片

当通道数更多时,1x1 卷积的作用实际上类似全连接层的神经网络结构,从而降低(或升高,取决于滤波器组数)数据的维度

池化能压缩数据的高度(nH)及宽度(nW),而 1×1 卷积(通过调节滤波器的个数)能压缩数据的通道数(nC)

比如32个滤波器,由原图片的192个通道(192层色彩) 压缩到32个通道。

4.2 深度卷积网络:实例探究( 经典的卷积神经网络(LeNet-5、AlexNet、VGG)、残差网络、1x1卷积(维度==1x1的滤波器)、Inception 网络、CV现状)_第10张图片

# 上图是我自己改的图片,个人认为是他们的原图片出错误了。

虽然论文Lin et al., 2013. Network in network中关于架构的详细内容并没有得到广泛应用,但是 1x1 卷积的理念十分有影响力,许多神经网络架构(包括 Inception 网络)都受到它的影响。

Inception 网络

简介

在之前的卷积网络中,我们只能选择单一尺寸和类型的滤波器。

选1*1的滤波器 还是3*3 5*5,选择困难?

Inception 网络的作用 == 通吃代替人工来确定卷积层中的滤波器尺寸与类型,或者确定是否需要创建卷积层或池化层。

4.2 深度卷积网络:实例探究( 经典的卷积神经网络(LeNet-5、AlexNet、VGG)、残差网络、1x1卷积(维度==1x1的滤波器)、Inception 网络、CV现状)_第11张图片

# 这个神奇的现象是padding的作用,所以大小一致

Inception 网络选用不同尺寸的滤波器进行 Same 卷积,并将卷积和池化得到的输出组合拼接起来,

最终让网络自己去学习需要的参数和采用的滤波器组合。

相关论文:Szegedy et al., 2014, Going Deeper with Convolutions

计算成本问题

太大

4.2 深度卷积网络:实例探究( 经典的卷积神经网络(LeNet-5、AlexNet、VGG)、残差网络、1x1卷积(维度==1x1的滤波器)、Inception 网络、CV现状)_第12张图片

图中有 32 个滤波器,每个滤波器的大小为 5x5x192。

输出结果大小为 28x28x32,所以对于结果上的每个数,都要执行 5x5x192 次乘法运算。

加法运算次数与乘法运算次数近似相等。因此,可以看作这一层的计算量为 28x28x32x5x5x192 = 1.2亿。

引入 1x1 卷积来减少其计算量

4.2 深度卷积网络:实例探究( 经典的卷积神经网络(LeNet-5、AlexNet、VGG)、残差网络、1x1卷积(维度==1x1的滤波器)、Inception 网络、CV现状)_第13张图片

对于同一个例子,我们使用 1x1 卷积把输入数据从 192 个通道减少到 16 个通道,然后对这个较小层运行 5x5 卷积,得到最终输出。这个 1x1 的卷积层通常被称作瓶颈层(Bottleneck layer)

改进后的计算量为 28x28x192x16 + 28x28x32x5x5x15 = 1.24 千万,减少了约 90%。

只要合理构建瓶颈层,就可以既显著缩小计算规模,又不会降低网络性能。

完整的inception网络

# 这个。。mark吧

引入 1x1 卷积后的 Inception 模块

4.2 深度卷积网络:实例探究( 经典的卷积神经网络(LeNet-5、AlexNet、VGG)、残差网络、1x1卷积(维度==1x1的滤波器)、Inception 网络、CV现状)_第14张图片

多个 Inception 模块组成一个完整的 Inception 网络(被称为 GoogLeNet,以向 LeNet 致敬)

4.2 深度卷积网络:实例探究( 经典的卷积神经网络(LeNet-5、AlexNet、VGG)、残差网络、1x1卷积(维度==1x1的滤波器)、Inception 网络、CV现状)_第15张图片

黑色椭圆圈出的隐藏层,这些分支都是 Softmax 的输出层,可以用来参与特征的计算及结果预测,起到调整并防止发生过拟合的效果。

经过研究者们的不断发展,Inception 模型的 V2、V3、V4 以及引入残差网络的版本被提出,这些变体都基于 Inception V1 版本的基础思想上。

使用开源的实现方案

很多神经网络复杂细致,并充斥着参数调节的细节问题,因而很难仅通过阅读论文来重现他人的成果。

想要搭建一个同样的神经网络,查看开源的实现方案会快很多。

迁移学习

# mark

相比于从头训练权重,下载别人已经训练好的网络结构的权重,用其做预训练,然后转换到自己感兴趣的任务上,有助于加速开发。 

数据扩增

常用的数据扩增包括

  • 镜像翻转
  • 随机裁剪
  • 色彩转换

色彩转换 == 对图片的 RGB 通道数值进行随意增加或者减少,改变图片色调。

PCA 颜色增强 == 更有针对性地对图片的 RGB 通道进行主成分分析(Principles Components Analysis,PCA),对主要的通道颜色进行增加或减少,可以采用高斯扰动做法来增加有效的样本数量。具体的 PCA 颜色增强做法可以查阅 AlexNet 的相关论文或者开源代码。

在构建大型神经网络的时候,数据扩增和模型训练可以由两个或多个不同的线程并行来实现。

CV现状

通常,学习算法有两种知识来源:

  • 被标记的数据
  • 手工工程

手工工程(Hand-engineering,又称 hacks)指精心设计的特性、网络体系结构或是系统的其他组件。

手工工程是一项非常重要也比较困难的工作。在数据量不多的情况下,手工工程是获得良好表现的最佳方式。

正因为数据量不能满足需要,历史上计算机视觉领域更多地依赖于手工工程。

近几年数据量急剧增加,因此手工工程量大幅减少。

另外,在模型研究或者竞赛方面,有一些方法能够有助于提升神经网络模型的性能:

  • 集成(Ensembling):独立地训练几个神经网络,并平均输出它们的输出
  • Multi-crop at test time:将数据扩增应用到测试集,对结果进行平均

但是由于这些方法计算和内存成本较大,一般不适用于构建实际的生产项目。

代码

https://gitee.com/bijingrui1997/deep_learning_notes/tree/master/4.2%20%E6%B7%B1%E5%BA%A6%E5%8D%B7%E7%A7%AF%E7%BD%91%E7%BB%9C

你可能感兴趣的:(#,吴恩达-深度学习)