机器不学习 www.jqbxx.com : 深度聚合机器学习、深度学习算法及技术实战
ImageNet Large Scale Visual Recognition Challenge,简称ILSVRC,它是图像分类领域的比赛,每年举办一次,下图为每年的得奖模型及其top-5错误率,这篇文章主要梳理一下这些模型的结构:

一、LeNet-5
LeNet-5是LeCun等人于1998年在论文 Gradient-based learning applied to document recognition 提出的一个用于手写字体识别的卷积神经网络模型,是卷积神经网络的开山之作。它的模型结构相对于现在流行的网络来说略显简单,但其组成部分卷积层、池化层、全连接层都是后来的CNN网络的一部分。但在当时由于计算能力的局限且与支持向量机分类能力旗鼓相当,没有引起大范围的深入研究和关注。先看一下它的结构示意图:

- INPUT:输入为32×32的的单通道图片像素数值矩阵;
- C1:卷积层,共6个卷积核,卷积核大小均为5×5,卷积操作步长为1,得到6×28×28的feature maps;
- S2:池化层,池化窗口大小为2×2,最大池化,得到6×14×14的maps;
- C3:卷积层,卷积核大小均为5×5,卷积操作步长为1,关键的地方是S2是6层,而C3有16层,中间是怎么变换过去的呢?这里有一个Locally Connect的方法;

举几个例子,C3层的第0个map是有S2层的第0、1、2个map经过3个滤波器后相加得到,以此类推。
- S4:池化层,池化窗口大小为2×2,最大池化,得到16×5×5的maps;
- C5:卷积层,卷积核大小均为5×5,卷积操作步长为1,得到120个1*1的maps;
- F6:全连接层,84个神经元。
- OUTPUT:输出层神经元核函数(作用函数)是高斯函数,对输入信息进行空间映射的变换,最后输出属于各个类别(一共是10个)的分布。
RBF神经网络和BP神经网络有什么区别?
二、AlexNet
AlexNet是深度学习从沉寂走向繁盛的一个关节点,在2012年的ImageNet图像分类竞赛上,相比上一年的冠军,AlexNet的top-5错误率下降了十个百分点,远远超过当年的第二名。它的网络结构示意图如下所示:

网络结构的简化版如下所示:

AlexNet 之所以能够成功,深度学习之所以能够重回历史舞台,原因在于:
- ReLU
- Dropout
- Data augmentation
- 局部响应归一化层(Local Response Normalization Layer):存在于第一层卷积层和第二层卷积层的激活函数后面,引入这一层的主要目的,主要是为了防止过拟合,增加模型的泛化能力。对当前层的输出结果做平滑处理。这个策略贡献了1.2%的Top-5错误率。前后几层(对应位置的点)对中间这一层做一下平滑约束,计算方法是:

- 重叠池化(Overlapping Pooling):Overlapping的意思是有重叠,即Pooling的步长比Pooling Kernel的对应边要小。这个策略贡献了0.3%的Top-5错误率。
- 大数据训练:百万级ImageNet图像数据
- 多GPU训练:每个GPU上并行地、分别地运行AlexNet的一部分(例如将4096个神经元的全连接层拆分为两个并行的2048个神经元的全连接层,第一个卷积层有96个feature map而在一块GPU上只有48个feature map等),两块GPU只在特定的层上有交互。
- 学习率衰减: