ImageNet Classification with Deep Convolutional Neural Networks

本文最后更新于:2023年7月30日 晚上

AlexNet

AlexNet是由Alex Krizhevsky、Ilya Sutskever和Geoffrey Hinton在2012年ImageNet图像分类竞赛中提出的一种经典的卷积神经网络。当时,AlexNet在 ImageNet 大规模视觉识别竞赛中取得了优异的成绩,把深度学习模型在比赛中的正确率提升到一个前所未有的高度。因此,它的出现对深度学习发展具有里程碑式的意义。本文将首先介绍 AlexNet 的基本结构、然后说明AlexNet提出带来的一些创新之处,最后给出了基于pytorch的AlexNet代码实现。

论文原文:ImageNet Classification with Deep Convolutional Neural Networks

AlexNet基本结构

AlexNet输入为RGB三通道的224 × 224 × 3大小的图像(也可填充为227 × 227 × 3 )。AlexNet 共包含5个卷积层(包含3个池化)和 3 个全连接层。其中,每个卷积层都包含卷积核、偏置项、ReLU激活函数和局部响应归一化(LRN)模块。第1、2、5个卷积层后面都跟着一个最大池化层,后三个层为全连接层。最终输出层为softmax,将网络输出转化为概率值,用于预测图像的类别。

AlexNet

如图所示,网包含8个带权重的层;前五个是卷积的,剩下的三个是完全连接的。最后一个全连接层的输出被馈送到1000路softmax,它产生超过1000个等级标签的分布。

我们的网络最大化了多项逻辑回归目标,这相当于最大化了在预测分布下正确标签的log-probability在各个训练案例中的平均值。

值得一提的是:卷积第二层、第四层和第五层的核只连接到前一层的核映射上,这些核映射位于同一GPU上(见图)。而卷积第三层的核连接到第二层的所有核映射上

全连接层中的神经元与前一层中的所有神经元相连接。响应归一化(LRN)层跟随在第一和第二卷积层之后。最大池化层在响应归一化层和第五卷积层之后。ReLU非线性激活函数应用于每个卷积层和全连接层的输出。

卷积层

公式:$(input_size + 2 * padding - kernel_size) / stride + 1$

第一个卷积层使用96个大小为11×11×3的核来过滤224×224×3的输入图像,步长为4个像素。

第二个卷积层将第一个卷积层的输出(响应归一化和池化)作为输入,并使用256个大小为5 × 5 × 48的内核对其进行过滤。

第三、第四和第五卷积层彼此连接,而没有任何中间池化或归一化层。

第三个卷积层有384个大小为3 × 3 × 256的内核,连接到第二个卷积层的(归一化的,池化的)输出。

第四卷积层有384个大小为3 × 3 × 192的内核。

第五卷积层有256个大小为3 × 3 × 192的内核。

全连接层

全连接层每个层有4096个神经元。

全连接层F6:因为是全连接层,卷积核size为6×6×256,4096个卷积核生成4096个特征图,尺寸为1×1。然后放入ReLU函数、Dropout处理。值得注意的是AlexNet使用了Dropout层,以减少过拟合现象的发生。

全连接层F7:同F6层。

全连接层F8:最后一层全连接层的输出是1000维softmax的输入,softmax会产生1000个类别预测的值。

AlexNet

创新点

更深的神经网络结构

AlexNet 是首个真正意义上的深度卷积神经网络,它的深度达到了当时先前神经网络的数倍。通过增加网络深度,AlexNet 能够更好地学习数据集的特征,从而提高了图像分类的精度。

ReLU激活函数的使用

AlexNet 首次使用了修正线性单元(ReLU)这一非线性激活函数。相比于传统的 sigmoid 和 tanh 函数,ReLU 能够在保持计算速度的同时,有效地解决了梯度消失问题,从而使得训练更加高效。

局部响应归一化(LRN)的使用

LRN是在卷积层和池化层之间添加的一种归一化操作。在卷积层中,每个卷积核都对应一个特征图(feature map),LRN就是对这些特征图进行归一化。具体来说,对于每个特征图上的每个位置,计算该位置周围的像素的平方和,然后将当前位置的像素值除以这个和。

LRN本质是抑制邻近神经元的响应,从而增强了神经元的较大响应。这种技术在一定程度上能够避免过拟合,并提高网络的泛化能力。

数据增强和Dropout

为了防止过拟合,AlexNet 引入了数据增强和 Dropout 技术。数据增强可以通过对图像进行旋转、翻转、裁剪等变换,增加训练数据的多样性,提高模型的泛化能力。Dropout 则是在训练过程中随机删除一定比例的神经元,强制网络学习多个互不相同的子网络,从而提高网络的泛化能力。Dropout简单来说就是在前向传播的时候,让某个神经元的激活值以一定的概率p停止工作,这样可以使模型泛化性更强,因为它不会太依赖某些局部的特征。

DropOut

大规模分布式训练

AlexNet在使用GPU进行训练时,可将卷积层和全连接层分别放到不同的GPU上进行并行计算,从而大大加快了训练速度。像这种大规模 GPU 集群进行分布式训练的方法在后来的深度学习中也得到了广泛的应用。


ImageNet Classification with Deep Convolutional Neural Networks
https://jialiangz.github.io/2023/07/28/AlexNet/
作者
爱吃菠萝
发布于
2023年7月28日
更新于
2023年7月30日
许可协议