AlexNet

ImageNet Classification with Deep Convolutional Neural Networks学习笔记

1.摘要

作者训练了一个大型的深度卷积神经网络,将 ImageNet LSVRC-2010 竞赛中的 120 万个高分辨率图像分类为 1000 个不同的类。在测试数据上,作者分别实现了 37.5% 和 17.0% 的 top-1 和 top-5 错误率,这明显优于之前的最新技术。具有 6000 万个参数和 650,000 个神经元的神经网络由五个卷积层组成,其中一些层之后是最大池化层,三个全连接层,最后是 1000 路 softmax。为了更快地进行训练,作者使用了非饱和神经元和卷积操作的非常有效的 GPU 实现。为了减少全连接层中的过度拟合,采用了最近开发的称为“dropout”的正则化方法。作者还在 ILSVRC-2012 竞赛中输入了该模型的变体,并获得了 15.3% 的获胜前 5 名测试错误率,而第二好的条目达到了 26.2%。

2.介绍

当前对象识别方法主要使用机器学习方法。为了提高它们的性能,我们可以收集更大的数据集,学习更强大的模型,并使用更好的技术来防止过度拟合。直到最近,标记图像的数据集相对较小——数量级为数万张图像(例如,NORB、19 Caltech-101/256和 CIFAR-10/100 )。使用这种大小的数据集可以很好地解决简单的识别任务,尤其是当它们增加了标签保留转换时。例如,MNIST 数字识别任务的当前最佳错误率 (<0.3%) 接近人类表现。但是现实环境中的对象表现出相当大的可变性,因此要学会识别它们,有必要使用更大的训练集。为了从数百万个图像中学习大约数千个对象,我们需要一个具有大学习能力的模型。然而,对象识别任务的巨大复杂性意味着即使像 ImageNet 一样大的数据集也不能指定这个问题,因此我们的模型也应该有很多先验知识来补偿我们没有的所有数据。卷积神经网络(CNNs)构成了一类这样的模型,它们的容量可以通过改变其深度和宽度来控制,并且它们还对图像的性质(即统计的平稳性和像素相关性的局部性)做出了有力且基本正确的假设。与具有类似大小层的标准前馈神经网络相比,CNN 的连接和参数要少得多,因此它们更容易训练,而理论上的最佳性能可能仅稍差一些。尽管 CNN 具有吸引人的品质,尽管其本地架构的相对效率,但它们在大规模应用于多分辨率图像仍然非常昂贵。幸运的是,当前的 GPU 与 2D 卷积的高度优化实现配对,足够强大,以促进有趣的大型 CNN 的训练,并且最近的数据集(如 ImageNet)包含足够的标记示例来训练此类模型而不会严重过度拟合。然后是本文所主要做出的贡献为:编写了一个高度优化的 2D 卷积和训练 CNN 固有的所有其他操作 GPU 实现,而且公开了这些操作;网络包含许多新颖且不寻常的特征,可以提高其性能并减少训练时间;采取了几种有效的方法来防止过拟合;网络包含五个卷积层和三个全连接层,缺一不可。

3.数据集

ImageNet 是一个包含超过 1500 万个标记的高分辨率图像的数据集,大约 22,000 个类别。ImageNet 由可变分辨率的图像组成,而我们的系统需要恒定的输入维度。因此,作者将图像下采样到256 × 256的固定分辨率。给定一个矩形图像,作者首先重新缩放图像,使较短的边长为256,然后从得到的图像中裁剪出中心256 × 256的补丁。作者没有以任何其他方式对图像进行预处理,除了从每个像素中减去训练集上的平均活动。因此,作者在像素的(中心)原始 RGB 值上训练这个网络。

4.架构

网络结构中包含8个学习层,其中五个卷积和三个全连接层。

4.1修正线性单元非线性

将神经元的输出f作为其输入x的函数的标准方法是f(x) = tanh(x)或f(x) = (1 + e−x)−1。就梯度下降的训练时间而言,这些饱和非线性比非饱和非线性f(x) = max(0, x)要慢得多,这种具有非线性的神经元称为整流线性单元(ReLUs)。带有ReLUs的深度cnn的训练速度比使用tanh单元的速度快几倍。图1演示了这一点,它显示了对于一个特定的四层卷积网络,在CIFAR-10数据集上达到25%训练误差所需的迭代次数。这幅图表明,如果我们使用传统的饱和神经元模型,我们就无法用如此大的神经网络进行这项工作的实验。
AlexNet_第1张图片

