AlexNet是一种用于图像分类任务的卷积神经网络架构,因其在ImageNet大规模视觉识别挑战赛(ILSVRC)中的表现而声名鹊起。它能将图像分类到1,000个不同的对象类别,并被视为深度卷积网络在大规模视觉识别中首个被广泛认可的应用。
该模型于2012年由Alex Krizhevsky与Ilya Sutskever及其博士导师Geoffrey Hinton在多伦多大学合作开发,包含6000万个参数和65万个神经元。原始论文的主要结论是,模型的深度对其高性能至关重要,这虽然计算成本高昂,但由于训练期间使用了图形处理单元(GPU)而变得可行。
三人组成了SuperVision团队,并于2012年9月30日提交了AlexNet参加ImageNet大规模视觉识别挑战赛。该网络以15.3%的top-5错误率赢得比赛,比亚军高出10.8个百分点以上。这一架构影响了后续大量深度学习领域的工作,尤其是在将神经网络应用于计算机视觉方面。
架构
AlexNet包含八层:前五层是卷积层,其中一些后接最大池化层,最后三层是全连接层。除最后一层外,网络被分成两个副本,每个副本在一张GPU上运行,因为网络无法容纳在单个Nvidia GTX 580 3GB GPU的显存中。整个结构可以写成(CONV → RN → MP)2 → (CONV3 → MP) → (FC → DO)2 → Linear → softmax,其中CONV = 卷积层(使用ReLU激活),RN = 局部响应归一化,MP = 最大池化,FC = 全连接层(使用ReLU激活),Linear = 全连接层(无激活),DO = 丢弃。
值得注意的是,卷积层3、4和5之间没有池化或归一化,直接相互连接。它使用了非饱和的ReLU激活函数,其训练效果优于tanh和sigmoid。这种激活函数的选择是对早期实践的关键偏离,并有助于加快训练收敛速度。
训练
ImageNet训练集包含120万张图像。模型使用两块Nvidia GTX 580 GPU(各3GB)训练了90个周期,历时五到六天。这些GPU在float32下的理论性能为1.581 TFLOPS,发布时售价为500美元。AlexNet的每次前向传播大约需要1.43 GFLOPs。基于这些数值,两块GPU在理想条件下理论上每秒能够执行超过2,200次前向传播。
数据集图像以JPEG格式存储,占用27GB磁盘空间。神经网络在每块GPU上占用2GB内存,训练期间系统内存约占用5GB。GPU负责训练,而CPU负责从磁盘加载图像并对图像进行数据增强。
AlexNet使用动量梯度下降进行训练,批大小为128个样本,动量为0.9,权重衰减为0.0005。学习率从10−2开始,每当验证误差似乎停止下降时,就手动将其降低10倍。训练期间共降低了三次,最终达到10−5。
它使用了两种形式的数据增强,两者都在CPU上即时计算,因此“计算成本为零”:
- 首先将ImageNet中的每张图像缩放,使其较短边长度为256。然后裁剪出中央的256×256区域并进行归一化(将像素值除以255,使其落在0和1之间,然后减去[0.485, 0.456, 0.406],再除以[0.229, 0.224, 0.225]。这些是ImageNet的均值和标准差,因此这会使输入数据白化)。
- 从256×256裁剪中提取随机的224×224区域(及其水平翻转)。这使训练集大小增加了2048倍。
- 随机沿图像像素RGB值的三个主方向移动每个图像的RGB值。
选择224×224分辨率是因为256 - 16 - 16 = 224,这意味着给定256×256图像,在其四边各框出16像素宽度,结果就是224×224图像。
它使用了局部响应归一化和丢弃率为0.5的丢弃正则化。所有权重初始化为均值为0、标准差为0.01的高斯分布。卷积层2、4、5以及所有全连接层的偏置初始化为常数1,以避免ReLU死亡问题。
在测试时,使用训练好的AlexNet预测图像类别时,首先将图像缩放,使其较短边长度为256。然后裁剪出中央的256×256区域。接着,计算五个224×224区域(四个角区域和中心区域)及其水平翻转,共10个区域。网络对所有10个区域的预测概率取平均,即为最终预测概率。
ImageNet竞赛
他们用于参加2012年ImageNet竞赛的版本是7个AlexNet的集成。具体来说,他们在ILSVRC-2012训练集(120万张图像)上训练了5个前述架构(含5个卷积层)的AlexNet。他们还训练了2个变体AlexNet,通过在最后一个池化层之上添加一个额外的卷积层获得。这些变体首先在完整的ImageNet Fall 2011版本(22K类别中的1500万张图像)上训练,然后在ILSVRC-2012训练集上进行微调。最终系统由7个AlexNet组成,通过平均其预测概率来使用。
历史
先前工作
1980年,Fukushima Kunihiko提出了一种名为neocognitron的早期CNN。它通过无监督学习算法进行训练。LeNet-5(Yann LeCun等人,1989年)使用反向传播算法进行监督学习训练,其架构本质上与AlexNet在小规模上相同。
最大池化于1990年用于语音处理(本质上是一维CNN),在图像处理中,首次使用是在1992年的Cresceptron中。在2000年代,随着GPU硬件的改进,一些研究人员将其适应于通用计算,包括神经网络训练。(K. Chellapilla等人,2006年)在GPU上训练了一个CNN,速度比等效的CPU实现快4倍。(Raina等人,2009年)在Nvidia GeForce GTX 280上训练了一个具有1亿参数的深度信念网络,速度比CPU快达70倍。IDSIA的(Dan Cireșan等人,2011年)深度CNN比等效CPU实现快60倍。在2011年5月15日至2012年9月10日期间,他们的CNN赢得了四次图像竞赛,并在多个图像数据库上达到了最先进水平。根据AlexNet论文,Cireșan早期的网络“有些相似”。两者都是用CUDA编写以在GPU上运行。
计算机视觉
在1990年至2010年期间,对于许多视觉识别任务,神经网络并不优于其他机器学习方法,如核回归和支持向量机。AlexNet在2012年的成功表明,当使用足够的数据和计算资源进行训练时,深度卷积网络可以大幅超越基于手工特征的方法。这一结果催化了计算机视觉领域向深度学习方法转变,推动了目标检测、图像分割和其他视觉任务的快速发展。
其影响超出了学术界。AlexNet推广的技术,包括基于GPU的训练、ReLU激活和丢弃正则化,成为后续架构中的标准组件。许多后来的模型,如ResNet和U-Net,直接建立在AlexNet奠定的基础上。该论文常被引用为现代人工智能时代的起点,不仅影响了计算机视觉,还影响了后来采用深度学习方法的自然语言处理和其他领域。