经典论文阅读-11:GoogLeNet 与 Inception

115 阅读14分钟

深入理解卷积

论文地址:[PDF] Going deeper with convolutions | Semantic Scholar

摘要

我们提出一种深度卷积网络,代号 Inception,实现了最先进的 ImageNet 分类、检测效果。该网络架构的标志是高效利用计算资源。通过精心设计,我们在增加网络深度与宽度的同时,保持计算负荷不变。为了优化模型效果,该架构的决策基于 Hebbian 准则与多规模处理原则。我们提交到 ILSVRC14 的模型的特殊版本称为 GoogLeNet,一个 22 层深度网络,在分类与检测的上下文中评估模型质量。

简介

过去三年,随着深度学习和卷积网络的进步,目标分类与检测的能力得到巨大提升。好消息是这些成果不依赖更好的硬件、更大的数据集、更大的模型,主要来自新思想、新算法、新网络结构。没有使用新数据集,仍基于 ILSVRC 2014 的分类与检测数据集,我们的模型与两年前 AlexNet 模型相比,参数缩小 12 倍,同时准确率更高。在目标检测方向,最突出的效果提升并不来自更大更深的网络应用,而来自深度网络与经典计算机视觉的协同,如 R-CNN 算法。

另一个重要因素来自规模持续增长的移动与嵌入式设备的需要,对模型在算力与内存使用效率上有更高的要求。值的注意的是,该需要才是本文提出的网络架构的主要原因,而不是纯粹提升准确率。在大多数实验上,模型推断时的计算负载控制在 15 亿乘加运算,因此该算法不只是满足学术好奇心,是可以用在真实应用中的,甚至在超大规模数据集上也能维持合理的计算耗时。

本文,重点关注视觉领域的高效深度神经网络架构,代号 Inception,其名称来自 Lin 的论文中的网络与流行词 ’We need to go deeper‘ 。在该模型中,deep 的含义有两层:第一,是新的组织结构,以 Inception 模块的形式存在,换句话说,是提升了网络深度。该架构的优点通过 ILSVRC 2014 的分类与目标检测比赛中实际验证,性能显著优于当前最新的模型。

相关研究

从 LeNet-5 开始,卷积神经网络 CNN 通常具有标准结构:堆叠的卷积层,其后可选地连接约束归一化层或最大池化层,最后是几个全连接层。这种基础设计普遍存在于图片分类文献中,同时在 MNIST、CIFAR 等数据集上产生了目前最好的结果,尤其在 ImageNet 这种大规模数据集上得到了显著成果。最近 CNN 的研究潮流是增加卷积层数量和每层的宽度,同时使用 Dropout 来解决过拟合问题。

尽管使用 Max Pooling 导致丢失准确的空间信息,卷积神经网络也在定位、目标检测、体态估计等任务上取得了很好的效果。

受灵长类视觉皮层的神经元模型启发,Serre 等人使用一系列不同大小的固定 Gabor 过滤器来解决多尺寸问题。我们在此使用相同策略。然而,与固定 2 层深度模型相比,Inception 架构中的所有过滤器都需要训练。而且,Inception 层重复多次,构成 22 层深度网络,即 GoogLeNet 。

网络里的网络是一种增强网络表示能力的方法,在这种模型里,添加了额外的 1 x 1 卷积层,增加模型深度。在我们的模型中也重度使用该方法。然而,在我们的模型中,1 x 1 卷积核具有理想的特殊效果:多数条件下,使用它们来降维,以解决计算瓶颈,限制网络规模。这不仅可以增加网络深度,还可以增加网络宽度,而没有重大性能损失。

最终,当前最新的目标检测模型是 Regions with Convolutional Neural Networks R-CNN 。R-CNN 将所有检测问题分解为两个字问题,使用低层线索,如颜色、图案等,以分类方式生成目标位置提案,然后使用 CNN 分类器在这些位置里识别目标分类。这种二阶段过程使用低维线索缓解了边界框 Bounding Box 的准确率问题,同时使用了最新的 CNN 的强效分类能力。我们采用相似的处理流程,而且增强了这两个阶段,如使用 multi-box 增强目标边界框召回率,使用组合方法更好地分类边界框提案。

动机与高层考虑

提升深度神经网络最直接的方法是增大规模,包括增大深度(网络层数)与宽度(每层神经元数)。这是训练高质量模型的简单且安全的方法,尤其在有大量可用的标签数据的情况下训练模型。然而,这种简单方式有两个重大缺陷。

更大的规模意味着更大的参数量,导致网络过大容易过拟合,尤其在标签样本数量有限时。强标签数据的主要瓶颈在于人力成本高昂、经常需要专家评估细粒度分类。

