深度学习之图像分类(五)GoogleNet论文总结(一)

论文总结:

创新点:

  1. 大量使用1X1卷积核,可降低维度,减少计算量,参数是AlexNet的1/12
  2. 多尺度卷积核,实现多尺度特征提取;
  3. 辅助损失层,增加梯度回传,增加正则,减少过拟合。

Abstract:

提出一种深度神经网络叫做 Inception 在增加网络深度和宽度的同时减少参数量和计算量。

为了优化结构,还建立在了赫布理论(当一个神经元的轴突与另一个神经元接近且能刺激使其重复持续的兴奋时,这两个神经元或其中一个便会发生某些生长过程或代谢变化,致使二者的关联性增强。[神经元突触用进废退])和多尺度信息处理。

(赫布的理论认为在同一时间被激发的神经元间的联系会被强化。 比如,铃声响时一个神经元被激发,在同一时间食物的出现会激发附近的另一个神经元,那么这两个神经元间的联系就会强化,形成一个细胞回路,记住这两个事物之间存在着联系。)

本文提出一种名为Inception的深度卷积神经网络架构,在2014年ImageNet大规模视觉识别挑战赛(ILSVRC14)中实现了分类和检测的新技术水平。

这种架构的主要特点是提高了网络内部计算资源的利用率。通过精心设计,增加了网络的深度和宽度,同时保持计算预算不变。为了优化质量,架构决策基于Hebbian原理和多尺度处理的直觉。

在我们提交的ILSVRC14中使用的一个特殊化身是GoogLeNet,一个22层的深度网络,其质量在分类和检测的背景下进行了评估。

Introduction:

近些年,许多神经网络发展迅速,并且在识别分类和目标检测方面取得了非常不错的成绩,不仅得益于硬件、数据集和更加庞大复杂的网络模型,更得益于新的模型思路和改进结构。GoogleNet比AlexNet参数量少12倍但是识别准确率更高

在过去的三年中,由于深度学习和卷积网络[10]的进步,我们的目标分类和检测能力有了显著的提高。

一个令人鼓舞的消息是,大部分进展不仅是更强大的硬件、更大的数据集和更大的模型的结果,而是主要是新想法、算法和改进的网络架构的结果。例如,ILSVRC 2014竞赛中的top entries除了用于检测目的的分类数据集外,没有使用新的数据源。我们向ILSVRC 2014提交的GoogLeNet使用的参数实际上比两年前Krizhevsky等人的获奖架构[9]少了12倍,同时也明显更准确。

在目标检测方面,最大的收获不是来自于越来越大的深度网络的简单应用,而是来自深度架构和经典计算机视觉的协同作用,如Girshick等人[6]的R-CNN算法。

译文:

(我们在进行模型构建时,也将计算机所需要的性能考虑进去,并且基于赫布原理和多尺度准则)

另一个值得注意的因素是,随着移动和嵌入式计算的不断发展,我们算法的效率——尤其是它们的功率和内存使用——变得越来越重要。

值得注意的是,本文中提出的深层架构设计的考虑因素包括了这个因素,而不是纯粹地关注精度数字。(不是简单的只关注精度,还要把功率和内存的使用考虑进去,这也为后边系数矩阵聚类为稠密矩阵做了铺垫)

对于大多数实验,这些模型被设计为在推理时保持15亿乘加的计算预算,因此它们最终不会纯粹成为学术好奇心,(将推理计算量保持在45亿乘加的计算之内,不仅仅是学术上的表现)而是可以在现实世界中使用,即使是在大型数据集上,成本合理。在我们的案例中,“深度”一词有两种不同的含义:首先,在某种意义上,我们以“Inception模块”的形式引入了一个新的组织层次,同时在更直接的意义上,增加了网络深度。一般来说,人们可以将Inception模型视为[12]的逻辑顶点,同时从Arora等人[2]的理论工作中获得灵感和指导。该架构的优势在ILSVRC 2014分类和检测挑战上进行了实验验证,其性能明显优于当前技术水平。