4.2 在多个GPU上训练

单个 GTX 580 GPU 只有 3GB 的内存,这限制了可以在其上训练的网络的最大尺寸。因此作者将网络拆分为两份,在两个GPU中同时训练。这得益于当前的GPU特别适合并行化工作,他们能够直接读取写入彼此的内存,而不需要通过主机内存。作者还提到了另一个技巧:GPU只在某些层进行通信。这意味着,例如,第 3 层的内核从第 2 层中的所有内核映射中获取输入。但是,第 4 层中的内核仅从位于同一 GPU 的第 3 层中的那些内核映射中获取输入。选择连接模式是交叉验证的问题,但这使我们能够精确调整通信量,直到它是计算量的可接受部分。

4.3 局部响应归一化

ReLU 具有理想的特性,即它们不需要输入归一化以防止它们饱和。如果至少有一些训练示例对 ReLU 产生正输入,则学习将发生在该神经元中。然而,作者仍然发现以下局部归一化方案有助于泛化。用 aix, y 表示通过在位置 (x, y) 应用内核 i 然后计算 ReLU 非线性、表达式给出的响应归一化活动 bix, yi 来计算的神经元的活动
在这里插入图片描述

其中总和在同一空间位置运行 n 个“相邻”内核映射,N 是层中内核的总数。内核映射的顺序当然是任意的,在训练开始之前确定。这种响应规范化实现了一种横向抑制形式,其灵感来自于在真实神经元中发现的类型,为使用不同内核计算的神经元输出之间的大规模活动创造了竞争。常数 k、n、α 和 β 是使用验证集确定值的超参数;作者使用 k = 2, n = 5, α = 10, 和 β = 0.75。

4.4 重叠池

神经网络中的池化层汇总了同一核图中相邻神经元组的输出。传统上,由相邻汇集单元汇总的邻域不重叠。更准确地说,池化层可以被认为是由间隔s个像素的池化单元网格组成的,每个池化单元汇总以池化单元位置为中心的大小为z×z的邻域。如果我们设置s=z,我们将获得传统的本地池,就像通常在CNN中使用的那样。如果我们设置s

4.5 总体结构

AlexNet_第2张图片

正如图二所示,该网络包含八个权重层;前五个是卷积,其余三个是全连接层。最后一个全连接层的输出被馈送到 1000 路 softmax,它在 1000 个类标签上产生分布。这个网络最大化多项逻辑回归目标,这相当于最大化预测分布下正确标签对数概率的训练案例的平均值。

第二个、第四个和第五个卷积层的内核仅连接到位于同一 GPU 的前一层的那些内核映射(见图 2)。第三个卷积层的内核连接到第二层的所有内核映射。全连接层中的神经元连接到前一层的所有神经元。响应归一化层遵循第一和第二卷积层。第 4.4 节中描述的那种最大池化层遵循响应归一化层和第五个卷积层。ReLU 非线性应用于每个卷积层和全连接层的输出。

第一个卷积层用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个神经元。

5.重新划分过拟合

这个神经网络架构有 60 万个参数。尽管 ILSVRC 的 1000 个类别使每个训练示例对从图像到标签的映射施加了 10 位约束,但事实证明这不足以在没有相当大的过度拟合的情况下学习这么多参数。下面描述了作者对抗过度拟合的两个主要方法。

5.1 数据增强

减少图像数据过拟合的最简单和最常见的方法是使用标签保留转换人为地扩大数据。作者采用两种不同的数据增强形式,这两种方法都允许从原始图像生成转换后的图像,计算量很小,因此转换后的图像不需要存储在磁盘上。在实现中,转换后的图像是在 CPU 上的 Python 代码生成的,而 GPU 是在前一批图像上进行训练的。因此,这些数据增强方案实际上是无计算的。

第一种数据增强形式包括生成图像平移和水平反射。作者通过从 256 × 256 图像中提取随机 224 × 224 补丁(及其水平反射)并在这些提取的补丁上训练他们的网络来做到这一点。 这将他们的训练集的大小增加了 2048 倍,尽管生成的训练示例当然是高度相互依赖的。如果没有该方案,作者的网络会遭受严重的过度拟合,这将迫使他们使用更小的网络。在测试时,网络通过提取五个 224 × 224 补丁(四个角补丁和中心补丁)以及它们的水平反射(因此总共 10 个补丁)进行预测,并对网络的 softmax 层在十个补丁上的预测进行平均化。

