花书+吴恩达深度学习(十四)卷积神经网络 CNN 之经典案例(LetNet-5, AlexNet, VGG-16, ResNet, Inception Network)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhq9695/article/details/85039862

目录

0. 前言

1. LeNet-5

2. AlexNet

3. VGG-16

4. ResNet 残差网络

5. Inception Network


如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~

花书+吴恩达深度学习(十)卷积神经网络 CNN 之卷积层

花书+吴恩达深度学习(十一)卷积神经网络 CNN 之池化层

花书+吴恩达深度学习(十二)卷积神经网络 CNN 之全连接层

花书+吴恩达深度学习(十三)卷积神经网络 CNN 之运算过程(前向传播、反向传播)

花书+吴恩达深度学习(十四)卷积神经网络 CNN 之经典案例(LetNet-5, AlexNet, VGG-16, ResNet, Inception Network)

0. 前言

本篇文章主要介绍一些经典的卷积神经网络。

  • LeNet-5
  • AlexNet
  • VGG-16
  • ResNet
  • Inception Network

1. LeNet-5

LeNet-5 表示一个 5 层的卷积神经网络,主要作用于灰度图像。

  • 输入层是 32\times 32\times 1 的灰度图像
  • 第一层是 5\times 5,\ s=1 的 6 个过滤器的卷积层,运算结果是 28\times 28\times 6,加上 f=2,\ s=2 的平均池化,运算结果是 14\times 14\times 6 
  • 第二层是 5\times 5,\ s=1 的 16 个过滤器的卷积层,运算结果是 10\times 10\times 16, 加上 f=2,\ s=2 的平均池化,运算结果是 5\times 5\times 16
  • 第三层是 120 个神经元的全连接层
  • 第四层是 84 个神经元的全连接层
  • 第五层是 10 个输出的 softmax 输出层

因论文的发表时间较早,激活函数多采用 sigmoid 或者 tanh 。

如下图所示(图源:吴恩达深度学习):

2. AlexNet

AlexNet 表示一个 8 层的卷积神经网络,主要作用于彩色图像。

  • 输入层是 227\times 227\times 3 的彩色图像
  • 第一层是 11\times 11,\ s=4  的 96 个过滤器的卷积层,运算结果是 55\times 55\times 96,加上 f=3,\ s=2 的最大池化,运算结果是 27\times 27\times 96
  • 第二层是 5\times 5 的 256 个过滤器的相同卷积,运算结果是 27\times 27\times 256,加上 f=3,\ s=2 的最大池化,运算结果是 13\times 13\times 256
  • 第三层是 3\times 3 的 384 个过滤器的相同卷积,运算结果是 13\times 13\times 384
  • 第四层是 3\times 3 的 384 个过滤器的相同卷积,运算结果是 13\times 13\times 384
  • 第五层是 3\times 3 的 256 个过滤器的相同卷积,运算结果是 13\times 13\times 256,加上 f=3,\ s=2 的最大池化,运算结果是 6\times 6\times 256
  • 第六层是 4096 个神经元的全连接层
  • 第七层是 4096 个神经元的全连接层
  • 第八层是 1000 个输出的 softmax 输出层

激活函数采用 ReLu

如下图所示(图源:吴恩达深度学习):

3. VGG-16

VGG-16 网络是一种专注于构建卷积层的简单架构网络,但是网络很深,总共有 16 层。

  • 每一个卷积层都是 3\times 3,\ s=1 的相同卷积,每一个池化层都是 f=2,\ s=2 的最大池化
  • 输入层是 224\times 224\times 3 的彩色图像
  • 第一层至第二层是 2 个 64 个过滤器的相同卷积层和最大池化,运算结果是 112\times 112\times 64
  • 第三层至第四层是 2128 个过滤器的相同卷积层和最大池化,运算结果是 56\times 56\times 128
  • 第五层至第七层是 3 个 256 个过滤器的相同卷积层和最大池化,运算结果是 28\times 28\times 256
  • 第八层至第十层是 3512 个过滤器的相同卷积层和最大池化,运算结果是 14\times 14\times 512
  • 第十一层至第十三层是 3512 个过滤器的相同卷积层和最大池化,运算结果是 7\times 7\times 512
  • 第十四层是 4096 个神经元的全连接层  
  • 第十五层是 4096 个神经元的全连接层
  • 第十六层是 1000 个输出的 softmax 输出层