前人做过的相关工作

在提出卷积神经网络的架构之后,之后的网络结构都是类似结构的堆叠,通过增加深度和宽度来解决过拟合,并且提高了精度,这在定位、目标检测和人体姿态估计等方面取得不错成绩。我们的架构受动物神经科学模型的启发,使用一系列不同大小的固定Gabor滤波器来处理多个尺度。并通过堆叠建立了22层的模型

从LeNet-5[10]开始,卷积神经网络(CNN)通常具有一个标准结构,堆叠的卷积层(可选地接着是对比度归一化和最大池化),然后是一个或多个全连接层。(提出了Cnn的标准结构(卷积层-lru-池化层-激活函数))

这种基本设计的变体在图像分类文献中普遍存在,并在MNIST和CIFAR上取得了迄今为止最好的结果,最显著的是在ImageNet分类挑战上[9,21]。

对于更大的数据集,如Imagenet,最近的趋势是增加层数[12]和层大小[21,14],同时使用dropout[7]来解决过拟合问题。尽管人们担心最大池化层会导致准确的空间信息丢失,但与[9]相同的卷积网络架构也已成功应用于定位[9,14]、目标检测[6,14,18,5]和人体姿态估计[19]。

Serre等人受灵长类动物视觉皮层神经科学模型的启发,[15]使用一系列不同大小的固定Gabor滤波器来处理多个尺度。(最大池化层会导致准确的空间信息丢失)

我们在这里使用类似的策略。然而,与[15]固定的2层深度模型相反,Inception架构中的所有滤波器都是学习的。此外,Inception层被多次重复,在GoogLeNet模型中形成了22层的深度模型。

我们在模型中使用了1x1卷积核和RCNN目标检测的技术

Network-in-Network(1X1卷积核的应用)是Lin等人提出的一种增强神经网络表征能力的方法。在他们的模型中,额外的1 × 1卷积层被添加到网络中,增加了网络的深度。我们在我们的架构中大量使用这种方法。然而,在我们的设置中,1 × 1卷积有双重目的:最重要的是,1.它们主要用作降维模块,以消除计算瓶颈,否则将限制网络的大小。2.这不仅可以增加网络的深度,还可以增加网络的宽度,而不会造成显著的性能损失。

最后,目前的目标检测技术是Girshick等人提出的基于卷积神经网络的区域(R-CNN)方法。R-CNN将整个检测问题分解为两个子问题:1.利用颜色和纹理等底层线索以与类别无关的方式生成目标位置建议,1.并使用CNN分类器识别这些位置上的目标类别。这种两阶段的方法利用了低水平线索的边界框分割的准确性,以及最先进的cnn的强大分类能力。我们在提交的检测中采用了类似的管道,但在两个阶段都探索了增强功能,例如多框[5]预测以获得更高的对象边界框召回率,以及集成方法以更好地对边界框建议进行分类。(我们使用1X1卷积核在多框预测获得更高对象边界框召回率以及更好的对边界框进行方面获得了很好的结果)

提高深度神经网络性能最直接的方法是增加它们的大小。这既包括增加深度(网络层数),也包括增加宽度(每个层的单元数)。这是一种简单且安全的训练高质量模型的方法,特别是在有大量标记训练数据的情况下。然而,这个简单的解决方案有两个主要缺点。

更大的规模通常意味着更多的参数,这使得扩大的网络更容易过拟合,特别是在训练集中标记样本的数量有限的情况下。这是一个主要的瓶颈,因为强标记的数据集是费力和昂贵的获得,通常需要专家人工评分人员来区分各种细粒度的视觉类别,如ImageNet中的那些(即使是在1000类的ILSVRC子集中),如图1所示。①(更大规模的网络意味着更大规模的参数,并且在数据集方面,进行细粒度的标记需要专业的认识去完成这个巨大难度的工作)