第二种形式的数据增强包括改变训练图像中 RGB 通道的强度。具体来说,我们对整个 ImageNet 训练集的 RGB 像素值集执行 PCA。对于每个训练图像,我们添加多个找到的主成分,其大小与相应的特征值成正比,乘以从均值为 0 和标准差为 0.1 的高斯分布中提取的随机变量。
在这里插入图片描述

其中 pi 和 λi 分别是 RGB 像素值的 3 × 3 协方差矩阵的第 i 个特征向量和特征值,αi 是上述随机变量。每个 αi 仅针对特定训练图像的所有像素绘制一次,直到该图像再次用于训练,此时重新绘制它。该方案近似地捕捉了自然图像的一个重要属性,即对象身份对光照的强度和颜色的变化是不变的。该方案将 top-1 错误率降低了 1% 以上。

5.2 Dropput

结合许多不同的模型的预测是减少测试误差的一种非常成功的方法 ,但对于已经需要几天时间来训练的大型神经网络来说,这代价似乎有点高了。然而,有一个非常有效的模型组合版本,在训练期间只需要大约两倍的成本。最近引入的技术称为“dropout”,包括将每个隐藏神经元的输出设置为零,概率为 0.5。以这种方式“丢弃”的神经元对前向传递没有贡献,不参与反向传播。因此,每次呈现输入时,神经网络都会对不同的架构进行采样,但所有这些架构共享权重。这种技术减少了神经元的复杂协同适应,因为神经元不能依赖于特定其他神经元的存在。因此,它被迫学习更健壮的特征,这些特征与其他神经元的许多不同的随机子集结合使用。在测试时,我们使用所有神经元,但将它们的输出乘以 0.5,这是采用指数多 dropout 网络产生的预测分布的几何平均值的合理近似

作者在图 2 的前两个全连接层中使用 dropout。在没有 dropout 的情况下,网络表现出显着的过度拟合。Dropout 大约使收敛所需的迭代次数翻了一番。

6.学习细节

作者使用随机梯度下降训练模型,批量大小为 128 个,动量为 0.9,权重衰减为 0.0005。作者发现这种少量的权重衰减对于模型学习很重要。换句话说,这里的权重衰减不仅仅是正则化器:它减少了模型的训练误差。weightw 的更新规则为
在这里插入图片描述

其中 i 是迭代索引,u 是动量变量,ε 是学习率,< wi>Di 是目标对 w 的导数的第 i batchDi 的平均值,在 wi 上进行评估。

作者从标准差为 0.01 的零均值高斯分布初始化每一层的权重。然后在第二个、第四个和第五个卷积层以及全连接隐藏层中用常数1初始化神经元偏差。这种初始化通过提供具有正输入的 ReLU 来加速学习的早期阶段。最后用常数 0 初始化剩余层中的神经元偏差。

作者对所有层使用相同的学习率,我们在整个训练过程中手动调整。他们遵循的启发式方法是在验证错误率随着当前学习率停止提高时将学习率除以 10。学习率初始化为 0.01,并在终止之前减少了 3 次。作者通过 120 万张图像的训练集对网络进行了大约 90 个周期的训练,这在两个 NVIDIA GTX 580 3GB GPU 上花费了 5-6 天。

7.结果

在ILSVRC-2010上的结果汇总表1中。作者的网络分别达到了37.5%和17.0%的top-1和top-5测试集错误率,即在ILSVRC-2010竞赛中实现的最佳性能为47.1%和28.2%,该方法平均了6个在不同特征上训练的稀疏编码模型产生的预测,从那时起,最好的发布结果是45.7%和25.7%,该方法平均了从两种类型的密集采样特征计算的Fisher向量(FV)上训练的两个分类器的预测。
AlexNet_第3张图片

