美文网首页
CNN经典模型总结

CNN经典模型总结

作者: shijiatongxue | 来源:发表于2019-03-21 15:37 被阅读0次
  • LeNet-5
  • AlexNet
  • VGG
  • ResNet
  • GoogLeNet

Ng推荐论文阅读顺序:AlexNet——VGG——LeNet(第二章,第三章可选)


1 LeNet(Yann Lecun et al.,1998)

为什么要提出卷积神经网络?
经过梯度下降训练过的多层网络可以学习复杂的、高纬的、非线性的映射。传统的模式识别需要手动进行特征提取和减少无关变量的影响。一个神经网络可以几乎直接获得原始数据(规范大小的图像),并进行识别。但是存在一些问题:
首先,对于一般大小的图像也有数百的变量(像素)。一个有一百隐藏单元的全连接层需要100*100的变量。如此多的变量需要系统有很大的容量,因此需要一个很大的训练集。同时,保存这么多的变量也需要很大的内存:

假如每个参数为32位的浮点数,也就是4Byte,则对于10000参数我们需要,4*10^4=40MB。资料显示,当时的计算机内存大小为~64MB。参数就占用了62.5%的内存,我们还要加载图像。

但图像或语音应用的非结构化网络的主要缺陷在于,它们在翻译或输入的局部失真方面没有内置的不变性。也就是说,必须把图像进行大小规范化并且把输入放到图像中心。但是事实并不是完美的,由于图像的变化(大小、倾斜和位置变动),需要数据大量的训练数据去覆盖可能会出现的变化。但是在卷积神经网络中,通过强制跨空间复制权重(卷积核扫描整张图),可以自动获得位移不变性。
其次,全连接网络的另一个缺陷是完全忽略了输入的拓扑结构。在2-D空间,相近的像素是非常相似的。卷积网络通过将隐藏单元的接收域限制为局部(卷积核大小)来强制提取局部特征。

LeNet-5
  • 2个卷积层+2个子采样层

子采样层的作用是为了降低特征图的分辨率,降低了输出对位移和畸变的敏感性。

但是现在Hinton提出池化效果很好可能是个“灾难”。

  • 3个FC层
  • 数字识别可以将测试错误率降到0.8%

2 AlexNet(Alex Krizhevsky et al., 2012)

  • 60百万参数
  • 5卷积层
  • 3全连接层
  • 1000维输出
  • ReLU激活函数

获得了比以往更快的训练速度,比tanh快6倍。由于ReLU函数的特点,梯度下降过程变快了。

  • 减少过拟合

为了减少过拟合,该论文使用了数据集扩增技术,包括从大图里面随机提取小图和水平翻转,不使用数据扩增技术会导致网络过拟合,被迫选择较小的网络(网络越小越不容易过拟合)。第二种数据扩增形式是改变训练图像中RGB通道的强度。这项技术可以降低1%的top-1错误率。
为了避免过拟合,AlexNet还使用了失活(Dropout)技术。对每个隐藏层的神经元以0.5的概率不参与训练,包括前向传播和后向传播。这项技术可以使得神经元可以获得更鲁棒的特征。在测试的时候,使用所有的神经元同时对输出乘以0.5。

下图是Alex网络的框架图,分上下两层是使用了两块GPU进行训练,它们是完全一致的。

AlexNet
  • 训练细节
梯度下降 随机梯度下降
Batch size 128
Dropout 0.5
Momentum 0.9
权重衰减 0.0005
参数初始化 θ~N(0, 0.01)
偏差初始化 0或1
学习率 0.01
迭代次数 90
数据集大小 1.2百万张图像
训练时间 6天
GPU 两块 NVIDIA GTX 580 3GB

3 VGG(Karen Simonyan&Andrew Zisserman,2015)

