原文链接:https://arxiv.org/pdf/1409.4842v1.pdf
我们提出了一个代号为Inception的深度卷积神经网络架构,负责在ImageNet 2014年大型视觉识别挑战(ILSVRC14)中设置分类和检测的最新技术。该体系结构的主要特点是提高了网络内部计算资源的利用率。这是通过一个精心设计来实现的,它允许增加网络的深度和宽度,同时保持计算预算不变。为了优化质量,架构决策基于Hebbian原则和多尺度处理的直觉。在我们提交的ILSVRC14中使用的一个特殊的化身是GoogLeNet,它是一个22层的深层网络,其质量是在分类和检测的环境中评估的。
在过去的三年中,主要由于深度学习、更具体的卷积网络[10]的发展,图像识别和目标检测的质量得到了极大的提高。一个令人鼓舞的消息是,这一进步不仅仅是更强大的硬件、更大的数据集和更大的模型的结果,而且主要是新思想、算法和改进的网络架构的结果。例如,在ILSVRC 2014竞赛中,除了用于检测目的的同一竞赛的分类数据集外,没有使用新的数据源。我们提交给ILSVRC 2014的GoogLeNet实际上比两年前Krizhevsky等人的获奖架构少用了12个参数,同时显著更准确。在目标检测方面,最大的收获并不是仅仅来自深度网络或更大模型的利用,而是来自深度架构和经典计算机视觉的协同,例如Girshick等人的R-CNN算法。
另一个值得注意的因素是,随着移动和嵌入式计算的不断发展,我们的算法的效率,尤其是它们的能力和内存使用变得越来越重要。值得注意的是,在这篇文章中提出的深层架构设计的考虑因素包括了这个因素,而不是完全依赖于精确的数字。对于大多数的实验,模型计算的预算是为了保持1:5十亿multiply-adds在推理时,这样他们不最终是一个纯学术的好奇心,但可以把现实世界中使用,即使在大型数据集,以合理的成本。
在这篇论文中,我们将重点研究一种高效的用于计算机视觉的深度神经网络架构,代号为Inception,它的名字来源于Lin等人的网络论文中的网络,并结合著名的“we need to go deeper ” 网络流行语[1]。在我们的例子中,"deep"这个词有两种不同的含义:首先,我们以"Inception模块"的形式引入了一个新的组织层次,同时也从更直接的意义上增加了网络深度。一般来说,我们可以将Inception模型视为[12]的逻辑顶点,同时从Arora等人的理论著作中获得灵感和指导。该体系结构的优点在ILSVRC 2014分类和检测挑战中得到了实验验证,在这方面它显著优于当前的技术水平。
从LeNet-5[10]开始,卷积神经网络(CNN)通常有一个标准结构,层叠的卷积层(可选地紧随对比归一化和maxpooling)之后是一个或多个全连接层。这种基本设计的变体在图像分类文献中很流行,并在MNIST、CIFAR和ImageNet分类挑战中取得了迄今为止最好的结果[9,21]。对于较大的数据集,如Imagenet,最近的趋势是增加层数[12]和层大小[21,14],同时使用dropout[7]来解决过拟合问题。
尽管存在max-pooling层导致精确空间信息丢失的问题,但与[9]相同的卷积网络架构也成功用于定位[9,14]、目标检测[6,14,18,5]和人体姿态估计[19]。Serre等人受灵长类视觉皮层的神经科学模型启发,使用一系列不同大小的固定Gabor过滤器来处理多个尺度,类似于Inception模型。然而,与[15]固定的2层深度模型相反,Inception模型中的所有过滤器都是学习的。此外,先启层重复了许多次,导致在GoogLeNet模型中有一个22层的深度模型。
网络中的网络是Lin等人为了提高神经网络的表示能力而提出的一种方法。当应用于卷积层时,该方法可视为附加的11个卷积层,之后通常是经过整流的线性激活[9]。这使得它可以很容易地集成到当前的CNN管道中。我们在架构中大量使用这种方法。然而,在我们的设置中,11个卷积有双重目的:最关键的是,它们主要用作降维模块来消除计算瓶颈,否则将限制网络的大小。这不仅可以增加网络的深度,还可以在不影响性能的情况下增加网络的宽度。
目前领先的目标检测方法是Girshick等人提出的卷积神经网络(R-CNN)区域。R-CNN将整个检测问题分解为两个子问题:首先利用颜色和超像素一致性等低层次线索,以一种与类别无关的方式来识别潜在的对象建议,然后使用CNN分类器来识别这些位置的对象类别。这种两阶段的方法利用了边界框分割的准确性和低水平线索,以及最先进的CNNs的强大分类能力。我们在提交检测时采用了类似的管道,但在这两个阶段都进行了增强,比如多框[5]预测更高的对象边界框回收,以及集成方法更好地分类边界框建议。
提高深度神经网络性能最直接的方法是增加其规模。这包括增加网络的深度、层数和宽度:每一层的单元数。这是一种训练高质量模型的简单和安全的方法,特别是考虑到有大量标记的训练数据的可用性。然而,这个简单的解决方案有两个主要缺点。
通常情况下,较大的尺寸意味着更多的参数,这使得扩大后的网络更容易发生过拟合,特别是在训练集中标记的例子数量有限的情况下。这可能成为一个主要的瓶颈,因为创建高质量的训练集可能是棘手和昂贵的,特别是如果需要专业的人工评分员来区分类似于ImageNet中的细粒度可视类别(即使是在1000类ILSVRC子集中),如Figure 1所示。
网络规模一致增长的另一个缺点是计算资源的使用急剧增加。例如,在深度视觉网络中,如果将两个卷积层连接起来,那么它们的过滤器数量的任何均匀增加都会导致计算量的二次增加。如果没有有效地使用增加的容量(例如,如果大多数权重最终接近于零),那么就会浪费大量计算。由于在实践中,计算预算总是有限的,所以即使主要目标是提高结果的质量,有效分配计算资源也比不加选择地增加大小要好。
解决这两个问题的基本方法是最终从完全连接的架构转移到稀疏连接的架构,甚至在卷积内部也是如此。除了模仿生物系统,由于Arora等人开创性的工作,这也有更坚实的理论基础的优势。其主要结果状态的概率分布,如果先于可表示的是一个大型的、非常稀疏的深层神经网络,优化网络拓扑结构可以建造一层一层地分析相关统计数据的最后一层和集群神经元的激活与高度相关的输出。虽然严格的数学证明需要非常严格的条件,但这一说法与众所周知的Hebbian原理——神经元一起放电、连接在一起——产生共鸣的事实表明,即使在不那么严格的条件下,这一基本思想在实践中也是适用的。
不利的一面是,当今的计算基础设施在处理非均匀稀疏数据结构的数值计算时非常低效。即使算术运算的数量减少到100年,查找的开销和缓存错过主导,切换到稀疏矩阵不会偿还。使用的差距进一步扩大稳步改善,高度调整,数值库允许极快稠密矩阵乘法,利用底层的细节CPU或GPU硬件(16日9)。此外,非均匀稀疏模型需要更复杂的工程和计算基础设施。目前大多数面向视觉的机器学习系统仅仅通过使用卷积来利用空间域的稀疏性。然而,卷积是作为到前一层补丁的密集连接的集合来实现的。自[11]以来,ConvNets传统上在特征维中使用随机和稀疏连接表,为了打破对称性,提高学习能力,为了更好地优化并行计算,趋势变回与[9]的完全连接。结构的均匀性和大量的过滤器和更大的批处理尺寸允许使用高效的密集计算。
这就提出了一个问题:是否还有希望进行下一个中间步骤:一种利用额外的稀疏性(即使在过滤器级别)的体系结构,就像理论所建议的那样,但是通过利用密集矩阵上的计算来利用我们当前的硬件。大量关于稀疏矩阵计算的文献(例如[3])表明,将稀疏矩阵聚类成相对稠密的子矩阵,往往能够提供最先进的稀疏矩阵乘法的实用性能。在不久的将来,类似的方法将被用于非均匀深度学习体系结构的自动化构建,这似乎并不牵强。
Inception架构最初是作为第一作者的一个案例研究,用于评估一个复杂的网络拓扑结构构建算法的假设输出,该算法试图近似于视觉网络中[2]所暗示的稀疏结构,并通过密集的、容易获得的组件覆盖假设的结果。尽管这是一项高度投机的工作,但是只有在对拓扑的精确选择进行两次迭代之后,我们才能看到基于[12]的参考体系结构所带来的好处。在进一步调整了学习速率、超参数和改进的训练方法之后,我们确定了所得到的Inception架构在定位和对象检测上下文中特别有用,作为[6]和[5]的基础网络。有趣的是,尽管大多数最初的架构选择都受到了质疑和彻底的测试,但它们至少在局部是最优的。
然而,人们必须谨慎:尽管所提议的体系结构已经在计算机视觉方面取得了成功,但它的质量是否可以归因于导致其构建的指导原则仍然值得怀疑。确保这一点将需要更彻底的分析和验证:例如,如果基于下面描述的原则的自动化工具能够发现类似但更好的视觉网络拓扑结构。最有说服力的证据是,自动化系统是否会创建网络拓扑,从而在其他领域使用相同的算法获得类似的收益,但其全局架构的外观却非常不同。至少,Inception架构最初的成功产生了在这个方向上令人兴奋的未来工作的坚定动机。
Inception架构的主要思想是找出卷积视觉网络中最优的局部稀疏结构是如何被容易获得的稠密组件近似和覆盖的。注意,假设平移不变性意味着我们的网络将由卷积构建块构建。我们所需要的是找到最优的局部结构并在空间上重复它。Arora 等人[2]提出了一种分层结构,在这种结构中,应该分析最后一层的相关统计数据,并将它们分组为具有高相关性的单元。这些集群构成下一层的单元,并连接到上一层的单元。我们假设前一层的每个单元对应于输入图像的某个区域,这些单元被分组到滤波器组中。在较低的层(靠近输入的层),相关的单元将集中在局部区域。这意味着,我们最终会得到许多集群集中在一个区域,它们可以被下一层的 1 x 1 个卷积覆盖,就像[12]中建议的那样。然而,我们也可以预期,在更大的patch上,能够被卷积覆盖的空间分布更广的集群的数量会更少,而在更大的patch上,patch的数量会越来越少。为了避免patchal问题,Inception架构的当前版本被限制为过滤大小为1 x 1,3 x 3 和 5 x 5,然而这个决定更多的是基于方便而不是需要。它还意味着建议的体系结构是所有这些层的组合,它们的输出过滤器连接成一个单独的输出向量,形成下一阶段的输入。此外,由于池化操作对于当前最先进的卷积网络的成功至关重要,因此它建议在每个这样的阶段添加一个可选的并行池化路径也应该会产生额外的有益效果(参见 Figure 2(a))。
由于这些“Inception modules”相互堆叠,它们的输出相关统计必然会有所不同:当更高的抽象特征被更高的层捕获时,它们的空间集中度预计会降低,这意味着当我们移动到更高的层时,3 x 3和5 x 5的卷积的比例应该增加。
与上述模块的一个大问题,至少在这个naıve形式,甚至适度数量的5 x 5旋转可以昂贵的卷积层与大量的过滤器。一旦池单元被添加到混合中,这个问题就变得更加突出:它们的输出过滤器数量等于前一阶段的过滤器数量。池化层的输出与卷积层的输出合并,必然会导致输出的数量逐级增加。尽管这种架构可能覆盖最优的稀疏结构,但它的效率非常低,在几个阶段内就会导致计算崩溃。
这就引出了提出的体系结构的第二个想法:明智地在计算需求增加太多的地方应用维缩减和投影。这是基于嵌套的成功:即使是低维的嵌套也可能包含大量关于一个相对较大的图像修补程序的信息。然而,嵌入以密集的、压缩的形式表示信息,而压缩的信息更难建模。我们希望在大多数地方保持稀疏的表示(根据[2]的条件所要求的),并且仅在需要大量聚集信号时压缩它们。也就是说,在昂贵的3 x 3和5 x 5卷积之前,使用1 x 1卷积来计算约简。除了用作还原,它们还包括使用整流线性激活,这使它们具有双重用途。最终结果如Figure 2(b)所示。
通常,Inception 网络是由上述类型的模块组成的网络,这些模块相互堆叠,偶尔使用最大池层,使用步幅为 2将网格的分辨率减半。由于技术上的原因(训练期间的内存效率),开始只在较高的层上使用Inception模块似乎是有益的,同时保持传统的卷积方式的较低的层。这并不是严格必要的,只是反映了我们当前实现中的一些基础设施效率低下。
这种体系结构的一个主要优点是,它允许在每个阶段显著增加单元的数量,而不会在计算复杂度上失控。维约简的普遍使用允许将上一层的大量输入过滤器屏蔽到下一层,首先减少它们的维数,然后将它们与一个大的补丁大小进行卷积。这个设计的另一个实际有用的方面是,它符合直觉,即视觉信息应该在不同的尺度上处理,然后聚合,以便下一阶段可以同时从不同的尺度上抽象特征。
计算资源的改进使用允许增加每个阶段的宽度和阶段的数量,而不会陷入计算困难。利用inception架构的另一种方法是创建稍次的,但在计算上更便宜的版本。我们发现所有包含的旋钮和控制杆都允许计算资源的受控平衡,这可以使网络的运行速度比使用非先启架构的类似网络快2到3倍,但是在这一点上,这需要仔细的手工设计。
在ILSVRC14比赛中,我们选择了GoogLeNet作为我们的队名。这个名字是向Yann LeCuns先驱LeNet 5网络[10]致敬。我们也使用GoogLeNet来指代我们提交给竞赛的Inception架构的特殊化身。我们还使用了一个更深更广的先启网络,它的质量稍差一些,但是将它添加到集成中似乎能略微改善结果。我们忽略了网络的细节,因为我们的实验表明,确切的架构参数的影响相对较小。在这里,为了演示的目的,Table 1描述了最成功的特定实例(名为GoogLeNet)。在我们的集成中,7个模型中的6个使用了完全相同的拓扑结构(使用不同的采样方法进行训练)。
所有的卷积,包括先启模块内部的卷积,都使用经过整流的线性激活。我们的网络中接受域的大小是224×224,取RGB颜色通道,取平均减法。“#3×3 reduce”和“#5×5 reduce”表示在进行3×3和5×5卷积之前,约化层中使用的1×1个滤波器的数量。在pool proj列中内置的max-pooling之后,可以看到投影层中1×1个过滤器的数量。所有这些还原/投影层也都使用了校正的线性激活。
该网络的设计考虑了计算效率和实用性,因此推理可以在单个设备上运行,甚至包括那些计算资源有限的设备,特别是低内存占用的设备。如果只计算带参数的层,则网络深度为22层(如果也计算池,则为27层)。用于构建网络的总层数(独立的构建块)约为100个。然而,这个数字取决于所使用的机器学习基础设施系统。分类器之前使用的平均池是基于[12]的,尽管我们的实现的不同之处在于我们使用了额外的线性层。这使我们能够很容易地调整和微调我们的网络以适应其他标签集,但它主要是方便的,我们不希望它有一个主要的影响。结果发现,从全连接层到平均池的移动将前1名的准确性提高了约0.6%,然而,即使在删除了全连接层之后,dropout的使用仍然至关重要。
考虑到网络的深度相对较大,以有效的方式将梯度传播回所有层的能力令人担忧。一个有趣的发现是,相对较浅的网络在这项任务上的强大性能表明,网络中间各层所产生的特征应该具有很强的辨别能力。通过添加连接到这些中间层的辅助分类器,我们可以期望在分类器的较低阶段鼓励识别,增加传回的梯度信号,并提供额外的正则化。这些分类器采用更小的卷积网络的形式,放在Inception (4a)和(4d)模块的输出之上。在训练过程中,他们的损失以折算权加入到网络的总损失中(辅助分类器的损失加权为0.3)。在推理时,这些辅助网络被丢弃。
包括辅助分类器在内的侧部额外网络的具体结构如下:
结果网络的示意图如Figure 3所示。
我们的网络使用不可靠的[4]分布式机器学习系统进行训练,该系统使用少量的模型和数据并行性。虽然我们只使用基于 CPU 的实现,但粗略估计 GoogLeNet 网络可以在一周内使用很少的高端 GPUs 进行收敛训练,主要限制是内存的使用。我们的训练使用了0.9动量[17]的异步随机梯度下降,固定的学习速率计划(每8个周期减少4%的学习速率)。使用Polyak平均[13]来创建推理时使用的最终模型。
在比赛前的几个月里,我们的图像采样方法发生了很大的变化,并且已经聚合模型训练与其他选项,有时结合改变超参数,辍学和学习速率,所以很难给出一个明确的指导,最有效的单一的方式来训练这些网络。更复杂的是,受[8]的启发,一些模型主要针对相对较小的作物,另一些则针对较大的作物。尽管如此,有一种方法在比赛后被证实是非常有效的,那就是对图像中大小不一的小块进行采样,这些小块的大小均匀地分布在图像面积的8%到100%之间,其纵横比随机选择在 3 / 4 3/4 3/4和 4 / 3 4/3 4/3之间。此外,我们发现,由安德鲁霍华德的光度失真[8]是有用的打击过度拟合在一定程度上。此外,我们开始使用随机插值方法(双线性、面积、最近邻和立方,概率相等)来调整相对较晚的大小,并结合其他超参数的变化,因此我们无法明确地知道最终的结果是否受到它们的使用的积极影响。
ILSVRC 2014年的分类挑战包括将图像分类为Imagenet层次结构中的1000个叶节点类别之一。大约有120万张用于培训的图像,5万张用于验证,10万张用于测试。每个图像都与一个地面真值类别相关联,并根据得分最高的分类器预测来测量性能。两个数字通常报道:排名前准确率,比较了地面真理反对第一个预测类,前5名的错误率,比较了地面真理对前5预测类:一个图像被认为是正确的分类,如果地面真理是前5名中,无论其排名。该挑战使用前5名的错误率进行排名。
我们参加了挑战,没有外部数据用于培训。除了本文中提到的培训技术外,我们还在测试中采用了一套技术来获得更高的性能,我们将在下面详细介绍。
在本文的其余部分,我们将分析影响最终提交的整体性能的多个因素。
我们最终提交的挑战中,验证和测试数据的前5名错误占6.67%,在所有参与者中排名第一。这与2012年的监督方法相比,减少了56.5%,与前一年的最佳方法(Clarifai)相比,减少了约40%,这两种方法都使用外部数据来训练分类器。Table 2显示了一些性能最好的方法的统计数据。
我们还通过改变模型数量和预测 Table 3中图像时使用的 crops 数量,来分析和报告多重测试选择的性能。当我们使用一个模型时,我们选择验证数据的前1位错误率最低的模型。所有数字都报告在验证数据集上,以避免与测试数据统计数据过度匹配。
ILSVRC检测任务是在200个可能的类中生成图像中对象周围的包围框。如果检测到的对象与真实状况的类匹配,并且它们的边界框重叠至少50%(使用Jaccard索引),则视为正确。额外的检测被认为是假阳性,将受到处罚。与分类任务不同的是,每个图像可能包含许多对象,也可能不包含任何对象,其规模可能从大到小。结果使用平均平均精度(mAP)报告。
GoogLeNet的检测方法类似于[6]的R-CNN,但是它被Inception模型扩展为区域分类器。此外,区域建议步骤通过结合选择性搜索[20]方法和高目标边界框回收的多框[5]预测得到了改进。为了减少误报的数量,超像素大小增加了2倍。这一半的建议来自选择搜索算法。我们重新添加了200个来自多框[5]的区域提案,总的来说,在[6]使用的提案中,有60%来自于此,同时将覆盖率从92%提高到93%。通过增加覆盖率来减少提案数量的总体效果是,单个模型案例的平均精度提高了1%。最后,在对每个区域进行分类时,我们使用了6个卷积神经网络的集合,将结果的准确率从40%提高到43.9%。注意,与R-CNN相反,由于时间有限,我们没有使用边界框回归。
我们首先报告顶部检测结果,并显示自第一版检测任务以来的进展。与2013年的结果相比,准确率几乎翻了一番。表现最好的团队都使用卷积网络。我们报告了 Table 4中的官方评分和每个团队的常用策略:使用外部数据、集成模型或上下文模型。外部数据通常是用于训练模型的ILSVRC12分类数据,然后在检测数据上进行细化。一些团队还提到了本地化数据的使用。由于定位任务边界框的很大一部分没有包含在检测数据集中,因此可以使用这些数据对一般的边界框回归器进行预训练,其方法与使用分类进行预训练的方法相同。GoogLeNet条目没有使用本地化数据进行预训练。
在Table 5中,我们仅使用单个模型比较结果。表现最好的模型是由深刻的洞察力,令人惊讶的是,只有0.3个百分点的改善与3个模型的集合,而GoogLeNet得到明显更强的结果与集合。
我们的结果似乎提供了一个可靠的证据,接近预期的最优稀疏结构,随时可用的密集建筑块是一个可行的方法,以改善神经网络的计算机视觉。该方法的主要优点是,与较浅且较宽的网络相比,在计算量适度增加的情况下,可以获得显著的质量增益。还要注意,我们的检测工作是竞争性的,尽管既没有利用上下文,也没有执行边界盒回归,这一事实为Inception架构的强度提供了进一步的证据。虽然我们期望通过更昂贵的具有相似深度和宽度的网络来获得相似质量的结果,但我们的方法提供了坚实的证据,表明转向更稀疏的架构通常是可行和有用的。这意味着未来有希望在[2]的基础上,以自动化的方式创建更稀疏、更精细的结构。
10 致谢
…
Reference