作者还在 ILSVRC-2012 竞赛中输入他们的模型,并在表 2 中报告了结果。由于 ILSVRC-2012 测试集标签没有公开,作者无法报告尝试的所有模型的测试错误率。在这段的其余部分,作者交替使用验证和测试错误率,因为根据经验,它们的差异不超过 0.1%(见表 2)。本文描述的 CNN 达到了 18.2% 的 top-5 错误率。平均五个相似 CNN 的预测给出了 16.4% 的错误率。训练一个CNN,在最后一个池化层上有一个额外的第六卷积层,对整个 ImageNet Fall 2011 版本(15M 图像,22K 类别)进行分类,然后在 ILSVRC-2012 上“微调”它的错误率为 16.6%。使用前面提到的五个 CNN 对整个 2011 年秋季版本进行预训练的两个 CNN 的预测进行平均,错误率为 15.3%。第二个最佳竞赛条目的错误率为 26.2%,其方法是对从不同类型的密集采样特征计算的 FV 上训练的几个分类器的预测进行平均。

最后,作者还报告了 2009 年秋季版本的 ImageNet 的错误率,其中包含 10,184 个类别和 890 万张图像。在这个数据集上,作者遵循文献中的惯例,使用一半的图像进行训练,一半用于测试。由于没有已建立的测试集,作者的拆分必然与之前的作者使用的分割不同,但这不会显着影响结果。作者在该数据集上的 top-1 和 top-5 错误率为 67.4% 和 40.9%,由上述网络获得,但在最后一个池化层上使用额外的第六卷积层。该数据集上发布的最佳结果为 78.1% 和 60.9%。

7.1 定性评估

图 3 显示了网络的两个数据连接层学习的卷积核。该网络已经学习了各种频率和方向选择内核,以及各种彩色斑点。
AlexNet_第4张图片

GPU 1上的内核在很大程度上与颜色无关,而 GPU 2上的内核在很大程度上是特定于颜色的。这种专业化发生在每次运行期间,并且独立于任何特定的随机权重初始化(对GPU的重新编号进行调整)。

在图 4 的左面板中,作者通过计算网络对八个测试图像的前 5 个预测来定性地评估网络学习的内容。请注意,即使是离中心对象,例如左上角的 mite,也可以由网络识别。大多数前 5 个标签似乎是合理的。例如,只有其他类型的猫被认为是豹的合理标签。在某些情况下(格栅、樱桃)照片的预期焦点存在真正的歧义。
AlexNet_第5张图片

探索网络视觉知识的另一种方法是考虑图像在最后一个 4096 维隐藏层诱导的特征激活。如果两幅图像产生欧氏距离较小的特征激活向量,我们可以说神经网络的较高层次认为它们是相似的。图 4 显示了测试集中的五个图像和训练集中的六个图像,这些图像根据该度量与它们中的每一个最相似。请注意,在像素级,检索到的训练图像通常在 L2 中与第一列中的查询图像不接近。例如,检索到的狗和大象出现在各种姿势中。作者在补充材料中提供了更多测试图像的结果。

通过使用两个 4096 维实值向量之间的欧几里得距离计算相似性是低效的,但可以通过训练自动编码器将这些向量压缩为短二进制代码来实现它。这应该会产生比将自动编码器应用于原始像素更好的图像检索方法,16 不使用图像标签,因此倾向于检索具有相似边缘模式的图像,无论它们在语义上是否相似

8.讨论

作者的结果表明,大型深度 CNN 能够使用纯监督学习在极具挑战性的数据集上实现破纪录的结果。值得注意的是,如果移除单个卷积层,网络性能会下降。例如,删除任何中间层都会导致网络的 top-1 性能的损失约为 2%。因此,深度对于实现他们的结果非常重要。为了简化实验,作者没有使用任何无监督的预训练,即使他们期望它会有所帮助,特别是如果他们获得足够的计算能力来显着增加网络的大小,而不会获得相应增加标记数据的数量。到目前为止,作者的结果有所改善,因为他们已经使网络更大,训练时间更长,但租着仍然有很多数量级要去,以匹配人类视觉系统的推断时间路径。最终,作者希望在视频序列上使用非常大和深度的卷积网络,其中时间结构提供了非常有用的信息,即在静态图像中缺失或不太明显善,因为他们已经使网络更大,训练时间更长,但租着仍然有很多数量级要去,以匹配人类视觉系统的推断时间路径。最终,作者希望在视频序列上使用非常大和深度的卷积网络,其中时间结构提供了非常有用的信息,即在静态图像中缺失或不太明显。

你可能感兴趣的:(AlexNet,计算机视觉,深度学习,人工智能)