我们训练了一个大型深度卷积神经网络,将ImageNet LSVRC-2010比赛中120万张高分辨率图像分为1000个不同类别。在测试集中,我们达到了37.5%和17.0%的top-1和top-5错误率,这比以前的先进技术要好得多。该神经网络有6000万个参数和65万个神经元,由五个卷积层组成,其中一些层之后是最大池化层,还有三个完全连接的层,最后是1000路softmax。为了加快训练速度,我们使用了非饱和神经元和高效的GPU实现卷积运算。为了减少全连接层中的过拟合,我们采用了最近开发的称为“dropout”层的正则化方法,该方法被证明非常有效。我们还在ILSVRC-2012竞赛中加入了该模型的一个变体,并获得了15.3%的top-5测试错误率,而第二名的测试错误率为26.2%。
softmax的含义如下:
一分钟理解softmax函数(超简单)_-永不妥协-的博客-CSDN博客_softmax函数
dropout层的释义见如下博客:
https://blog.csdn.net/PETERPARKERRR/article/details/121888093?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166443208516782412518560%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=166443208516782412518560&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-2-121888093-null-null.142^v50^control,201^v3^add_ask&utm_term=dropout%E5%B1%82%E7%9A%84%E4%BD%9C%E7%94%A8&spm=1018.2226.3001.4187https://blog.csdn.net/PETERPARKERRR/article/details/121888093?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166443208516782412518560%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=166443208516782412518560&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-2-121888093-null-null.142%5Ev50%5Econtrol,201%5Ev3%5Eadd_ask&utm_term=dropout%E5%B1%82%E7%9A%84%E4%BD%9C%E7%94%A8&spm=1018.2226.3001.4187
当前的目标识别方法主要使用机器学习方法。为了提高它们的性能,我们可以收集更大的数据集,学习更强大的模型,并使用更好的技术来防止过拟合。直到最近,标记图像的数据集还是相对较小的,大约有成千上万个图像(例如,NORB[16]、Caltech-101/256[8、9]和CIFAR-10/100[12])。对于这种规模的数据集,简单的识别任务可以很好地解决,特别是如果使用标签保持转换对它们进行增强的话。例如,MNIST数字识别任务的当前最佳错误率(<0.3%)接近人工识别错误率[4]。但现实场景中的对象表现出相当大的可变性,因此要学会识别它们,必须使用更大的训练集。事实上,小型图像数据集的缺点已被广泛认识(例如,Pinto等人[21]),但直到最近才有可能收集具有数百万图像的标记数据集。新的更大的数据集包括LabelMe[23],它由数十万张完全分割的图像组成,ImageNet[6],它包括超过1500万张标记的高分辨率图像,分为22000多个类别。
要从数以百万计的图像中了解数以千计的物体,我们需要一个具有巨大学习能力的模型。然而,物体识别任务的巨大复杂性意味着,即使是像ImageNet这样大的数据集也无法说明这个问题,因此我们的模型也需要先验知识来弥补我们没有的所有数据。卷积神经网络(CNN)就是这样一类模型[16,11,13,18,15,22,26]。它们的容量可以通过改变深度和广度来控制,而且它们还对图像的性质(即统计数据的平稳性和局部的像素相关性)做出了强有力且最正确的假设。因此,与具有相似大小层的标准前馈神经网络相比,CNN的连接和参数要少得多,因此更容易训练,而其理论上的最佳性能可能并不差。
尽管CNN具有如此吸引人的特性,而且本地架构相对高效,但大规模应用于高分辨率图像的成本仍然高得令人望而却步。幸运的是,当前的GPU与高度优化的2D卷积实现相结合,功能强大,足以促成相当大型CNN的训练,并且最近的数据集(如ImageNet)包含足够的标记示例,使得以训练此类模型时不会出现严重的过拟合。
本文的具体贡献如下:我们对ILSVRC-2010和ILSVRC-2012比赛中使用的ImageNet子集训练了迄今为止最大的卷积神经网络之一[2],并取得了迄今为止在这些数据集上报道的最佳结果。我们编写了一个高度优化的2D卷积GPU实现和训练卷积神经网络所固有的所有其他操作,并将其公开1。我们的网络包含了一些新的和不寻常的特性,这些特性可以提高其性能并缩短其训练时间,详见第3节。我们网络的大小使过拟合成为一个重要问题,即使有120万个标记训练示例,我们也使用了一些有效的技术来防止过拟合,如第4节所述。我们的最终网络包含五个卷积和三个全连接层,这个深度似乎很重要:我们发现删除任何卷积层(每个卷积层包含的模型参数不超过1%)都会导致性能下降。
最后,网络的大小主要受到当前GPU上可用内存量和我们所容忍的训练时间的限制。我们的网络需要五到六天的时间在两个GTX 580 3GB GPU上进行培训。我们所有的实验都表明,只要等待更快的GPU和更大的数据集可用,我们的结果就可以得到改进。
ImageNet是一个包含1500多万个标签高分辨率图像的数据集,这些图像属于大约22000个类别。这些图片是从网上收集的,并由人类贴标者使用亚马逊的Mechanical Turk众包工具进行标记。从2010年开始,作为Pascal视觉对象挑战赛的一部分,每年举行一次名为ImageNet大规模视觉识别挑战赛(ILSVRC)的比赛。ILSVRC使用ImageNet的子集,在1000个类别中的每个类别中大约有1000个图像。总共大约有120万张训练图像、50000张验证图像和150000张测试图像。
ILSVRC-2010是唯一有测试集标签的ILSVRC版本,因此这是我们进行大多数实验的版本。由于我们也在ILSVRC-2012竞赛中输入了我们的模型,因此在第6节中,我们也报告了关于该版本数据集的结果,因为测试集标签不可用。在ImageNet上,通常报告两个错误率:top 1和top 5,其中top 5错误率是模型认为最可能的五个标签中没有正确标签的错误率。
这里解释一下什么叫Top5错误率,imagenet图像通常有1000个可能的类别,对每幅图像你可以猜5次结果(即同时预测5个类别标签),当其中有任何一次预测对了,结果都算对,当5次全都错了的时候,才算预测错误,这时候的分类错误率就叫top5错误率
ImageNet由可变分辨率图像组成,而我们的系统需要恒定的输入维度。因此,我们将图像降维到256×256的固定分辨率。给定一个矩形图像,我们首先重新缩放图像,使较短的边的长度为256,然后从生成的图像中裁剪出位于中心256×256的图片。除了从每个像素减去训练集上的平均活动度之外,我们没有用任何其他方法对图像进行预处理。因此,我们根据像素的(居中)原始RGB值训练网络。
这里的平均活动度是什么意思?注原文:We did not pre-process the images in any other way, except for subtracting the mean activity over the training set from each pixel. So we trained our network on the (centered) raw RGB values of the pixels.
我们的网络架构如图2所示。它包含八个学习层——五个卷积层和三个全连接层。下面,我们将介绍我们网络体系结构的一些新颖或不寻常的特征。第3.1-3.4节根据我们对其重要性的估计进行排序,最重要的放在第一位。
将神经元的输出f建模为其输入x的函数的标准方法是或(sigmoid 函数)。就梯度下降的训练时间而言,这些饱和非线性比非饱和非线性函数慢得多。继Nair和Hinton[20]之后,我们将具有这种非线性的神经元称为校正线性单位(ReLUs)。带有ReLU的深度卷积神经网络的训练速度比具有tanh单位的等效网络快几倍。图1展示了这一点,它显示了特定四层卷积网络的CIFAR-10数据集达到25%训练误差所需的迭代次数。这张图表明,如果我们使用传统的饱和神经元模型,我们将无法用如此大的神经网络进行实验。
我们不是第一个考虑在CNN中替代传统神经元模型的人。例如,Jarrett等人[11]声称,非线性函数对于其对比度标准化类型,以及Caltech-101数据集上的局部平均池,尤其有效。然而,在这个数据集上,主要关注的是防止过拟合,因此他们观察到的效果不同于我们在使用ReLUs时报告的适应训练集的加速能力。快速学习对在大型数据集上训练的大型模型的性能有很大影响。
图1:具有ReLUs(实线)的四层卷积神经网络在CIFAR-10上达到25%的训练错误率,比具有tanh神经元的等效网络(虚线)快六倍。每个网络的学习速率都是独立选择的,以便尽可能快地进行培训。没有采用任何形式的正则化。这里展示的效果的大小因网络架构而异,但具有ReLU的网络学习速度始终比具有饱和神经元的网络快数倍。
单个GTX 580 GPU只有3GB内存,这限制了可以在其上训练的网络的最大大小。事实证明,120万个训练示例对于一个GPU来说是无法训练的网络容量。因此,我们将网络扩展到两个GPU。当前的GPU特别适合跨GPU并行化,因为它们能够直接读取和写入彼此的内存,而无需经过主机内存。我们采用的并行化方案本质上把一半的内核(或神经元)放在每个GPU上,还有一个额外的技巧:GPU只在特定的层中通信。这意味着,例如,第3层的内核从第2层的所有内核映射获取输入。但是,第4层的内核仅从位于同一GPU上的第3层内核映射获取输出。选择连接模式是交叉验证的一个问题,但这允许我们精确地调整通信量,直到其计算量达到可接受的容量。
合成的架构与Cire,san等人[5]使用的“柱状”CNN的架构有些相似,只是我们的柱不是独立的(见图2)。与在一个GPU上训练的每个卷积层中有一半内核的网络相比,该方案将我们的前1和前5错误率分别降低了1.7%和1.2%。两个GPU网络的训练时间略少于一个GPU网络。
ReLU具有理想的特性,它们不需要输入规范化来防止饱和。如果至少有一些训练示例对ReLU产生了积极的输入,那么学习将在该神经元中发生。然而,我们仍然发现以下局部归一化方案有助于推广。通过aix,y表示通过在位置(x,y)应用内核i,然后应用ReLU非线性计算的神经元活动,响应标准化活动bix,y由表达式给出
CNN中的池化层反映了同一核映射中相邻神经元组的输出。传统上,邻域由并不重叠的池化单元提取(例如,[17,11,4])。更准确地说,池化层可以被认为是由间隔s个像素的池化单元网格组成的,每个网格扫描了以池单元位置为中心的大小为z×z的邻域。如果设置s=z,我们将获得CNN中常用的传统池化单元(不重叠)。如果我们设置s 现在,我们已经准备好描述我们CNN的总体架构。如图2所示,该网包含八层,带有权重;前五个是卷积层,其余三个是全连接层。最后一个全连接层的输出被送到1000维的softmax,它分布在1000个类标签上。我们的网络最大化了多项式logistic回归目标,这相当于最大化了预测分布下正确标签的对数概率的跨训练案例的平均值。 第二、第四和第五卷积层的神经元仅与位于同一GPU上的前一层中的神经元相连接(见图2)。第三卷积层的神经元与第二层的所有神经元相连。全连接层中的神经元与前一层中的所有神经元连接。响应归一化层紧随第一和第二卷积层。第3.4节中描述的最大池层紧随着响应归一化层和第五卷积层。ReLU非线性层应用于每个卷积和全连接层的输出。 图2:我们构建的CNN网络架构示意图,明确显示了两个GPU之间的职责划分。一个GPU运行图形上方一层的部分,而另一个运行图形下方一层的部分。GPU仅在特定层通信。网络的输入是150528维,网络剩余层中的神经元数量为253440–186624–64896–64896-43264–4096–4096-1000。 第一卷积层过滤224×224×3输入图像,96个11×11×3大小的核,步幅为4像素(这是感受野中心的相邻神经元之间的距离)。第二卷积层将第一卷积层的(响应归一化和池化后的)输出作为输入,并用256个大小为5×5×48的卷积核对其进行卷积。第三、第四和第五卷积层彼此连接,没有任何中间的池化层或归一化层。第三卷积层有384个大小为3×3×256的内核,连接到第二卷积层的(归一化、池化后的)输出。第四卷积层有384个3×3×192大小的核,第五卷积层则有256个3×3x192大小的核。全连接层各有4096个神经元。 我们的神经网络架构有6000万个参数。尽管ILSVRC的1000个类使每个训练示例对从图像到标签的映射施加10位约束,但事实证明,这不足以在不出现过拟合的情况下学习如此多的参数。下面,我们描述了两种主要的打击过适配的方法。 减少图像数据过拟合的最简单也是最常见的方法是使用标签保留变换(例如[25,4,5])人工放大数据集。我们采用了两种不同的数据增强形式,这两种形式都允许采用很少的计算从原始图像生成转换图像,因此转换后的图像不需要存储在磁盘上。在我们的实现中,转换后的图像是在CPU上用Python代码生成的,而GPU则在前一批图像上进行训练。因此,这些数据增强方案实际上是无需计算的。 第一种数据增强形式包括生成图像平移和水平反射。我们通过从256×256个图像中随机提取224×224个图像块(及其水平反射),并在这些提取的块上训练我们的网络来实现这一点。这将使我们的训练集的大小增加了2048倍,尽管得到的训练集是高度相互依赖的。如果没有这个方案,我们的网络将遭受严重的过拟合,这将迫使我们使用更小的网络。在测试时,网络通过提取五个224×224图像块(四个角落的块和中心块)及其水平反射(因此总共十个块)进行预测,并均值化网络的softmax层对十个块的预测。 第二种数据增强形式包括改变训练图像中RGB通道的强度。具体来说,我们在整个ImageNet训练集中对RGB像素值集执行PCA。在每个训练图像中,我们添加多个基本的主成分,其大小与相应的特征值成正比,乘以从平均值为零且标准偏差为0.1的高斯分布中提取的随机变量。因此,对于每个RGB图像像素Ixy=[IRxy,IGxy,IBxy]T,我们添加以下数量: 其中pi和λi分别是RGB像素值的3×3协方差矩阵的第i个特征向量和特征值,αi是上述随机变量。对于特定训练图像的所有像素,每个αi只生成一次,直到该图像再次用于训练,然后重新生成。该方案近似地捕获了自然图像的一个重要特性,即物体本身特性不受照明强度和颜色的变化的影响。该方案将top-1错误率降低了1%以上。 将许多不同模型的预测结合起来是减少测试误差的一种非常成功的方法[1,3],但对于已经需要几天时间来训练的大型神经网络来说,这种方法的成本似乎过于昂贵。然而,有一种非常有效的模型组合,在培训期间只需花费大约两倍的成本。最近引入的技术称为“Dropout”[10],包括将每个隐藏神经元的输出设置为零,概率为0.5。以这种方式“Dropout”的神经元不参与正向传递,也不参与反向传播。因此,每次出现输入时,神经网络都会对不同的体系结构进行采样,但所有这些体系结构都共享权重。这项技术减少了神经元协同适应的复杂性,因为神经元不能依赖于特定的其他神经元的存在。因此,它被迫学习更鲁棒的特征,这些特征与其他神经元的许多不同随机子集相结合是有用的。在测试时,我们使用所有神经元,但将它们的输出乘以0.5,这是一个合理的近似值,用于计算由指数级多个dropout网络生成的预测分布的几何平均值。 我们在图2的前两个全连接的中使用了dropout。如果没有dropout,我们的网络会出现严重的过拟合。Dropout大约使收敛所需的迭代次数加倍。 我们使用随机梯度下降法对模型进行训练,数量为128个示例,动量为0.9,权重衰减系数为0.0005。我们发现,较小的衰减系数对模型的学习很重要。换句话说,这里的衰减系数不仅仅是一个正则化器:它也减少了模型的训练误差。衰减系数w的更新规则为 其中是迭代次数,是动量变量,是学习率,是第批数据集中损失函数相对于w的偏导数的平均值。 我们从标准偏差为0.01的零均值高斯分布中初始化每个层中的权重。我们用常数1初始化第二、第四和第五卷积层以及完全连接的隐藏层中神经元的偏置项。这个初始化通过向ReLU提供正输入来加速学习的早期阶段。我们用常数0初始化其余层中的神经元的偏置。 我们对所有层使用了相同的学习率,在整个训练过程中我们手动调整。我们遵循的方法是,当验证错误率不再随着当前学习率而改善时,将学习率除以10。学习率初始化为0.01,终止前降低了三倍。我们通过120万张图像的训练集对网络进行了大约90个周期的训练,在两个NVIDIA GTX 580 3GB GPU上训练了5到6天。 我们在ILSVRC-2010上的结果总结在表1中。我们的网络达到了37.5%和17.0%的top-1和top-5测试集错误率。ILSVRC2010竞赛期间取得的最佳性能分别为47.1%和28.2%,采用的方法是平均六个稀疏编码模型对不同特征的训练所产生的预测[2],自那时以来,最好的公布结果分别为45.7%和25.7%,采用的方法是根据两种密集采样特征计算的Fisher Vectors(FVs)训练的两个分类器的预测平均值[24]。 表1:ILSVRC2010测试集的结果比较。斜体字表示其他人取得的最佳结果 我们还在ILSVRC-2012竞赛中输入了我们的模型,并在表2中报告了我们的结果。由于ILSVRC-2002测试集标签不公开,我们无法报告我们尝试的所有模型的测试错误率。在本段的其余部分,我们交替使用验证和测试错误率,因为根据我们的经验,它们之间的差异不超过0.1%(见表2)。本文中描述的CNN达到了18.2%的top-5错误率。对五个类似CNN的预测进行平均后,错误率为16.4%。训练一个CNN,在最后一个池层上额外增加第六个卷积层,对整个ImageNet 2011年秋季发布版(15M图像,22K类别)进行分类,然后在ILSVRC-2012上对其进行“微调”,错误率为16.6%。使用上述五个CNN对2011年秋季发布的两个CNN进行了预训练,平均预测的错误率为15.3%。第二名参赛选手的错误率为26.2%,采用的方法是对根据不同类型的密集采样特征计算的FV训练的几个分类器的预测进行平均[7]。 表2:ILSVRC-2012验证集和测试集的错误率比较。斜体字表示其他人取得的最佳结果。带有星号*的模型经过了“预训练”,可以对整个ImageNet 2011秋季版本进行分类。详见第6节。 最后,我们还报告了2009年秋季版ImageNet的错误率,该版本包含10184个类别和890万张图像。在这个数据集上,我们遵循文献中的惯例,使用一半的图像进行训练,一半用于测试。由于没有确定的测试集,我们的分割结果必然与以前作者使用的不同,但这不会显著影响结果。我们在该数据集上的前1和前5错误率分别为67.4%和40.9%,通过上述网络实现,但在最后一个池化层上还有一个额外的第六卷积层。该数据集的最佳发布结果为78.1%和60.9%[19]。 图3:224×224×3输入图像上第一卷积层学习的96个卷积核,大小为11×11×3。前48个卷积核在GPU 1上学习,后48个卷积核则在GPU 2上学习。有关详细信息,请参阅第6.1节。 图3显示了网络的两个数据连接层所学习的卷积核。该网络已经学习了各种频率和方向选择卷积核,以及各种彩色斑点。注意两个GPU显示的特殊性,这是第3.5节中描述的受限连接的结果。GPU 1上的内核基本上不区分颜色,而GPU 2上的卷积核则基本上特定于颜色。这种特殊化在每次运行期间发生,并且独立于任何特定的随机权重初始化(GPU重新编号的模)。 图4:(左)八张ILSVRC-2010测试图像和我们的模型认为最可能的五个标签。正确的标签写在每个图像下,分配给正确标签的概率也用红色条显示(如果恰好在top 5)。(右)第一列中的五幅ILSVRC-2010测试图像。其余的列显示了六个训练图像,它们在最后一个隐藏层中生成特征向量,与测试图像的特征向量之间的欧氏距离最小。 在图4的左侧面板中,我们通过计算八张测试图像上的top-5预测,定性评估网络所学到的知识。请注意,即使是偏离中心的对象,例如左上方的螨虫,也可以被网络识别。前五个标签中的大多数看起来都很合理。例如,只有其他类型的猫被认为是豹的合理标签。在某些情况下(格栅、樱桃色),照片的预期中心对象确实不明确。 探索网络视觉知识的另一种方法是考虑由最后一个4096维隐藏层的图像引发的特征激活。如果两幅图像产生的特征激活向量具有较小的欧氏距离,我们可以说神经网络高度认为它们是相似的。图4显示了测试集中的五幅图像和训练集中的六幅图像,根据这个方法,这两幅图像中的每一幅都最相似。请注意,在像素级别,L2中检索的训练图像通常与第一列中的查询图像不太接近。例如,得到图片中的狗和大象以各种姿势出现。我们在补充材料中展示了更多测试图像的结果。 使用两个4096维实值向量之间的欧氏距离计算相似性是低效的,但可以通过训练自动编码器将这些向量压缩为短二进制码来提高效率。与对原始像素应用自动编码器相比,这应该产生一种更好的图像检索方法[14],该方法不使用图像标签,因此倾向于检索具有相似边缘模式的图像,无论它们在语义上是否相似。 我们的结果表明,一个大的深度卷积神经网络能够在一个具有高度挑战性的数据集上使用监督学习获得破记录结果。值得注意的是,如果删除单个卷积层,我们的网络性能会降低。例如,删除任何中间层都会导致top-1性能损失约2%。因此,深度对于实现我们的结果真的很重要。 为了简化我们的实验,我们没有使用任何无监督的预训练,尽管我们希望它会有所帮助,特别是当我们已经获得足够的计算能力来大幅增加网络的规模而不需要获得相应的标记数据量时。到目前为止,我们的结果已经得到改善,因为我们已经使我们的网络更大,训练时间更长,但为了匹配人类视觉系统的下时间路径,我们还有许多数量级的工作要做。最终,我们希望在视频序列上使用非常大和深度的卷积网络,其中时间结构提供了非常有用的信息,而这些信息在静态图像中缺失或不太明显。3.5 Overall Architecture
4 Reducing Overfitting
4.1 Data Augmentation
4.2 Dropout
5 Details of learning
6. Results
6.1 Qualitative Evaluations
7 Discussion