(4) [CVPR15] Going deeper with convolutions
计划完成深度学习入门的126篇论文第四篇,来自Google的科研人员在ILSVRC14比赛上取得冠军后的论文,发表在CVPR15上。为致敬LeNet,网络取名为GoogLeNet。
Tips:谷歌的中国学者贾扬清也是作者之一
摘要Abstract
在2014年ImageNet大规模视觉识别挑战中,我们提出了一种代号为Inception的深度卷积神经网络架构,实现了分类和检测的新技术(ILSVRC14)。该体系结构的主要特点是提高了网络内部计算资源的利用率。通过精心设计,我们在保持计算预算不变的情况下增加了网络的深度和宽度。
我们建议把ILSVRC14叫做GoogLeNet,这是一个22层的深度网络,主要是用来实现分类和检测。
We propose a deep convolutional neural network architecture codenamed Inception that achieves the new
state of the art for classification and detection in the ImageNet Large-Scale Visual Recognition Challenge 2014
(ILSVRC14). The main hallmark of this architecture is the
improved utilization of the computing resources inside the
network. By a carefully crafted design, we increased the
depth and width of the network while keeping the computational budget constant. To optimize quality, the architectural decisions were based on the Hebbian principle and
the intuition of multi-scale processing. One particular incarnation used in our submission for ILSVRC14 is called
GoogLeNet, a 22 layers deep network, the quality of which
is assessed in the context of classification and detection.
一、介绍
在过去的三年中,由于深度学习和卷积网络的发展,我们的目标分类和检测能力有了显著的提高。
一个令人鼓舞的消息是,这一进展的大部分不仅是更强大的硬件、更大的数据集和更大的模型的结果,而且主要是新思想、算法和改进的网络架构的结果。
- powerful hardware,
- larger datasets and bigger models
- algorithms and improved network architectures
例如,在ILSVRC 2014竞赛中,除了同一竞赛的分类数据集用于检测之外,没有使用其他新的数据源。我们提交给ILSVRC 2014的GoogLeNet实际上使用的参数比两年前Krizhevsky et al[9]等获奖架构少12倍,但要精确得多。在目标检测方面,最大的收获不是来自于越来越大的深度网络的幼稚应用,而是来自于深度架构和经典计算机视觉的协同作用,如Girshick等人的R-CNN算法。
另一个值得注意的因素是,随着移动和嵌入式计算的不断发展,我们算法的效率——尤其是它们的功耗和内存使用——变得越来越重要。值得注意的是,本文提出的深层架构设计的考虑因素中包含了这一因素,而不是仅仅关注于精度数字。对于大多数的实验,模型计算的预算是为了保持15亿次乘法加法运算,这样他们不最终是一个纯学术的好奇,但可以把现实世界中使用,即以合理的成本使用在大型数据集上。
在本文中,我们将重点研究一种高效的计算机视觉深度神经网络架构,其代码为Inception,它的名字来源于Lin等人结合著名的“我们需要更深入”的网络热词。在我们的例子中,“deep”一词有两种不同的含义:首先,在我们以“Inception模块”的形式引入一个新的组织层次的意义上,以及在增加网络深度的更直接意义上。更通畅来说,可以将Inception模型看作是的逻辑要点,同时从Arora等人的理论工作中获得灵感和指导。该架构的优点在ILSVRC 2014分类和检测挑战中得到了实验验证,在那里它的性能显著优于当前的技术水平。
二、相关工作
首先提到了LeNet是所有CNN的先驱。卷积神经网络(CNN)通常有一个标准的结构——层叠卷积层(可选后面跟着con-)
接着是一个或多个完全连接的层。这种基本设计的变体在图像分类文献中非常普遍,迄今为止在MNIST、CIFAR和最著名的ImageNet分类挑战中都取得了最好的结果。对于像Imagenet这样较大的数据集,最近的趋势是增加层数和层大小,同时使用drop解决过拟合问题。
虽然担心max-pooling层会丢失准确的空间信息,但是同样的CNN结构也成功的应用于定位localization, 目标检测object detection和人体姿势识别 human pose estimation。
受灵长类视觉皮层神经科学模型的启发,Serre等人使用一系列不同大小的固定Gabor过滤器来处理多个尺度。我们在这里使用类似的策略。然而,与固定的2层深度模型相反,Inception架构中的所有过滤器都是学习的。此外,Inception层被重复很多次,最后得到一个22层的GoogLeNet的深度模型。
Network-in-Network是Lin等人为了提高神经网络的代表性而提出的一种方法。在他们的模型中,额外的1×1卷积层添加到网络,增加其深度。我们在架构中大量使用这种方法。然而,在我们的设置1×1有双重目的:最关键的是,他们主要是使用降维模块删除计算瓶颈,,否则将限制我们的网络的规模。这不仅增加了网络的深度,也增加了网络的宽度。
最后,目前的目标检测技术是Girshick等人提出的卷积神经网络(R-CNN)区域检测技术。R-CNN将整个检测问题分解为两个子问题:利用颜色和纹理等低级线索以一种类别无关的方式生成对象位置建议,并使用CNN分类器识别这些位置上的对象类别。这种两阶段方法利用了低水平线索包围框分割的准确性,以及最先进的cnn的强大分类能力 。我们在检测提交中采用了类似的管道,但在这两个阶段中都探索了增强功能,比如多框[5]预测更高的对象边界框召回率,以及更好地分类边界框建议的集成方法 。
三、Motivation and High Level Considerations
提高深度神经网络性能最直接的方法是增大其规模。这同时包括增加网络的深度及其宽度(每个级别上的单元数)。这是一种训练高质量模型的简单而安全的方法,特别是考虑到有大量标记的训练数据可用。然而,这个简单的解决方案有两个主要缺点:
- 更大的尺寸通常意味着更多的参数,这使得扩大的网络更容易过度拟合,特别是在训练集中标记的例子的数量有限的情况下。这是一个主要的瓶颈,因为获取强标记的数据集既费力又昂贵,通常需要专业的人工评级人员来区分各种细粒度的可视类别,比如ImageNet(甚至是1000类ILSVRC子集)中的类别,如图1所示。
两个不同于ILSVRC 2014分类挑战的1000个类,而区分这些类需要领域知识
- 统一增加网络大小的另一个缺点是计算资源的使用显著增加。例如,在深度视觉网络中,如果将两个卷积层链接起来,其滤波器数量的任何均匀增加都会导致计算量的二次增加。如果所增加的容量没有得到有效的利用(例如,如果大多数权重最终接近于零),那么大部分计算都是浪费的。由于计算预算总是有限的,因此即使主要目标是提高性能的质量,也不希望不加区分地增加规模,而是希望计算资源得到有效的分配。
解决这两个问题的一个基本方法是引入稀疏性,并用稀疏层替换完全连接的层,甚至在卷积内部也是如此。除了模仿生物系统,由于Arora开创性的工作,这也将具有更坚实的理论基础的优势。他们的主要结果表明,如果数据集的概率分布可以用一个非常稀疏的大深度神经网络来表示,那么通过分析前一层**的相关统计信息,并对输出高度相关的神经元进行聚类,就可以逐层构建最优网络拓扑。虽然严格的数学证明需要非常强的条件,但事实是,这种状态与众所周知的Hebbian原理神经元是一致的,这些神经元一起放电,连接在一起,这表明在实践中,即使在不那么严格的条件下,基本的想法也是适用的。
不幸的是,当涉及到非均匀稀疏数据结构的数值计算时,当今的计算基础设施非常低效。即使算术运算的数量减少到100年,查找的开销和缓存错过会主导:切换到稀疏矩阵可能不偿还。差距进一步扩大,稳步提升的使用和高度调整数值库允许极快稠密矩阵乘法,利用底层的细节CPU或GPU硬件。此外,非均匀稀疏模型需要更复杂的工程和计算基础设施。目前大多数面向视觉的机器学习系统仅仅通过卷积来利用空间域的稀疏性。然而,卷积是作为与前一层补丁的密集连接的集合实现的。从开始,ConvNets为了打破对称性,提高学习效率,传统上在特征维上使用随机稀疏连接表,而为了进一步优化并行计算,ConvNets又回到了的全连接。
目前最先进的计算机视觉体系结构具有统一的结构。大量的过滤器和更大的批处理大小允许高效使用密集计算。这就提出了一个问题:是否有希望实现下一个中间步骤:如该理论所建议的那样,使用过滤级稀疏性的体系结构,但是通过对密集矩阵的计算来利用我们当前的硬件。大量关于稀疏矩阵计算的文献(如[3])表明,将稀疏矩阵聚类成相对密集的子矩阵,往往会使稀疏矩阵乘法具有竞争性的性能。在不久的将来,类似的方法将被用于非统一深度学习架构的自动化构建,这似乎并不牵强。Inception架构最初是作为一个案例研究来评估一个复杂的网络拓扑结构构建算法的假设输出,该算法试图为视觉网络近似[2]所隐含的稀疏结构,并覆盖由密集的、容易获得的组件所假设的结果。尽管这是一项高度投机性的工作,但与基于[12]的参考网络相比,早期观察到的收益并不大。经过一些调整,差距扩大了,先启被证明在定位和对象检测上下文中特别有用,因为它是[6]和[5]的基本网络。有趣的是,虽然大多数最初的架构选择都受到了质疑,并在分离过程中进行了彻底的测试,但它们在本地接近最优。但是,我们必须谨慎:尽管Inception架构已经成为计算机视觉的一个成功案例,但是这是否可以归因于导致它构建的指导原则仍然是值得怀疑的。要确保这一点,就需要进行更彻底的分析和核查。
注:[12]M. Lin, Q. Chen, and S. Yan. Network in network. CoRR, abs/1312.4400, 2013.
四、设计细节
注意,假设平移不变性意味着我们的网络将由卷积构建块构建。我们所需要的就是找到最优的局部构造并在空间上重复它。Arora等人提出了一种逐层构建的方法,即分析最后一层的相关统计数据,并将其聚类成高相关性的单元组。这些集群形成下一层的单元,并与上一层的单元相连接。我们假设来自较早层的每个单元对应于输入图像的某个区域,这些单元被分组到过滤器组中。在较低的层(接近输入的层),相关单元将集中在局部区域。因此,我们会得到一个集中在单个区域的大量集群,它们可以被下一层的1x1个卷积所覆盖,如[12]中所示。
然而,我们也可以预期,在更大的斑块上可以被卷积覆盖的空间分布更广的簇的数量将会减少,而在越来越大的区域上,斑块的数量将会减少。为了避免补丁对齐问题,先启架构的当前版本被限制为过滤大小为1x1,3x3,5x5;这个决定更多的是基于方便而不是必要性。这也意味着建议的体系结构是所有这些层的组合,它们的输出过滤器组连接到一个输出向量,形成下一阶段的输入。此外,由于池操作对于当前卷积网络的成功至关重要,它建议在每个这样的阶段中添加一个备选的并行池路径也应该会产生额外的有益效果(参见图2(a))。由于这些先启模块彼此堆叠在一起,它们的输出相关统计信息必然会有所不同:随着更高抽象的特性被更高的层捕获,它们的空间集中度预计会降低。这意味着随着我们向更高的层移动,3x3和5x5个卷积的比例应该会增加。
与上述模块的一个大问题,至少在这个na¨ıve形式,是中等数量的5×5旋转可以昂贵的卷积层与大量的过滤器。一旦将池单元添加到组合中,这个问题就变得更加明显:输出过滤器的数量等于上一阶段滤波器的数量。池化层的输出与卷积层的输出合并将不可避免地导致各个阶段输出数量的增加。虽然这种体系结构可以覆盖最优的稀疏结构,但它的效率非常低,导致在几个阶段内就会出现计算爆炸。
这就引出了先启体系结构的第二个想法:明智地减少维度,否则计算需求会增加很多。这是基于嵌入的成功:即使是低维度的嵌入也可能包含大量关于相对较大的图像补丁的信息。然而,嵌入式以一种密集的、压缩的形式表示信息,而压缩的信息很难处理。这种表示应该在大多数地方保持稀疏(根据[2]条件的要求),并且只在需要对信号进行大规模聚集时才压缩信号。也就是说,在昂贵的3 3和5 5卷积之前,使用1 1卷积来计算约简。除了用作还原,它们还包括使用校正的线性活化,使它们具有双重用途。最终结果如图2(b)所示。
通常,先建网络是由上面类型的模块相互堆叠而成的网络,偶尔使用带stride 2的max-pooling层将网格的分辨率减半。出于技术原因(在训练期间的内存效率),只在较高的层上开始使用Inception模块,同时以传统的卷积方式保持较低的层,这似乎是有益的。这并不是完全必要的,只是反映了我们当前实现中的一些基础设施效率低下。该体系结构的一个有用的方面是,它允许在每个阶段显著增加单元的数量,而不会在后期的计算复杂性中出现无法控制的激增。这是通过在昂贵的卷积之前普遍使用降维来实现的。此外,该设计遵循的是一种实践直觉,即视觉信息应该在不同的尺度上进行处理,然后进行聚合,以便下一阶段能够同时从不同尺度上提取特征。改进了对计算资源的使用,可以在不遇到计算困难的情况下增加每个阶段的宽度和阶段的数量。您可以利用Inception架构来创建稍微逊色一些,但是在计算上更便宜的版本。我们发现,所有可用的旋钮和杠杆都允许对计算资源进行可控的平衡,从而使网络比具有非先启架构的类似性能的网络快3到10倍,但是在这一点上,这需要仔细的手工设计。
五、GoogLeNet
包括辅助分类器在内的侧面额外网络准确结构如下:
- 5×5层平均滤波器尺寸和步幅3,输出4×4×512和4×4×528。
- 1×1与128个卷积过滤器为线性降维并纠正**。
- 1024个单元的全连接层,线性**校正。
- drop - output占70%的drop - output layer。
- 以softmax损耗作为分类器的线性层(预测与主分类器相同的1000个类,但在推断时删除)。
六、分类结果