②统一增加网络规模的另一个缺点是计算资源的使用急剧增加。例如,在深度视觉网络中,如果两个卷积层被链接起来,其滤波器数量的任何均匀增加都会导致计算的二次增长。如果新增的计算能力没有得到有效利用(例如,大多数权重最终都接近于0),那么大部分计算都被浪费了。由于计算预算总是有限的,所以即使主要目标是提高性能质量,也应该对计算资源进行有效分配,而不是随意增加资源的大小。

解决上述两个缺点的办法:解决这两个问题的一个基本方法是引入稀疏性并将全连接层替换为稀疏层,甚至在卷积内部。除了模拟生物系统,由于Arora等人的开创性工作,这也将具有更坚实的理论基础的优势。他们的主要结果是,如果数据集的概率分布由一个大型的、非常稀疏的深度神经网络表示,则可以通过分析前一层激活的相关性统计和聚类输出高度相关的神经元,逐层构建最优的网络拓扑。尽管严格的数学证明需要非常强的条件,但这一陈述与著名的Hebbian原理(神经元一起点火,连接在一起)产生共鸣的事实表明,即使在不那么严格的条件下,这一基本思想也适用于实践。

遗憾的是,当今的计算基础设施在处理非均匀稀疏数据结构上的数值计算时效率非常低。即使算术操作的数量减少了100倍,查找和缓存缺失的开销仍然占主导:切换到稀疏矩阵可能不会有回报。通过使用稳定改进和高度调整的数值库,差距进一步扩大,这些数值库允许极快的密集矩阵乘法,利用底层CPU或GPU硬件的微小细节[16,9]。此外,非均匀稀疏模型需要更复杂的工程和计算基础设施。目前大多数面向视觉的机器学习系统仅通过使用卷积来利用空间域的稀疏性。然而,卷积被实现为与前一层中的补丁的密集连接的集合。自[11]以来,卷积网络传统上在特征维度上使用随机和稀疏的连接表以打破对称性并提高学习效率,但趋势又回到了[9]的全连接,以进一步优化并行计算。目前最先进的计算机视觉体系结构具有统一的结构。大量的过滤器和更大的批量大小允许高效地使用密集计算。

这提出了一个问题,即是否有希望实现下一个中间步骤:一种利用滤波器级稀疏性的架构,正如理论所建议的那样,但通过利用稠密矩阵上的计算来利用我们当前的硬件。大量关于稀疏矩阵计算的文献(如[3])表明,将稀疏矩阵聚类为相对稠密的子矩阵往往可以为稀疏矩阵乘法提供具有竞争力的性能。在不久的将来,类似的方法将被用于非均匀深度学习架构的自动化构建,这似乎不是遥不可及的。

Inception架构开始作为评估复杂网络拓扑结构构造算法的假设输出的案例研究,该算法试图近似由[2]为视觉网络隐含的稀疏结构,并通过密集的、随时可用的组件覆盖假设的结果。尽管这是一个高度投机的任务,但与基于[12]的参考网络相比,早期观察到适度的收益。经过一些调整,Inception作为[6]和[5]的基础网络,被证明在定位和目标检测的背景下特别有用。有趣的是,虽然大多数最初的架构选择都经过了彻底的质疑和测试,但它们在局部上都接近最优。然而,人们必须谨慎:尽管Inception架构已经成为计算机视觉的成功,但仍然存在问题,这是否可以归因于导致其构建的指导原则。要确保这一点,需要更彻底的分析和验证。