另一个增加网络规模的缺点是急剧增加了所需计算资源。例如,深度视觉网络中,如果两个卷积层连接,对其卷积核大小的任何相同增加,都会导致计算量对应增加四倍。如果添加的网络容量没有高效利用,就浪费了大量计算资源。由于计算资源有限,对计算资源的分配更倾向于随意增加的那部分,即使在主要目标是增加性能质量时。

解决这两个问题的基础方法是引入稀疏性,使用稀疏连接替代层与层之间的全连接,即使在卷积层之间。其结果展示了如果数据集的概率分布通过大型深度稀疏神经网络表示,那么最优网络拓扑可以一层一层的构建,分析前一层激活单元的相关统计量,聚合具有高度相关的神经元输出。尽管严格数学定义需要很强的条件,该事实也表明其低层思想可用在条件没那么严格的情况下。

不幸的是,当前计算基础设施在海量非统一稀疏数据结构的计算上很低效。即使其算数运算量减少 100 倍,整个查询与缓存未命中的耗时也是具有统治性的:使用稀疏矩阵可能不是好方法。通过使用稳定和高度调整的数值计算库可带来非常快的密度矩阵运算,进一步拉大差距。同时,非统一稀疏模型需要更多熟练的工程师和强大的计算基础设施。当前最新的视觉机器学习系统在空间域上使用稀疏性,仅为了利用卷积运算。然而,当前卷积被实现为对上一层的密度连接。卷积层最早在特征维度上使用随机与稀疏连接,为了打破对称性与提升学习效果,后来又换回了密度连接,为了进一步优化并行计算。当前最先进的计算机视觉架构使用统一结构,大量过滤器和更大规模的批大小允许高效利用密集计算。

这带来了一个问题:是否可以存在一种中间步,架构可利用卷积层的稀疏性,同时还能利用当前设备在密度矩阵计算上的高效率。在稀疏矩阵计算方面的大量文献表示聚集稀疏矩阵到相对密集的子矩阵可以提升计算性能。也不用牵强附会地认为相似方法未来会用在自动构建非统一深度架构上。

Inception 架构源于研究经典网络拓扑结构算法的假设输出,该算法尝试估计视觉网络的稀疏结构,解释密度组件的假设输出。尽管只是一种猜测,在之前与引用网络的对比中也获得了很大的收益。通过微调差距,Inception 被证明在局部化和目标检测方面非常有效。有趣的是,虽然大部分原始架构的选择都是独立的,它们最终结果都接近局部最优。必须注意,尽管 Inception 架构在计算机视觉上大获成功,该网络在能否作为使用此架构设计(稀疏连接)的准则方面还存在问题。确定这一点需要更多的分析与验证。

架构细节

Inception 架构的主要思想是考虑如何使用现有密度组件来估计与解释卷积视觉网络的局部最优稀疏结构。注意到转换不变性意味着该网络构建于卷积组件。我们要做的是找到最优局部结构,并且重复该结构。Arora 等人建议一层一层的构建,先分析上一层的关联统计量,然后聚合高关联性的单元,再构建下一层。我们假设每个前一层的单元对应输入图片的某个区域,这些单元通过卷积核组聚合在一起。低层单元更能表示局部区域。因此, 我们提出基于单个区域的聚合,可用 1 x 1 卷积表示。然而,人们也期望更大的卷积核可以带来相似的聚合空间分布,但更大的卷积核会减少区域的单元数量。为了避免大卷积核带来的对齐问题,当前 Inception 架构的模型约束卷积核规模为 1 x 1 、 3 x 3 和 5 x 5 。该决策更多基于便捷性而不是必须性。这也意味着该架构是所有带这些卷积核组的卷积层的组合,各层将其卷积核组的输出连接为单个输出向量构成下一阶段的输入。此外,因为池化操作是当前卷积网络成功的关键因素,表示添加可并行池化会带来额外的收益。

由于这些 Inception 模块是一层叠一层,其输出的相关统计也会有限变动,高层捕获高抽象特征,其空间集中性按期望减少。这表明 3 x 3 、5 x 5 卷积的信息比率会按层级增加。

pic1.png

上述模块的一个大问题是,最少在这种原始形态中,即使数量适中的 5 x 5 卷积层,在大量卷积核的情况下,也会非常耗时。该问题在添加了池化单元后更加明显:输出过滤器的数量等于前一阶段过滤器的数量。池化层合并的卷积层的输出会不可避免地增加各个阶段的输出量。尽管该架构可能解决最优稀疏结构,也会非常低效的处理该结构,在几个阶段后计算量爆炸。