VGG网络的突破在于使用了更小的卷积核(3×3),把它们进行简单叠加(16-19层)之后也能有很好的效果。

  • 138百万参数(VGG16)
  • 16层3×3卷积
  • 最大池化
  • 3个全连接层
  • 与AlexNet相同的数据扩增
VGG
  • 训练细节

VGG参照了AlexNet的训练

梯度下降 mini-batch梯度下降
Batch size 256
Monmentum 0.9
L2正则化率 5·10^{-4}
Dropout 0.5,前两个FC层
学习率 0.01
参数初始化 预训练或服从N(0, 0.1)
偏差初始化 0
训练集大小 1.3百万张图像
验证集大小 50千张图像
测试集大小 100千张图像
训练时间 2-3周
GPU 4个 NVIDIA Titan Black

4 GoogLeNet(Szegedy et al.,2015)

如果有足够的数据,提高性能的最直接方式就是扩大神经网络的大小。一方面是深度,一方面是宽度(每层的神经元个数)。但是存在两个缺点:
首先,大的网络意味着大量的参数,容易过拟合。
其次,大的网络耗费大量的计算资源。

对于一个两层的神经网络,均匀增加卷积核的数量会带来2次方的计算代价。

由于计算预算总是有限的,因此即使主要目标是提高性能质量,计算资源的有效分配也比不加选择地增加规模更为可取。

解决这两个问题的一个基本方法是引入稀疏性,并将全连接层替换为稀疏层,即使在卷积内部也是如此。
我们需要做的是,寻找最优局部单元,然后重复它。

Inception模块
  • 22层
  • 网络的前几层是普通的卷积层
  • 使用1×1的卷积层进行降维

之前有人用1×1的卷积层是为了增加深度进而增加神经网络的表现能力,本文是为了降维。

  • 训练细节
梯度下降 随机梯度下降
Momentum 0.9
学习率 每8次迭代减少4%
GoogLeNet

5 ResNet(何凯明等,2015)

由于层数的重要性,一个问题出现了:学习更好的网络是否和堆叠更多层一样容易?回答这个问题的一个障碍是梯度消失/爆炸问题,这妨碍了网络前几层的收敛(?)。这个问题以往的解决办法是规范化初始值和中间层。
随着网络深度的增加,精度会达到饱和(这并不奇怪),然后迅速下降。出乎意料的是,这种退化不是由过拟合引起的,并且在适当的深度模型中添加更多层会导致更高的训练误差。

按照经验来说,网络越深,训练效果越好。但实验结果显示不是这样的。

本文使用了“残差模块”解决退化问题。简单来说就是把前一些层的输出传送到当前层进行计算。注意维度必须相同,如果不同就需要转换成当前维度。
a^{[l+2]}=g(z^{[l+2]}+a^{[l]})

残差模块

从结构上看,ResNet和VGG很像,只不过加了残差模块。

  • 152层(VGG19的8倍)
  • 数据集处理技术(随机裁剪、水平翻转、归一化)
  • batch规范化(卷积层与激活函数之间)
  • 训练细节
梯度下降 mini-batch梯度下降
Batch size 256
学习率 0.1
权重衰减 0.0001
Momentum 0.9
Dropout 0

ResNet实验测试了1202层的网络可以将训练误差降到0.1%以下,测试误差在7.93%;但是与110层的网络相比,测试误差要高一些,尽管两者有相似的训练误差。这说明发生了过拟合现象,对于小数据集来说,1202层网络的19.4百万参数太大了。可以将正则化技术起来,不过这篇论文没有使用正则化技术。


参考文献:
LeNet:Gradient-Based Learning Applied to Document Recognition
AlexNet:ImageNet Classification with Deep Convolutional Neural Networks
VGG:VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION
GoogLeNet:Going Deeper with Convolutions
ResNet:Deep Residual Learning for Image Recognition

相关文章

网友评论

      本文标题:CNN经典模型总结

      本文链接:https://www.haomeiwen.com/subject/mmyfvqtx.html