Inception架构的主要思想是考虑卷积视觉网络的最优局部稀疏结构如何被现成的密集组件逼近和覆盖。注意,假设平移不变性意味着我们的网络将由卷积构建模块构建。我们所需要的就是找到最优的局部结构并在空间上重复它。Arora et al.[2]建议采用逐层构建,分析最后一层的相关性统计数据,并将其聚类为具有高度相关性的单元组。这些簇形成下一层的单元,并与前一层的单元相连。我们假设前一层的每个单元对应于输入图像的某个区域,这些单元被分组到滤波器组中。在较低的层(靠近输入的层)中,相关单元将集中在局部区域。因此,我们最终会得到大量集中在单个区域的集群,它们可以被下一层中的1×1卷积层覆盖,如[12]所建议的那样。然而,人们也可以预期,将会有更少的空间分布更分散的集群,这些集群可以被更大的patch上的卷积覆盖,(个人理解为感受野随着深度的积累越来越大,需要更大的卷积核完成)并且在越来越大的区域上的patch数量将会越来越少。为了避免补丁对齐问题,当前的Inception架构被限制为过滤大小1×1、3×3和5×5;这个决定更多的是出于方便,而不是出于需要。这也意味着所建议的架构是所有这些层的组合(整个架构由inception结构单元组成)其输出滤波器组连接成单个输出向量,形成下一阶段的输入。此外,由于池化操作对当前卷积网络的成功至关重要,这表明在每个这样的阶段添加一个替代的并行池化路径也应该具有额外的有益效果(见图2(a))。

当这些“Inception模块”彼此堆叠在一起时,它们的输出相关统计必然会发生变化:当更高的抽象特征被更高的层捕获时,它们的空间集中度预计会降低。这表明3×3和5×5卷积的比例应该随着我们移动到更高的层而增加。

以上模块的一个大问题是,至少在这种naı̈ve形式中,即使是适度数量的5×5卷积在具有大量滤波器的卷积层上也可能非常昂贵。一旦加入池化单元,这个问题变得更加明显:输出过滤器的数量等于前一阶段的过滤器数量。将池化层的输出与卷积层的输出合并将不可避免地导致每个阶段的输出数量增加。虽然这种架构可能覆盖了最优的稀疏结构,但它的效率非常低,在几个阶段内就会导致计算爆炸。,解决办法:在3x3,5X5的卷积核之前添加1X1的卷积核进行降维操作,降低模型的参数。

这导致了Inception架构的第二个想法:在计算需求会增加太多的地方明智地减少维度。这是基于嵌入的成功:即使是低维嵌入也可能包含有关相对较大的图像块的大量信息。然而,嵌入以密集的、压缩的形式表示信息,压缩的信息更难处理。表示应该在大多数地方保持稀疏性(根据[2]的条件要求),只有在必须对信号进行聚集时才对信号进行压缩。也就是说,1×1卷积用于在昂贵的3×3和5×5卷积之前计算归约。除了用作减量,它们还包括使用修正线性激活,使它们具有双重用途。最终结果如图2(b)所示。

一般来说,Inception网络是由上述类型的模块堆叠在一起组成的网络,偶尔具有步幅2的最大池化层,以将网格的分辨率减半。出于技术原因(训练期间的记忆效率),只在较高的层开始使用Inception模块似乎是有益的,同时以传统的卷积方式保持较低的层。这并不是严格必要的,只是反映了我们当前实现中一些基础设施的低效。在前几层仍需要传统卷积进行处理

这种架构的一个有用之处在于,它允许在每个阶段显著增加单元的数量,而不会在后期造成计算复杂度的失控膨胀。这是通过在具有更大patch尺寸的昂贵卷积之前普遍使用降维来实现的。此外,设计遵循实用直觉,即视觉信息应在不同尺度上进行处理,然后进行聚合,以便下一阶段可以同时从不同尺度中提取特征。

改进了对计算资源的使用,可以在不陷入计算困难的情况下增加每个阶段的宽度和阶段数量。人们可以利用Inception架构来创建稍微逊色,但计算成本更低的版本。我们发现,所有可用的旋钮和杠杆都允许计算资源的受控平衡,从而使网络比具有非inception架构的类似执行网络快3 - 10倍,然而,这需要在这一点上仔细的手动设计。

