Mxnet (12): 深度卷积神经网络(AlexNet)

1. 深度卷积神经网络(AlexNet)

尽管在引入LeNet之后,CNN在计算机视觉和机器学习社区中广为人知,但它们并没有立即占据主导地位。尽管LeNet在早期的小型数据集上取得了良好的结果,但尚未确定在更大,更现实的数据集上训练CNN的性能和可行性。实际上,在1990年代初期到2012年的分水岭结果之间的大部分时间里,神经网络通常被其他机器学习方法所超越,例如支持向量机。
当初神经网络没有达到现在的水平,原因有很多:

  • 计算能力不足,没有现在显卡如此普及,很难处理多层CNN。
  • 数据集相对较小。
  • 没有初始化启发法
  • 没有随机梯度下降优化
  • 也没有非挤压激活函数
  • 同样没有有效的正则化技术

传统的图像分类主要使用机器学习,但是特征需要从业人员手动生成,其主要流程是:

  • 获取图像数据集;
  • 基于光学,几何学和其他分析工具的一些知识,有时还基于幸运研究生的偶然发现,使用手工制作的功能对数据集进行预处理。
  • 通过标准的特征提取器集(SIFT(尺度不变特征变换),SURF(加速的鲁棒特征))来提供数据调整的管道。
  • 将结果转储到分类器(可能是线性模型或核方法)中,以训练分类器

跟现在的计算机视觉相比,这里有个问题就是,特征不是通过机器学习得来,而是人为生成的。

1.1 学习特征表示

对于机器学习来说,整理特征很重要。相当长的时间里,特征都是基于各式各样手工设计的函数从数据中提取的。事实上,不少研究者通过提出新的特征提取函数不断改进图像分类结果。有另外一些人任务,特征也是需要通过学习得来,而不是手动提取,他们相信多层的神经网可以学的数据的多级特征,并能够逐级生成更加抽象的样式。尽管这些人不断尝试,但是由于硬件计算能力有限,以及数据量不够大,导致在很长一段时间内研究停滞不前。

1.2 AlexNet 神经网络

直到2012年,使用了8层CNN的AlexNet以惊人的优势赢得了2012年ImageNet大规模视觉识别挑战赛。该网络首次表明,通过学习获得的功能可以超越手动设计的功能,从而打破了计算机视觉的先前范式。

下图为AlexNet和LeNet的体系结构,这里提供的是稍微简化的AlexNet版本,删除了2012年使模型适合两个小型GPU所需的一些设计怪癖。

在这里插入图片描述

与LeNet相比:

  • AlexNet比相对较小的LeNet5更深入
  • AlexNet使用ReLU而不是S型作为其激活功能

1.2.1 结构

在AlexNet的第一层中,卷积窗口形状为 11×11 。由于ImageNet中的大多数图像比MNIST图像高和宽十倍以上,因此ImageNet数据中的对象往往会占据更多像素。因此,需要更大的卷积窗口来捕获对象。第二层中的卷积窗口形状减小为 5×5 , 其次是 3×3 。此外,在第一,第二和第五卷积层之后,网络会添加窗口形状为 3×3 步幅为2。此外,AlexNet的卷积通道数是LeNet的十倍。
最后一个卷积层之后,有两个具有4096个输出的完全连接的层。这两个巨大的全连接层产生近1 GB的模型参数。

1.2.2 激活函数

AlexNet将S形激活功能更改为更简单的ReLU激活功能。S型激活函数的输出非常接近0或1时,这些区域的斜率几乎为0,因此反向传播无法继续更新某些模型参数。相反,ReLU激活函数在正区间中的梯度始终为1。因此,如果未正确初始化模型参数,则S型函数可能会在正区间中获得几乎为0的梯度

1.3 容量控制和预处理

  • AlexNet通过dropout控制全连接层的模型复杂性
  • 为了进一步增强数据,AlexNet的训练循环添加了大量图像增强功能,例如翻转,剪切和颜色更改
  • 更大的样本数量有效地减少了过度拟合。
from d2l import mxnet as d2l
from mxnet import np,