| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 【AlexNet2017】ImageNet Classification with Deep Convolutional Neural Networks -> 正文阅读 |
|
[人工智能]【AlexNet2017】ImageNet Classification with Deep Convolutional Neural Networks |
ImageNet Classification with Deep Convolutional Neural Networks用深度卷积神经网络进行ImageNet分类文章地址:http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf 摘要??我们训练了一个大型的深度卷积神经网络,将ImageNet LSVRC-2010竞赛中的120万张高分辨率图像分类到1000个不同的类别。在测试数据上,我们取得了前1名和前5名的错误率,分别为37.5%和17.0%,这大大优于之前的最先进水平。该神经网络有6000万个参数和65万个神经元,由5个卷积层组成,其中一些是最大集合层,还有3个全连接层,最后是1000路softmax。为了使训练更快,我们使用了非饱和神经元和一个非常有效的GPU实现卷积操作。为了减少全连接层的过拟合,我们采用了最近开发的名为 "dropout "的正则化方法,该方法被证明是非常有效的。我们还将这个模型的一个变体参加了ILSVRC-2012比赛,并取得了15.3%的前五名测试错误率,而第二名的错误率为26.2%。 1导言四年前,Yann LeCun和他的合作者的一篇论文被领先的计算机视觉会议拒绝,理由是它使用了神经网络,因此对如何设计一个视觉系统没有提供任何见解。当时,大多数计算机视觉研究人员认为,一个视觉系统需要利用对任务性质的详细了解来精心手工设计。他们认为,对自然图像中的物体进行分类的任务永远不会通过简单地将图像的例子和它们所包含的物体的名称呈现给一个从这些训练数据中获得所有知识的神经网络而得到解决。 ??视觉研究界的许多人没有意识到,需要由了解该领域的程序员精心手工设计的方法,其规模不如用强大的通用学习程序取代程序员的方法。有了足够的计算和足够的数据,对于需要整合许多不同的、嘈杂的线索的复杂任务,学习胜过编程。 ??四年前,当我们在多伦多大学时,我们名为SuperVision的深度神经网络几乎将识别自然图像中物体的错误率减半,并引发了计算机视觉中早该发生的范式转变。图4显示了SuperVision能做什么的一些例子。 ??SuperVision是从20世纪80年代被广泛研究的多层神经网络发展而来的。这些网络使用多层特征检测器,它们都是从训练数据中学习的。神经科学家和心理学家曾假设,这种特征检测器的层次结构将提供一种识别物体的稳健方法,但他们不知道这种层次结构是如何学习的。20世纪80年代,人们非常兴奋,因为几个不同的研究小组发现,可以使用一种相对直接的算法—反向传播[18, 22, 27, 33]来有效地训练多层特征检测器,对于每幅图像,整个网络的分类性能如何取决于每个连接上的权重值。 ??逆向传播在各种任务中表现良好,但在20世纪80年代,它并没有达到其倡导者的高度期望。特别是,事实证明,学习有许多层的网络是非常困难的,而这些网络恰恰是应该给出最令人印象深刻的结果。许多研究人员错误地认为,从随机的初始权重中学习一个深度神经网络实在是太难了。20年后,我们知道错在哪里:为了让深度神经网络大放异彩,它们需要更多的标记数据和更多的计算。 2.介绍目前的物体识别方法对机器学习方法的使用至关重要。为了提高它们的性能,我们可以收集更大的数据集,学习更强大的模型,并使用更好的技术来防止过度拟合。直到最近,标记图像的数据集相对较小—几万张图像的数量级(例如,NORB,[19] Caltech-101/256,[8, 10]和CIFAR-10/100[14])。简单的识别任务可以通过这种规模的数据集得到很好的解决,特别是如果它们得到了标签保护性转换的增强。例如,目前MNIST数字识别任务的最佳错误率(<0.3%)接近人类的表现。但是现实环境中的物体表现出相当大的差异性,所以要学会识别它们,就必须使用更大的训练集。事实上,小型图像数据集的缺点已经被广泛认可(例如,参考文献[25]),但是直到最近才有可能收集有数百万张图像的标记数据集。新的较大的数据集包括LabelMe[28],它由数十万张完全分割的图像组成,以及ImageNet[7],它由22000多个类别的1500多万张标记的高分辨率图像组成。 ??为了从数以百万计的图像中了解成千上万的物体,我们需要一个具有较大学习能力的模型。然而,物体识别任务的巨大复杂性意味着即使像ImageNet这样大的数据集也不能说明这个问题,所以我们的模型还应该有很多先验知识来弥补我们没有的所有数据。卷积神经网络(CNN)就构成了这样一类模型。[9, 15, 17, 19, 21, 26, 32]它们的能力可以通过改变深度和广度来控制,而且它们还对图像的性质做了强有力的、大部分正确的假设(即统计的静止性和像素依赖的位置性)。因此,与具有类似规模的层的标准前馈神经网络相比,CNN的连接和参数要少得多,因此它们更容易训练,而其理论上的最佳性能可能只是略差。 ??尽管CNN具有吸引人的特质,尽管其局部结构具有相对的效率,但它们在大规模应用于高分辨率图像方面的成本仍然过高。幸运的是,目前的GPU与高度优化的二维卷积实现相搭配,足以促进有趣的大型CNN的训练,而且最近的数据集,如ImageNet,包含足够的标记实例来训练这样的模型,而不会出现严重的过拟合。 ??本文的具体贡献如下:我们在ImageNet大型视觉识别挑战赛(ILSVRC)-2010和ILSVRC-2012比赛[2]中使用的ImageNet子集上训练了迄今为止最大的CNN之一,并取得了迄今为止在这些数据集上报告的最佳结果。我们编写了一个高度优化的二维卷积的GPU实现,以及训练CNN所固有的所有其他操作,我们公开提供了这些操作。[http://code.google.com/p/cuda-convnet/]1我们的网络包含了一些新的和不寻常的特征,这些特征提高了它的性能并减少了它的训练时间,这些将在第4节中详细介绍。我们的网络规模使得过拟合成为一个重要的问题,即使有120万个标记的训练实例,所以我们使用了一些有效的技术来防止过拟合,这些技术将在第5节描述。我们最终的网络包含五个卷积层和三个全连接层,这个深度似乎很重要:我们发现,去除任何一个卷积层(每个卷积层包含的参数不超过模型的1%)都会导致性能下降。 ??最后,网络的规模主要受限于当前GPU上的可用内存量和我们愿意容忍的训练时间量。我们的网络在两个GTX580 3GB GPU上需要5到6天的时间来训练。我们所有的实验表明,只要等待更快的GPU和更大的数据集出现,我们的结果就可以得到改善。 3 数据集ImageNet是一个由超过1500万张贴有标签的高分辨率图像组成的数据集,属于大约22000个类别。这些图像是从网上收集的,并由人类标签员使用亚马逊的Mechanical Turk众包工具进行标注。从2010年开始,作为Pascal视觉对象挑战赛的一部分,每年都会举办一个名为ImageNet大规模视觉识别挑战赛(ILSVRC)的比赛。ILSVRC使用ImageNet的一个子集,在1000个类别中的每一个都有大约1000张图片。总的来说,大约有120万张训练图像,5万张验证图像和15万张测试图像。 ??ILSVRC-2010是唯一一个有测试集标签的ILSVRC版本,所以这是我们进行大部分实验的版本。由于我们的模型也参加了ILSVRC-2012的比赛,在第7节中,我们也报告了我们在这个版本的数据集上的结果,因为测试集的标签是不可用的。在ImageNet上,通常报告两个错误率:前1名和前5名,其中前5名错误率是指正确标签不在模型认为最可能的五个标签中的测试图像的比例。 ??ImageNet由不同分辨率的图像组成,而我们的系统需要一个恒定的输入维度。因此,我们将图像下采样为256×256的固定分辨率。给定一个长方形的图像,我们首先重新缩放图像,使短边的长度为256,然后从得到的图像中裁剪出中央的256×256块。除了从每个像素上减去训练集的平均活动外,我们没有以任何其他方式预处理图像。所以我们在像素的(居中)原始RGB值上训练我们的网络。 4. 架构我们的网络架构总结于图2。它包含八个学习层–五个卷积层和三个全连接层。下面,我们将描述我们网络结构的一些新的或不寻常的特征。第4.1-4.4节是根据我们对其重要性的估计进行排序的,最重要的放在前面。 4.1. 矫正的线性单元非线性
??我们不是第一个在cnn中考虑替代传统神经元模型的人。例如,Jarrett等人声称,非线性 f ( x ) = ∣ t a n h ( x ) ∣ f(x) = |tanh(x)| f(x)=∣tanh(x)∣在Caltech-101数据集上的对比归一化和局部平均池化之后工作得特别好。然而,在这个数据集上,主要关注的是防止过拟合,所以他们观察到的效果与我们使用ReLUs时报告的加速拟合训练集的能力不同。快速学习对在大数据集上训练的大模型的性能有很大影响。 4.2. 在多个GPU上训练单个GTX580 GPU只有3GB内存,这限制了在其上训练的网络的最大尺寸。事实证明,120万个训练实例足以训练出太大的网络,而这些网络在一个GPU上是放不下的。因此,我们将网络分散在两个GPU上。目前的GPU特别适合于跨GPU并行化,因为它们能够直接从对方的内存中读出和写入,而不需要通过主机内存。我们采用的并行化方案基本上是将一半的内核(或神经元)放在每个GPU上,并有一个额外的技巧:GPU只在某些层进行通信。这意味着,例如,第3层的内核从第2层的所有内核图中获取输入。然而,第4层的内核只从驻扎在同一GPU上的第3层的内核图中获取输入。选择连接模式是一个交叉验证的问题,但这允许我们精确调整通信量,直到它是计算量的一个可接受的部分。 ??由此产生的架构有点类似于Cires ? an等人[4]采用的 "柱状 "CNN,只是我们的柱子不是独立的(见图2)。与在一个GPU上训练的每个卷积层中只有一半内核的网络相比,这个方案将我们的前1名和前5名错误率分别降低了1.7%和1.2%。双GPU网络的训练时间比单GPU网络略短。2 4.3. 局部反应归一化局部响应规范化 ReLU有一个理想的特性,即它们不需要输入规范化来防止它们饱和。如果至少有一些训练实例对ReLU产生了积极的输入,学习就会在该神经元中发生。然而,我们仍然发现,以下的局部归一化方案有助于泛化。用 a x , y i a_{x, y}^i ax,yi?表示通过在位置 ( x , y ) (x, y) (x,y)应用核 i i i,然后应用ReLU非线性计算的神经元的活动,响应归一化的活动 b x , y i b_{x, y}^i bx,yi?由以下表达式给出 b x , y i = a x , y i / ( k + α ∑ j = m a x ( 0 , i ? n / 2 ) m i n ( N ? 1 , i + n / 2 ) ( a x , y i ) 2 ) β , b_{x,y}^i=a_{x,y}^i/ \left(k+α \sum_{j=max(0,i-n/2)}^{min(N-1,i+n/2)}(a_{x,y}^i)^2 \right)^β, bx,yi?=ax,yi?/? ??k+αj=max(0,i?n/2)∑min(N?1,i+n/2)?(ax,yi?)2? ??β, 其中,总和在同一空间位置的 n n n个 "相邻 "内核图上运行, N N N是该层中内核的总数量。当然,内核图的排序是任意的,并在训练开始前确定。这种反应正常化实现了一种横向抑制的形式,其灵感来自于真实神经元中的类型,在使用不同内核计算的神经元输出之间产生了大活动的竞争。常数 k 、 n 、 α k、n、α k、n、α和 β β β是超参数,其值通过验证集确定;我们使用 k = 2 、 n = 5 、 α = 1 0 ? 4 k=2、n=5、α=10^{-4} k=2、n=5、α=10?4和 β = 0.75 β=0.75 β=0.75。我们在某些层中应用ReLU非线性后应用了这种归一化(见4.5节)。 ??这个方案与Jarrett等人的局部对比度归一化方案有一些相似之处,[13]但我们的方案更正确地称为 “亮度归一化”,因为我们不减去平均活动。响应归一化使我们的前1名和前5名错误率分别降低了1.4%和1.2%。我们还在CIFAR-10数据集上验证了这个方案的有效性:一个四层的CNN在没有归一化的情况下取得了13%的测试错误率,在归一化的情况下取得了11%。3 4.4. 重叠汇集CNN中的汇集层总结了同一核图中相邻的神经元组的输出。传统上,相邻的池化单元所总结的邻域是不重叠的(例如,参考文献[5,13,20])。更准确地说,一个集合层可以被认为是由一个间隔为 s s s像素的集合单元网格组成,每个集合单元总结的邻域大小为 z × z z×z z×z,以集合单元的位置为中心。如果我们设定 s = z s = z s=z,我们就会得到CNN中通常采用的传统的局部集合。如果我们设定 s < z s<z s<z,我们就得到重叠池。这就是我们在整个网络中使用的, s = 2 , z = 3 s=2,z=3 s=2,z=3。与非重叠方案 s = 2 , z = 2 s=2,z=2 s=2,z=2相比,这个方案将前1名和前5名的错误率分别降低了0.4%和0.3%,这产生了同等维度的输出。在训练过程中,我们普遍观察到,采用重叠池的模型发现过拟合的难度略大。 4.5. 整体架构现在我们准备描述我们的CNN的整体架构。如图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. 减少过度拟合我们的神经网络架构有6000万个参数。尽管ILSVRC的1000个类使每个训练实例对从图像到标签的映射施加了10比特的约束,但这被证明是不足以学习这么多的参数而不出现相当的过拟合。下面,我们将描述我们对抗过拟合的两种主要方式。 5.1. 数据增强减少图像数据过拟合的最简单也是最常见的方法是使用标签保护变换人为地扩大数据集(例如,文献[4,5,30])。我们采用了两种不同形式的数据放大,这两种方法都允许以很少的计算量从原始图像中产生转换的图像,因此转换的图像不需要存储在磁盘上。在我们的实施中,转换后的图像是在CPU上用Python代码生成的,而GPU正在对前一批图像进行训练。因此,这些数据增强方案实际上是无计算的。 ??数据增强的第一种形式包括生成图像的平移和水平反射。我们通过从256×256的图像中提取随机的224×224的斑块(以及它们的水平反射),并在这些提取的斑块上训练我们的网络。如果没有这个方案,我们的网络会出现严重的过拟合,这将迫使我们使用更小的网络。在测试时,网络通过提取五个224×224的斑块(四个角斑块和中心斑块)以及它们的水平反射(因此总共有10个斑块)进行预测,并对网络的softmax层对这十个斑块的预测进行平均。 ??数据增强的第二种形式包括改变训练图像中的RGB通道的强度。具体来说,我们对整个ImageNet训练集的RGB像素值的集合进行PCA。对于每个训练图像,我们将找到的主成分的倍数相加,其大小与相应的特征值成比例,乘以从平均值为0且标准偏差为0.1的高斯中提取的随机变量。因此,对于每个RGB图像像素
I
x
y
=
[
I
x
y
R
,
I
x
y
G
,
I
x
y
B
]
T
I_{xy} = [I_{xy}^R, I_{xy}^G, I_{xy}^B]^T
Ixy?=[IxyR?,IxyG?,IxyB?]T,我们添加以下数量。 5.2. 信息漏失结合许多不同模型的预测是减少测试错误的一个非常成功的方法,[1, 3]但是对于已经需要几天时间来训练的大型神经网络来说,它似乎太昂贵了。然而,有一个非常有效的模型组合版本,在训练期间只需要花费大约2倍的成本。最近引入的技术被称为 "丢弃 "[12],包括以0.5的概率将每个隐藏神经元的输出设置为零。以这种方式被 "剔除 "的神经元对前向传递没有贡献,也不参与反向传播。因此,每次有输入时,神经网络都会对不同的架构进行采样,但所有这些架构都共享权重。这种技术减少了神经元的复杂共同适应,因为一个神经元不能依赖特定的其他神经元的存在。因此,它被迫学习更强大的特征,这些特征与其他神经元的许多不同的随机子集一起使用。在测试时,我们使用所有的神经元,但将它们的输出乘以0.5,这是一个合理的近似值,即取指数型多辍学网络产生的预测分布的几何平均值。 ??我们在图2的前两个全连接层中使用dropout。在没有dropout的情况下,我们的网络表现出严重的过拟合。丢弃使收敛所需的迭代次数大约增加了一倍。 6. 学习的细节我们使用随机梯度下降法训练我们的模型,批次大小为128例,动量为0.9,权重衰减为0.0005。我们发现,这种少量的权重衰减对模型的学习很重要。换句话说,这里的权重衰减不仅仅是一个正则器:它减少了模型的训练误差。权重
w
w
w的更新规则是 ??我们从标准差为0.01的零均高斯分布中初始化了每一层的权重。我们在第二、第四和第五卷积层以及全连接隐藏层中初始化了神经元的偏置,常数为1。这种初始化通过向ReLU提供正的输入来加速学习的早期阶段。我们用常数0来初始化其余各层的神经元偏差。 ??我们对所有的层使用了一个平等的学习率,在整个训练过程中我们手动调整。我们遵循的启发式方法是,当验证错误率不再随当前的学习率提高时,将学习率除以10。学习率初始化为0.01,在终止前减少三次。我们通过120万张图像的训练集对网络进行了大约90个周期的训练,这在两个NVIDIA GTX 580 3GB GPU上花费了5-6天。 7. 结果
斜体字是其他人取得的最佳结果。
^{斜体字是其他人取得的最佳结果。}
斜体字是其他人取得的最佳结果。
斜体字是其他人取得的最佳结果。带
"
?
"
的模型是为了对整个
I
m
a
g
e
N
e
t
2011
秋季版进行分类而
"
预先训练
"
的(详见第
7
节)。
^{斜体字是其他人取得的最佳结果。带 "*"的模型是为了对整个ImageNet 2011秋季版进行分类而 "预先训练 "的(详见第7节)。}
斜体字是其他人取得的最佳结果。带"?"的模型是为了对整个ImageNet2011秋季版进行分类而"预先训练"的(详见第7节)。 ??最后,我们还报告了2009年秋季版本的ImageNet的错误率,该版本有10,184个类别和890万张图片。在这个数据集上,我们遵循文献中的惯例,使用一半的图像进行训练,一半进行测试。由于没有既定的测试集,我们的分法必然与之前作者使用的分法不同,但这并不明显影响结果。我们在这个数据集上的前1名和前5名的错误率是67.4%和40.9%,是由上述的网络达到的,但在最后一个集合层上增加了第六个卷积层。在这个数据集上发表的最佳结果是78.1%和60.9%。 7.1. 定性评价图3显示了该网络的两个数据连接层所学习的卷积核。该网络已经学会了各种频率和方向选择的内核,以及各种彩色的斑点。请注意两个GPU表现出的专业性,这是第4.5节中描述的限制性连接的结果。GPU 1上的内核在很大程度上是不分颜色的,而GPU 2上的内核在很大程度上是特定颜色的。这种专门化发生在每次运行期间,并且与任何特定的随机权重初始化无关(除了对GPU进行重新编号)。 在图4的左侧面板中,我们通过计算八个测试图像的前五名预测,定性地评估了网络所学到的东西。请注意,即使是偏离中心的物体,如左上方的螨虫,也能被网络识别。大多数前五名的标签看起来都很合理。例如,只有其他类型的猫被认为是豹子的合理标签。在某些情况下(栅栏、樱桃),照片的预期焦点确实存在模糊不清的地方。 另一种探测网络视觉知识的方法是考虑最后一个4096维隐藏层的图像所引起的特征激活。如果两幅图像产生的特征激活向量具有较小的欧氏分离度,我们可以说,神经网络的高层认为它们是相似的。图4显示了来自测试集的五幅图像和来自训练集的六幅图像,根据这个衡量标准,它们各自最相似。请注意,在像素层面上,检索到的训练图像与第一列中的查询图像在L2上一般不接近。例如,检索到的狗和大象以各种姿势出现。我们在补充材料中介绍了更多测试图像的结果。 通过使用两个4096维的实值向量之间的欧几里得距离来计算相似性是低效的,但是可以通过训练一个自动编码器将这些向量压缩成短的二进制代码来使其高效。这应该会产生一个比对原始像素应用自动编码器更好的图像检索方法,[16] 因为自动编码器不使用图像标签,因此倾向于检索具有相似边缘模式的图像,无论它们在语义上是否相似。 8. 讨论我们的结果表明,一个大型的深度CNN能够在一个具有高度挑战性的数据集上利用纯粹的监督学习取得破纪录的结果。值得注意的是,如果去掉一个卷积层,我们网络的性能就会下降。例如,去掉任何一个中间层,都会使网络的前1级性能损失约2%。所以深度对于实现我们的结果真的很重要。 为了简化我们的实验,我们没有使用任何无监督的预训练,即使我们期望它能有所帮助,特别是如果我们获得足够的计算能力来显著增加网络的大小而不获得相应的标记数据量的增加。到目前为止,我们的结果已经随着我们的网络规模的扩大和训练时间的延长而有所改善,但我们仍有许多数量级的工作要做,以便与人类视觉系统的非时间路径相匹配。最终,我们希望在视频序列上使用非常大的深度卷积网络,在那里,时间结构提供了非常有用的信息,即在静态图像中缺少或远不明显。 9. 后记计算机视觉界对SuperVision的成功反应令人印象深刻。在接下来的一两年里,他们转而使用深度神经网络,这些网络现在被谷歌、Facebook、微软、百度和许多其他公司广泛部署。到2015年,更好的硬件、更多的隐藏层和大量的技术进步将深度卷积神经网络的错误率又降低了三倍,因此它们现在已经相当接近人类对静态图像的表现。[11, 31 ]这场革命的大部分功劳应该归功于那些花了多年时间开发CNN技术的先驱们,但FeiFei等人[7]提供了必不可少的成分,他们付出了巨大的努力来制作一个标记的数据集,最终足以展示神经网络的真正能力。 References
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 20:20:33- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |