- 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空间,相近的像素是非常相似的。卷积网络通过将隐藏单元的接收域限制为局部(卷积核大小)来强制提取局部特征。

- 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进行训练,它们是完全一致的。

- 训练细节
梯度下降 | 随机梯度下降 |
---|---|
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参照了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次方的计算代价。
由于计算预算总是有限的,因此即使主要目标是提高性能质量,计算资源的有效分配也比不加选择地增加规模更为可取。
解决这两个问题的一个基本方法是引入稀疏性,并将全连接层替换为稀疏层,即使在卷积内部也是如此。
我们需要做的是,寻找最优局部单元,然后重复它。

- 22层
- 网络的前几层是普通的卷积层
- 使用1×1的卷积层进行降维
之前有人用1×1的卷积层是为了增加深度进而增加神经网络的表现能力,本文是为了降维。
- 训练细节
梯度下降 | 随机梯度下降 |
---|---|
Momentum | 0.9 |
学习率 | 每8次迭代减少4% |

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

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

从结构上看,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
网友评论