[深度学习 - 网络选型] CNN经典卷积网络模型
以下大部分只是来源于:????https://github.com/scutan90/DeepLearning-500-questions - 第四章:经典网络。
CNN经典网络模型
LeNet (1998)
上图展示的是LeNet-5的网络结构图。
C代表卷积层,S代表下采样层。
LeNet作为较早的卷积神经网络代表,提出了权重共享的思想。
例如在C1(第一层卷积层)原图经过六个卷积核得到六个特征图。这里的卷积核就是权重,原图上所有的像素共享一个卷积核,经过滑动扫描得到一张特征图。
它的作用:降低整个网络的参数量;可以学习到图像的局部特征,局部的结构信息。
S为下采样层,实际就是降低分辨率。
它的作用:使得特征更加抽象化,网络更容易收敛;降低分辨率,使得计算速度加快;网络对偏移和形变不敏感。
LeNet-5经过三个卷积层,两个下采样层(5层网络)最后通过全连接层输出。
AlexNet (2012)
AlexNet的模型跟LeNet模型相似,AlexNet先经过五层卷积操作,在最后三层使用全连接层。
与LeNet不同的是,AlexNet网络结构分为上下两层,分别对行和列进行卷积运算,而且两层分别在不同的GPU上操作。
AlexNet 创新点:
- 卷积操作中都使用ReLU对神经元进行**,使得在网络加深的时候,权值更新保持稳定。(相比tanh和sigmoid函数在误差反向传递时,不会有由于非线性引起的梯度弥散/暴涨。)
- 在多个GPU上模型训练,提供训练速度和数据使用规模。(分组卷积的思想。)
- 使用最大池化代替平均池化,防止过拟合。
- 使用dropout 随机丢弃训练中的神经元,防止过拟合。
- 局部响应归一化,提供模型精度。
ZFNet (2013)
ZFNet是对AlexNet 的微调,并且通过反卷积的方式可视化各层特征图。
ZFNet创新点:
- 通过反卷积可视化各层的特征图。
- 网络结构上和AlexNet类似,但是取消多个GPU同时训练。
- ZFNet认为AlexNet第一层的卷积核和步长太大,导致网络得到的特征不够细致,因此将卷积核缩小至7 * 7,步长由4变为2。其他层上也做了微调。
- 性能上比AlexNet较好,但是基本框架没多大变化。
Network in Network (2014)
NIN网络提出使用1 * 1卷积核的思想。它用了比AlexNet更少的参数,达到了跟其一样的效果。
1×1卷积核可以起到一个跨通道聚合的作用,所以进一步可以起到降维(或者升维)的作用,起到减少参数的目的。
NIN网络创新点:
- CNN上面的线性卷积层(GLM)被替换成了多层感知机(MLP)
- 使用1 * 1的卷积核进行卷积。(MLP相当于在正常的卷积层后面,再添加一个1×1的卷积层。)
- 将输出时候的全连接层使用全局池化层(global pooling)代替。
- 之后googleNet中的思想就来源于此。
VGGNet (2014)
VGGNet 原论文(需要科学上网看)中的VGGNet包含了6个版本的演进,分别对应VGG11、VGG11-LRN、VGG13、VGG16-1、VGG16-3和VGG19,不同的后缀数值表示不同的网络层数(VGG11-LRN表示在第一层中采用了LRN的VGG11,VGG16-1表示后三组卷积块中最后一层卷积采用卷积核尺寸为11,相应的VGG16-3表示卷积核尺寸为33)
VGGNet创新点:
- 整个网络都是用同样大小的卷积核(3 * 3)。
- 用两层3 * 3的卷积层代替一层 5 * 5的卷积层,三层3 * 3 的卷积层代替一层7 * 7的卷积层。使得网络参数量更小,且层数越多,网络能力越强。
- 训练的时候先预训练VGG11,再用VGG11的权重来初始化VGG13,同理反复训练并初始化VGG19。
- 在训练过程中使用多尺度的变换对原始数据做数据增强,使得模型不易过拟合。
GoogleNet(Inception)(2014)
模型的思想是用了上面NIN的思想。
主要的思想就是对网络的宽度进行扩展。(子网络块Inception结构)
- Inception-v1在同一层中采用不同的卷积核,并对卷积结果进行合并;
- Inception-v2组合不同卷积核的堆叠形式,并对卷积结果进行合并;
- Inception-v3则在Inception-v2基础上进行深度组合的尝试;
- Inception-v4结构相比于前面的版本更加复杂,子网络中嵌套着子网络。
下图为Inception结构图。
GoogleNet创新点:
- 采用不同大小的卷积核使得感受野的大小不同,在最后进行拼接,使不同尺度特征融合。
- 网络越到后面,特征越抽象,而且每个特征所涉及的感受野也更大了,因此随着层数的增加,3x3和5x5卷积的比例也要增加。但是,使用5x5的卷积核仍然会带来巨大的计算量。 为此,文章借鉴NIN2,采用1x1卷积核来进行降维。