这带来 Inception 架构的第二个想法:明智地在计算需求增长太多时降维。这基于嵌入技术的成功,即使低维嵌入也可包含一个相当大的特征图的许多信息。然而,嵌入表示信息处于密度、压缩格式,其压缩的信息很难处理。该表示在多数时候可以保持稀疏,只在需要聚合大量信息时才做压缩。即在 3 x 3 与 5 x 5 卷积运算前,使用 1 x 1 卷积来降维。除了用于降维,也包含对整流线性单元的应用,使其具有双重用途。

pic2.png

通常,Inception 网络是由上述各种类型的模块互相堆叠的网络,偶尔带有步长为 2 的最大池化层来减半分辨率。出于技术原因,似乎只有在高层保留低层的传统卷积方式时,使用 Inception 模块才有效。这并非是严格需要,只是反映一些当前实现的基础设施的低效性。

该架构有用方面是它允许在每层显著增加单元数量,而不导致下一层计算复杂度无法控制的爆炸。这通过总在耗时的高宽度卷积层前添加降维运算实现。而且,该设计符合实践中的直觉感受,视觉信息能在多种规模上处理并聚合,因此下一阶段可以从不同规模的特征中抽取信息。

计算资源的进一步利用允许增加每一阶段的宽度和总体阶段数,而不导致计算困难。人们可以使用 Inception 架构来创建性能稍微差一点,但更高效的模型版本。我们发现所有这些旋钮与杠杆技术都能控制计算资源的均衡,使构建的网络比效果相似的非 Inception 网络效率提升 3-10 倍,虽然需要不少人工精细设计。

GoogLeNet

通过使用 GoogLeNet 名称,我们指 Inception 架构的某种具体实现,用于 ILSCRC 2014 比赛中。我们不久之后也使用一个更深更宽的 Inception 网络版本提升了模型效果。本节介绍该网络的细节,经验证明具体架构参数的影响相对较小。下表列举了用于对比的常见 Inception 网络实例参数。在集成测试中使用了下述 7 个模型中的 6 个。

pic3.png

所有的卷积运算,包括在 Inception 模块中的,都使用线性整流激活 ReLU。网络感知域大小为 224 x 224 的 RBG 色彩空间,且不做零平均。‘3 x 3 reduce’ 与 ‘5 x 5 reduce’ 表示降维层里 1 x 1 过滤器数量,该降维层用于 3 x 3 与 5 x 5 卷积前。也可在 pool proj 列看到内置最大池化层后的映射层的 1 x 1 过滤器数量。

该网络设计具有理想的实际计算效率,因此可在个人设备的有限资源上做推理计算。

只考虑带参数的层,该网络有 22 层深。该网络的整体构建层数大约为 100 层。具体层数取决于机器学习基础设施是如何对其计数的。分类前的平均池化基于文献 12,我们还额外添加了线性层,该线性层可让网络适应不同数据集的标签集。然而,通常使用线性层是为了图方便,并不指望其发挥重要作用。我们发现添加平均池化层后,模型准确率提升 0.6% 。而使用 Dropout 仍然很必要,即使在删除了全连接层后。

给定一个相对深的网络,梯度反向传播的能力与效率需要格外注意。该任务上浅层网络的强性能说明网络中间层产生的特征很有判别性。通过给模型中间层添加额外的分类器,可利用低层的特征判别能力。这是考虑到正则化后导致梯度消失问题而做出的选择。这些分类器按较小的卷积网络形式放在 Inception 4a 与 4b 的输出后。其损失带权添加到网络的整体损失中。在推理阶段,这些额外的网络被移除。后续实验证实这些额外分类器的影响效果非常小,大约 0.5%,只需一个就可实现同样的效果。

该带有额外分类器的网络具体结构如下。

  • 带 5 x 5 过滤器的平均池化层,步长为 3,产生 4 x 4 x 512 的输入给 4a,产生 4 x 4 x 528 的输入给 4b。

  • 带 128 个 1 x 1 过滤器的卷积层来做降维与 ReLU。

  • 带 1024 个单元多全连接层,包括 ReLU。

  • Dropout 层的比率是 70%。

  • 带 softmax 的线性层做分类。

训练策略

ILSVRC 2014 设置与结果

总结

我们的结果产生了一种确凿证据,证明使用已有密度构建块来估计期望的最优稀疏结构是可行的,以提升神经网络在视觉领域的能力。该方法的主要优点是,在浅层模型上增加少量计算复杂度,却可以带来巨大的模型效果提升。