如下图所示(图源:吴恩达深度学习):

4. ResNet 残差网络

通常的前向传播是例如:

\begin{align*} &z^{[l+1]}=W^{[l+1]}a^{[l]}+b^{[l+1]} \\ &a^{[l+1]}=g(z^{[l+1]}) \\ &z^{[l+2]}=W^{[l+2]}a^{[l+1]}+b^{[l+2]} \\ &a^{[l+2]}=g(z^{[l+2]}) \\ \end{align*}

而残差网络是指这样的网络:

\begin{align*} &z^{[l+1]}=W^{[l+1]}a^{[l]}+b^{[l+1]} \\ &a^{[l+1]}=g(z^{[l+1]}) \\ &z^{[l+2]}=W^{[l+2]}a^{[l+1]}+b^{[l+2]} \\ &a^{[l+2]}=g(z^{[l+2]}+a^{[l]}) \\ \end{align*}

其中,加上的 a^{[l]} 使得这两层网络构成了一个残差块(residual block)。

这种跳跃几层的连接称为跳远连接(skip connection)或捷径(short cut)。

如下图所示(图源:吴恩达深度学习):

在残差块中,z^{[l+2]}\ a^{[l]} 具有相同的维度,所以才残差网络中多采用相同卷积

如果维度不同,则可采用 a^{[l+2]}=g(z^{[l+2]}+w_sa^{[l]}) 。

为什么使用残差网络:

  1. 在神经网络很深的情况下,存在梯度消失或者梯度爆炸的情况,而 ResNet 可以解决这类问题,构建更深的网络

  2. 虽然理论上,网络越深,训练误差会越低,但是实际上,随着网络的加深,训练误差会先降低然后升高。但是在残差网络中,随着网络的加深,训练误差会越来越低

例如,在一个大型网络后方加一个上述的残差块 a^{[l+2]}=g(z^{[l+2]}+a^{[l]}),当使用正则化的时候,可能会使得 w^{[l+2]} 很小,以至于 z^{[l+2]}=0 ,所以 a^{[l+2]}=g(a^{[l]}) ,因为采用 ReLU 激活函数,a^{[l]} \geq 0,所以 a^{[l+2]}=a^{[l]},所以更深的网络可能并不会影响梯度的什么问题。

ResNet 通常是几个卷积层加一个池化层,再几个卷积层加一个池化层,最后一个全连接层和一个 softmax 输出层。

ResNet 如下图所示(图源:吴恩达深度学习):

5. Inception Network

Inception 这个名字来源于电影 Inception(盗梦空间),意味着我们要走的更深

Inception Network 可以代替人工决定是否使用卷积层或者池化层,如何构建卷积层过滤器。

对一个输入,同时卷积于几种不同过滤器,或者同时使用相同最大池化,保证输出的维度都是不变的。

然后将每个通道叠加在一起,组成一个新的输出。

如下图所示(图源:吴恩达深度学习):

代价是计算成本提高了。

为了降低计算代价,可以使用 1\times 1 卷积作为瓶颈层先压缩通道数,然后再通过卷积扩大通道数。

单个 Inception 模块如下所示(图源:吴恩达深度学习):

Inception 网络如下所示(图源:吴恩达深度学习):

可在其中加入一些分支,使得中间隐藏层同样也能作为输出进行预测。


如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~

猜你喜欢

转载自blog.csdn.net/zhq9695/article/details/85039862