目录
如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~
花书+吴恩达深度学习(十二)卷积神经网络 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 表示一个 层的卷积神经网络,主要作用于灰度图像。
- 输入层是 的灰度图像
- 第一层是 的 个过滤器的卷积层,运算结果是 ,加上 的平均池化,运算结果是
- 第二层是 的 个过滤器的卷积层,运算结果是 , 加上 的平均池化,运算结果是
- 第三层是 个神经元的全连接层
- 第四层是 个神经元的全连接层
- 第五层是 个输出的 softmax 输出层
因论文的发表时间较早,激活函数多采用 sigmoid 或者 tanh 。
如下图所示(图源:吴恩达深度学习):
2. AlexNet
AlexNet 表示一个 层的卷积神经网络,主要作用于彩色图像。
- 输入层是 的彩色图像
- 第一层是 的 个过滤器的卷积层,运算结果是 ,加上 的最大池化,运算结果是
- 第二层是 的 个过滤器的相同卷积,运算结果是 ,加上 的最大池化,运算结果是
- 第三层是 的 个过滤器的相同卷积,运算结果是
- 第四层是 的 个过滤器的相同卷积,运算结果是
- 第五层是 的 个过滤器的相同卷积,运算结果是 ,加上 的最大池化,运算结果是
- 第六层是 个神经元的全连接层
- 第七层是 个神经元的全连接层
- 第八层是 个输出的 softmax 输出层
激活函数采用 ReLu
如下图所示(图源:吴恩达深度学习):
3. VGG-16
VGG-16 网络是一种专注于构建卷积层的简单架构网络,但是网络很深,总共有 层。
- 每一个卷积层都是 的相同卷积,每一个池化层都是 的最大池化
- 输入层是 的彩色图像
- 第一层至第二层是 个 个过滤器的相同卷积层和最大池化,运算结果是
- 第三层至第四层是 个 个过滤器的相同卷积层和最大池化,运算结果是
- 第五层至第七层是 个 个过滤器的相同卷积层和最大池化,运算结果是
- 第八层至第十层是 个 个过滤器的相同卷积层和最大池化,运算结果是
- 第十一层至第十三层是 个 个过滤器的相同卷积层和最大池化,运算结果是
- 第十四层是 个神经元的全连接层
- 第十五层是 个神经元的全连接层
- 第十六层是 个输出的 softmax 输出层
如下图所示(图源:吴恩达深度学习):
4. ResNet 残差网络
通常的前向传播是例如:
而残差网络是指这样的网络:
其中,加上的 使得这两层网络构成了一个残差块(residual block)。
这种跳跃几层的连接称为跳远连接(skip connection)或捷径(short cut)。
如下图所示(图源:吴恩达深度学习):
在残差块中, 具有相同的维度,所以才残差网络中多采用相同卷积。
如果维度不同,则可采用 。
为什么使用残差网络:
-
在神经网络很深的情况下,存在梯度消失或者梯度爆炸的情况,而 ResNet 可以解决这类问题,构建更深的网络
-
虽然理论上,网络越深,训练误差会越低,但是实际上,随着网络的加深,训练误差会先降低然后升高。但是在残差网络中,随着网络的加深,训练误差会越来越低
例如,在一个大型网络后方加一个上述的残差块 ,当使用正则化的时候,可能会使得 很小,以至于 ,所以 ,因为采用 ReLU 激活函数,,所以 ,所以更深的网络可能并不会影响梯度的什么问题。
ResNet 通常是几个卷积层加一个池化层,再几个卷积层加一个池化层,最后一个全连接层和一个 softmax 输出层。
ResNet 如下图所示(图源:吴恩达深度学习):
5. Inception Network
Inception 这个名字来源于电影 Inception(盗梦空间),意味着我们要走的更深。
Inception Network 可以代替人工决定是否使用卷积层或者池化层,如何构建卷积层过滤器。
对一个输入,同时卷积于几种不同过滤器,或者同时使用相同最大池化,保证输出的维度都是不变的。
然后将每个通道叠加在一起,组成一个新的输出。
如下图所示(图源:吴恩达深度学习):
代价是计算成本提高了。
为了降低计算代价,可以使用 卷积作为瓶颈层先压缩通道数,然后再通过卷积扩大通道数。
单个 Inception 模块如下所示(图源:吴恩达深度学习):
Inception 网络如下所示(图源:吴恩达深度学习):
可在其中加入一些分支,使得中间隐藏层同样也能作为输出进行预测。
如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~