通过“GoogLeNet”的名称,我们指的是我们在ILSVRC 2014竞赛中使用的Inception架构的特定化身。我们还使用了一个更深更广的Inception网络,质量略优,但将其添加到集成中似乎只略微改善了结果。我们省略了该网络的细节,因为经验证据表明,确切的架构参数的影响相对较小。表1说明了在竞赛中使用的最常见的Inception实例。这个网络(用不同的图像块采样方法训练)被用于我们集成中的7个模型中的6个。

所有卷积,包括Inception模块内的卷积,都使用修正线性激活。在我们的网络中,感受野的大小在RGB颜色空间中为224×224,均值为零。“#3×3 reduce”和“#5×5 reduce”表示在3×3和5×5卷积之前使用的缩减层中1×1滤波器的数量。在pool proj列的内置max-pooling之后,可以看到投影层中1×1过滤器的数量。所有这些还原/投影层也使用修正线性激活。

该网络在设计时考虑了计算效率和实用性,因此推理可以在单个设备上运行,包括计算资源有限的设备,特别是低内存占用的设备。

当只计算带参数的层时,网络有22层(如果我们也计算池化,则为27层)。用于构建网络的总层数(独立构建块)约为100层。确切的数字取决于机器学习基础设施如何计算层数。分类器之前使用的平均池化是基于[12]的,尽管我们的实现有一个额外的线性层。线性层使我们能够轻松地使我们的网络适应其他标签集,但它主要是为了方便使用,我们不期望它有重大影响。我们发现,从全连接层移动到平均池化将top-1的准确率提高了约0.6%,然而,即使在删除全连接层后,dropout的使用仍然是必不可少的。

辅助分类器结构

包含辅助分类器的额外网络的确切结构如下所示:

•具有5×5滤波器大小和步长3的平均池化层,产生(4a)的4×4×512输出,和(4d)阶段的4×4×528。

•1×1具有128个滤波器的卷积,用于降维和校正线性激活。

•具有1024个单元和整流线性激活的全连接层。

•dropout层具有70%的drop output比率。

•一个线性层,以softmax损失作为分类器(与主分类器预测相同的1000个类别,但在推理时删除)。

训练方法:

GoogLeNet网络使用DistBelief[4]分布式机器学习系统进行训练,使用适度的模型和数据并行性。尽管我们只使用了基于CPU的实现,但粗略估计表明,可以在一周内训练GoogLeNet网络,使其使用少量高端gpu进行收敛,主要限制是内存使用。我们的训练使用0.9动量的异步随机梯度下降[17],固定的学习率调度(每8个周期降低4%的学习率)。使用Polyak平均[13]来创建推理时使用的最终模型。

在比赛前的几个月里,图像采样方法已经发生了很大的变化,并且已经用其他选项训练了收敛模型,有时与改变的超参数相结合,如dropout和学习率。因此,很难给训练这些网络的最有效的单一方法提供明确的指导。更复杂的是,一些模型主要在较小的相对作物上训练,其他模型在较大的作物上训练,其灵感来自[8]。尽管如此,有一个方法在比赛后被验证效果很好,包括对图像的各种大小的块进行采样,其大小均匀分布在图像区域的8%和100%之间,长宽比约束在区间[3 4,4 3]。此外,我们发现Andrew Howard[8]的光度失真有助于对抗对训练数据成像条件的过拟合。

实验结果:略

结论:

结果产生了一个有力的证据,用现成的密集构建块来近似预期的最优稀疏结构是改进计算机视觉神经网络的一种可行方法。与更浅、更窄的架构相比,该方法的主要优点是在计算需求适度增加的情况下,获得了显著的质量增益。

我们的目标检测工作是有竞争力的,尽管没有利用上下文也没有执行边界框回归,这进一步证明了Inception架构的优势。

对于分类和检测,期望通过昂贵得多的相似深度和宽度的非初始型网络来实现相似的结果质量。尽管如此,该方法产生了可靠的证据,表明迁移到更稀疏的架构通常是可行和有用的想法。这表明,未来的工作将朝着在[2]的基础上以自动化方式创建更稀疏和更精细的结构,以及将Inception架构的见解应用于其他领域。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值