GoogleNet论文翻译和解析

注:本文多采用意译,并非逐句翻译,蓝字为注解和我个人的理解,希望对大家有所帮助,有错误也希望大家指出。

原文链接:

1409.4842 (arxiv.org)

摘要

        我们设计了一种深度卷积网络结构,命名为Inception,它用来在2014 年 ILSVRC14 大赛中设置分类和检测的新技术状态。这个结构主要特点是提高了网络内部计算机资源的利用率。这一点通过一个巧妙地设计来实现,该设计允许提高网络深度和规模的同时保持计算预算不变。为了优化质量,这个结构基于Hebbian原理和多尺度处理的直觉感知。

注:

Hebbian原理:一个神经科学理论,解释了在学习的过程中脑中的神经元所发生的变化,不用过多了解。

多尺度处理:multi-scale processing,大致可理解为,当人和图片距离不同时(尺度不同),人所感知到的图片特征不同,这里不用过多了解,CNN就是一种处理多尺度问题的方法,

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

一、简介

        在最近的三年,因为深度学习的发展,特别是卷积神经网络的发展,图像识别和目标检测的质量一直在以惊人的速度发展。令人鼓舞的消息是,这些进步不仅仅是因为硬件的发展,也不仅仅是因为更大数据集和模型,而更多的是因为新的想法,算法和改善的网络结构的发展。例如,除了ILSVRC2014竞赛的分类数据集外,没有新的数据源被使用。我们的GoogLeNet 提交给ILSVRC2014实际上使用了比 两年前获奖的架构[9] (一种网络模型)少了12倍的参数,同时更加准确。目标检测的最大收益并不是仅仅是使用深度网络或更大的模型,而是来自深度架构和经典计 算机视觉的协同作用, 比如R-CNN算法。

        另一个值得注意的因素是,随着移动设备和嵌入式的持续发展,我们的算法的效率——特别是它们的能量和内存使用——变得越来越重要。值得注意的是,本文中提出的深层架构设计也考虑到了这个因素,而不是一味追求精确的数字。对于大多数的实验,这些模型的设计是为了在推理时保持15亿次乘法的计算预算,因此它们最终不会成为纯粹的学术好奇心,而是可以以合理的成本投入到现实世界中,即使是在大型数据集上。

       在本文中,我们将重点研究一种高效的用于计算机视觉的深度神经网络架构,其代号为Inception,它的名字来源于Lin等人网络论文中的network,以及著名的““we need to go deeper”的网络梗。在我们的例子中,这个词“deep”有两种不同的含义:首先,我们以“Inception module”的形式引入了一个新的组织层次,直接的意义是增加了网络深度。一般来说,我们可以将Inception model视为逻辑高潮,同时从Arora等人的理论工作中获得启发和指导。该架构的优势在ILSVRC 2014分类和检测挑战中得到了实验验证,在这方面它明显优于当前的技术水平。

注:总结了近几年深度学习的发展,浏览一遍即可

二、相关的工作

        从LeNet-5开始,CNN有一个典型的标准结构——堆叠卷积层(可能会加入对比度归一化和池化层),紧接着是一个或更多全连接层。这种设计的变体在图像分类文献中盛行,并且在MNIST和CIFAR等数据集中取得了迄今为止最好的结果。对于更大数据集,最近的趋势是增加网络层数和尺寸,同时用dropou方法去避免过拟合。

注:dropout方法,简单理解为在每一次训练模型中,随机抹除一些节点,以达到防止过拟合的作用

        尽管人们担心最大池化层会导致准确空间信息的丢失,

注:如2*2最大池化层,取2*2区域中最大值而忽略其他值,可能会导致信息丢失

        但与[9]相同的卷积网络架构也被成功地应用于定位[9,14]、目标检测[6,14,18,5]和人体姿态评估[19]。受灵长类动物视觉皮层神经科学模型的启发,Serre等人[15]使用一系列不同大小的固定Gabor滤波器来处理多个尺度,类似于Inception module模型。然而,与[15]的固定的2层深度模型相反,Inception模型中的所有过滤器都是学习的。此外,Inception层被重复了很多次,在GoogLeNet model的情况下,生成了一个22层的深度模型。

注:这一段举例了大量网络模型,看不懂可以先忽略往下看

        Network-in-Network是Lin等人[12]为了提高神经网络的表征能力而提出的一种方法。当应用于卷积层时,该方法可以被视为额外的1×1卷积层,然后通常是ReLU层。这使得它可以很容易地集成到当前的CNN管道中。我们在架构中大量使用这种方法。然而,在我们的设置中,1×1卷积有双重目的:最关键的是用作降维模块,以消除计算瓶颈,否则会限制我们的网络大小。这不仅可以增加深度,还可以增加网络的宽度,而不会造成显著的性能损失。

注:1*1卷积层最早在Network In Network提出,这里主要用于改变维度以减少计算量,1*1卷积层在CNN中经常使用,

        目前主要的目标检测方法是由Girshick等人提出的R-CNN。R-CNN将整个检测问题分解为两个子问题:首先以类别不确定的方式利用低级线索(如颜色和超像素一致性)来识别潜在的对象建议,然后使用CNN分类器来识别这些位置的对象类别。这种两阶段方法利用了具有低级线索的边界盒分割的准确性,以及最先进的cnn的强大分类能力。我们在我们的检测提交中采用了类似的管道,但在这两个阶段都探索了增强功能,例如多盒[5]预测用于更高的对象边界盒召回率,以及集成方法用于更好地对边界盒提案进行分类。

注:这里对R-CNN进行了简介,然后表明本文在目标检测环节对R-CNN的优化。如果对目标识别不太了解可以先忽略往下看

R-CNN通常由根据图片的颜色等特征,在图片上生成一系列可能存在目标的候选区域,然后在对这些区域进行分类,达到目标识别的效果。虽然目前目标检测很多都是使用YOLO算法,但R-CNN也是非常经典的目标识别算法

三、动机和高水平考虑

注:稀疏矩阵定义:在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵。

这一节分析了稀疏矩阵和密集矩阵在计算机中各自的特点以及一些相关理论,目前(2024),稀疏矩阵算法已经得到了很大的提升,但这篇文章是在2014年发表的,从本节来看,似乎当时使用的大多都是密集矩阵,所以作者提出了用稀疏性来进行优化的理论:

        如何在现有硬件进行密集矩阵的条件下,利用稀疏性去改进模型结构?

这一节涉及到了较多的线性代数知识和计算机运算的知识,本人水平有限,不做分析(看不懂部分跳过,不影响对文章整体理解,也不影响你敲代码)

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

        更大的规模通常意味着更多的参数,这使得大的网络更容易过拟合,特别是当训练集中已标记的样本数量有限时。这可能成为一个主要的瓶颈,因为创建高质量的训练集可能麻烦且昂贵。特别是如果需要专业的人类评分员来区分。

        均匀增加网络大小的另一个缺点是计算资源的使用急剧增加。例如,在深度视觉网络中,如果两个卷积层连接在一起,其过滤器数量的任何均匀增加都会导致计算量的二次增长。如果增加的容量使用效率低下(例如,如果大多数权重最终接近于零),这样就浪费了大量的计算。由于在实践中计算预算总是有限的,因此有效地分配计算资源比不加区分地增加大小更可取,即使主要目标是提高结果的质量。

        解决这两个问题的根本方法是用稀疏连接的架构代替完全连接架构,即使在卷积内部也是如此。除了模拟生物系统外,由于Arora等人的开创性工作,这也将具有更坚实的理论基础的优势[2]。他们的主要结果表明,如果数据集的概率分布可以用一个大的、非常稀疏的深度神经网络来表示,那么通过分析最后一层的激活和具有高度相关的输出的聚类神经元的相关统计,可以逐层构建最优网络拓扑。尽管严格的数学证明需要非常严格的条件,但这一说法与著名的Hebbian原理(神经元一起放电,连接在一起)相呼应的事实表明,即使在不那么严格的条件下,实践中其基本思想也是适用的。

注:这一段翻译起来有点别扭,大致是说,如果可以用一个大的稀疏的神经网络来表示数据集的分布概率,那么你可以通过分析输出相关来一层层的建立最优的网络。

        缺点是,当涉及到非均匀稀疏数据结构的数值计算时,当今的计算基础设施效率非常低。即使算术运算的数量减少了100倍,查找和缓存丢失的开销仍然占主导地位,因此切换到稀疏矩阵是不值得的。通过使用稳步改进的、高度调整的数字库,差距进一步扩大,这些库允许极快的密集矩阵乘法,利用挖掘底层CPU或GPU硬件的微小细节[16,9]。此外,非均匀稀疏模型需要更复杂的工程和计算基础设施。目前大多数面向视觉的机器学习系统仅通过卷积来利用空间域的稀疏性。然而,卷积是作为与前一层补丁(patchs)的密集连接的集合来实现的。

注:在CNN中,patchs可以理解为图像块,因为一次卷积操作一般只处理一小块图像,每次卷积结果是一个patchs和卷积核进行卷积得到的,所以这里说卷积是作为patchs的密集连接集合

传统上,卷积神经网络在特征维度上使用随机和稀疏连接表,从[11]开始,为了打破对称性和改善学习,趋势又回到了全连接[9],为了更好地优化并行计算。结构的均匀性和大量的过滤器和更大的批量大小允许利用高效的密集计算。

        这就提出了一个问题:如理论所建议的那样,一个利用额外稀疏性的架构,即使是在过滤器级别,但利用我们当前的硬件,利用密集矩阵的计算。关于稀疏矩阵计算的大量文献(例如[3])表明,将稀疏矩阵聚类为相对密集的子矩阵往往会为稀疏矩阵乘法提供最先进的实际性能。在不久的将来,类似的方法将被用于非统一深度学习架构的自动化构建,这似乎并不牵强。

        Inception架构最初是作为第一作者的一个案例研究,用于评估一个复杂的网络拓扑构建算法的假设输出,该算法试图近似[2]中所隐含的视觉网络的稀疏结构,并通过密集的、现成的组件覆盖假设的结果。尽管这是一项高度推测性的工作,但在对拓扑的精确选择进行两次迭代之后,我们已经可以看到基于[12]的参考体系结构的适度收益。在进一步调整学习率、超参数和改进的训练方法后,我们确定,作为[6]和[5]的基础网络,所得到的Inception架构在定位和对象检测的背景下特别有用。有趣的是,虽然大多数最初的架构选择都受到了彻底的质疑和测试,但它们至少是局部最优的

        但是,我们必须谨慎:尽管所提出的架构已经成为计算机视觉的成功,但其质量是否可以归因于它的指导原则仍然值得怀疑。证实这一点需要更彻底的分析和验证:例如,如果存在一个基于下文所描述的原则的自动化工具,它可能为视觉网络找到类似的,但更好的拓扑。最令人信服的证据是,如果自动化系统使用相同的算法创建网络拓扑,在其他领域产生类似的收益,但具有非常不同的全局架构。至少,先启架构的最初成功为在这个方向上激动人心的未来工作提供了坚定的动力

注:最后三段大致是说,作者提出了一个较为稀疏的架构——Inception架构,但是对他的原理存疑,提出可能需要更多证据,但这不影响这一架构的发展

四、架构细节

注:该节的理论部分或许难以理解,可以先掌握具体的网络结构

        Inception架构的主要思想是基于找出卷积视觉网络中,如何用密集矩阵去近似并代替最优的局部稀疏矩阵。注意,假设平移不变性意味着我们的网络将由卷积构建块构建。

注:平移不变性,在CNN中,所要识别的目标经过平移,仍然能够识别出它的特征

我们所需要的只是找到最优的局部结构,并在空间上重复它。Arora等[2]提出了一种逐层构建的方法,分析最后一层的相关统计数据,并将其聚类成高相关性的单元组。这些簇形成了下一层的单元,并与前一层的单元相连。我们假设前一层的每个单元对应于输入图像的某个区域,这些单元被分组到滤波器组中。在较低的层(靠近输入的层)中,相关单元将集中在局部区域。这意味着,我们最终会得到很多簇集中在一个区域,它们可以在下一层被一层1×1卷积覆盖,如[12]所示。然而,我们也可以预期,在更大的斑块上,可以被卷积覆盖的空间上分散的簇的数量会更少,在越来越大的区域上,斑块的数量会越来越少。

注:这段意思大概是,在输入图片上,一个3*3的区域被3*3的卷积核卷积(默认无padding等),输出会变成1*1的区域,这样一个很大的区域经过几次卷积所输出的尺寸就会变得很小。这样存在一个问题:很多特征就会集中在一个小区域。作者提出用多个尺寸的卷积核来解决这一问题

为了避免补丁问题,Inception架构的当前版本被限制为过滤器大小1×1, 3×3和5×5,然而这个决定更多的是基于方便而不是必要性。这也意味着建议的体系结构是所有这些层的组合,它们的输出过滤器组连接成一个输出向量,形成下一阶段的输入。此外,由于池化操作对于当前最先进的卷积网络的成功至关重要,因此建议在每个这样的阶段添加替代并行池化路径也应该具有额外的有益效果(参见Figure 2(a))。

注:我们知道,不同大小的卷积核所提取的特征是不一样的,目标特征越大,那么使用较大的卷积核或许会更合适。

因此,对于输入,作者采用了3个大小的不同的卷积层和一个池化层来提取大小不同的特征,再把这些特征合并输出,这样对于大小不同的特征都能进行分析

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

        上述模块的一个大问题,在具有大量滤波器的卷积层之上, 即使是少量的5*5个卷积也可能非常昂贵。一旦将池化单元添加到混合单元中,这个问题就会变得更加明显:它们的输出过滤器的数量等于上一阶段的过滤器的数量。池化层的输出与卷积层 的输出的合并将不可避免地导致一个各阶段间输出数量的增加。即使这种体系结构可能覆盖最优稀疏结构,但它也会做到效率很低 ,在几个阶段内导致计算爆炸。

注:指出问题:5*5卷积核计算量太多了,即使堆叠了少量Inception module,计算量也会爆炸

        这就引出了第二个设计思想 :在计算需求增加过多的地方明智地应用降维和投影。这是基于嵌入式的成功,即使是低维的嵌入式也可能包含大量关于一个相对较大的图像补丁的信息。然而,嵌入以密集的压缩形式表示信息,压缩信息更难建模。我们希望在大多数地方保持我们的表示是稀疏的(正如[2]的条件所要求的那样),并且只在需要大量聚集信号时才压缩信号。也就是说,1×1卷积被用来在昂贵的3×3和5×5卷积之前计算约简。除了用作还原剂外,它们还包括使用整流线性活化,使它们具有双重用途。最终结果参见Figure 2(b)所示。

注:这里提出了用1*1卷积降维降低运算复杂度的问题,如输入尺寸为128*128*32,先用1*1*8的卷积核去卷积,生成128*128*8输出,再去和5*5卷积核卷积,这比直接用128*128*32和5*5卷积核卷积要少很大一部分计算量。

        一般来说,Inception网络是由上述类型的模块相互堆叠而成的网络,偶尔会有跨幅为2的最大池化层,以使网格的分辨率减半。出于技术原因(训练期间的内存效率),只在较高层开始使用Inception模块,而在较低层保持传统的卷积方式似乎是有益的。这并不是绝对必要的,只是反映了我们目前实施中的一些基础设施效率低下。

        这种体系结构的一个主要优点是,它允许在每个阶段显著增加单元的数量,而不会导致计算复杂性失控。降维的普遍使用允许将上一级的大量输入滤波器屏蔽到下一层,首先降低它们的维度,然后用大的贴片尺寸对它们进行卷积。这种设计的另一个实际有用的方面是,它符合直觉,即视觉信息应该在不同的尺度上进行处理,然后进行聚合,以便下一阶段可以同时从不同的尺度上抽象特征。

        计算资源的改进使用允许增加每个阶段的宽度和阶段的数量,而不会遇到计算困难。利用初始架构的另一种方法是创建稍微逊色但计算成本更低的版本。我们发现,所有包含的旋钮和杠杆都允许计算资源的可控平衡,这可能导致网络比具有非inception架构的类似性能的网络快2 - 3倍,然而这在这一点上需要仔细的手动设计。

五、GoogLeNet

        在ILSVRC14比赛中,我们选择了GoogLeNet作为我们的团队名称。这个名字是为了向Yann lecun开创的LeNet 5网络致敬[10]。我们还使用GoogLeNet来指代在竞赛中使用的初始架构的特定化身。我们还使用了更深更广的盗梦空间网络,其质量略差,但将其添加到整体中似乎略微改善了结果。我们省略了该网络的细节,因为我们的实验表明,确切的体系结构参数的影响相对较小。这里,表1描述了最成功的特定实例(名为GoogLeNet),用于演示。在我们的集合中,7个模型中的6个使用了完全相同的拓扑(用不同的采样方法训练)。

        

        

        所有的卷积,包括那些在Inception模块内的,都使用ReLU激活。在我们的网络中,感受野的大小为224×224,取RGB颜色通道,取平均减法。“#3×3 reduce”和“#5×5 reduce”表示在3×3和5×5卷积之前使用的约简层中1×1过滤器的数量。在池投影列中内置最大池化层之后,可以看到投影层中1×1过滤器的数量。所有这些还原/投影层也使用ReLU激活。

        该网络的设计考虑了计算效率和实用性,因此推理可以在单个设备上运行,甚至包括那些计算资源有限的设备,特别是低内存占用的设备。当只计算带参数的层时,网络深度为22层(如果我们也计算池化层,则为27层)。用于构建网络的总层数(独立的构建块)约为100层。然而,这个数字取决于所使用的机器学习基础设施系统。在分类器之前使用平均池化是基于[12]的,尽管我们的实现不同于我们使用了额外的线性层。这使得适应和微调我们的网络为其他标签集很容易,但它主要是方便,我们不期望它有很大的影响。研究发现,从完全连接的层到平均池化将top-1的准确率提高了约0.6%,然而,即使在删除了完全连接的层之后,dropout的使用仍然是必不可少的。

        由于网络的深度相对较大,因此以有效的方式将梯度传播回所有层的能力是一个值得关注的问题。一个有趣的观点是,这一任务在相对较浅的网络的强大表现表明, 由网络中间的各层所产生的特征应该是非常有区别的。通过添加连接到这些中间层的辅助分类器,我们将期望在分类器的较低阶段鼓励区分,增加传播回的梯度信号,并提供额外的正则化。这些分类器采用了 较小的卷积网络的形式,并将它们放在初始空间(4a)和(4d)模块的输出之上。在训练过程中, 它们的损失以折扣权值加到网络的总损失中 (辅助分类器的损失加权为0.3) 。在推理时,这些辅助网络被丢弃。

注:inference time,这里翻译成推理,类似在测试集上进行测试

该节详细描述了GoogLeNet的结构,表格中给出了构建该网络的各个层

最后一段意思是说。因为网络很深,如何进行高效的反向梯度传播值得关注,作者在中间层(4a和4d)分别计算了损失函数,并加权到总的损失函数中

        包括辅助分类器在内的侧面额外网络的确切结构如下:

        具有5*5个过滤器大小和步幅3的平均池化层,导致(4a)输出4*4*512, (4d)阶段输出4*4*528

        一个128个滤波器的1*1的卷积层用于降维和ReLU激活。

        一个具有1024个单元和ReLU线性激活的全连接层。

        一个有70%的dropout率的dropout层。

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

从百度上偷的图:该网络的结构细节

注:到这里,该网络的大体理论和结构已经叙述完毕,之后是作者训练网络的过程和成果,可以不去做了解。


六、训练过程

        我们的网络使用DistBelief[4]分布式机器学习系统进行训练,该系统使用了适量的模型和数据并行性。虽然我们只使用了基于CPU的实现,但粗略估计表明,GoogLeNet网络可以在一周内使用少量高端gpu进行收敛训练,主要限制是内存使用。我们的训练使用0.9动量的异步随机梯度下降[17],固定学习率计划(每8个epoch学习率降低4%)。使用Polyak平均[13]来创建推理时使用的最终模型。
        在比赛前的几个月里,我们的图像采样方法发生了很大的变化,并且已经在其他选项上训练了收敛模型,有时还与改变的超参数(如辍学率和学习率)结合在一起,因此很难给出最有效的训练这些网络的单一方法的明确指导。更复杂的是,受[8]的启发,一些模型主要在较小的相对作物上进行训练,另一些则在较大的相对作物上进行训练。尽管如此,在比赛结束后,一个被证明非常有效的处方包括对图像的各种大小的斑块进行采样,这些斑块的大小均匀分布在图像面积的8%到100%之间,其宽高比在3/4到4/3之间随机选择。此外,我们发现Andrew Howard[8]的光度失真在一定程度上有助于对抗过拟合。此外,我们开始使用随机插值方法(双线性,面积,最近邻和三次等概率)来调整大小相对较晚,并与其他超参数变化一起使用,因此我们不能确定它们的使用是否对最终结果产生积极影响        

七、ILSVRC 2014分类挑战赛设置和结果

   这一段懒得翻译了,大致是说作者训练了好几个模型,然后再结合成一个模型;同时对于输入图片做了缩放,旋转等处理,获得了第一名

八、ILSVRC 2014定位挑战赛设置和结果

        同上,作者获得了第一名的好成绩

九、总结

        我们的结果似乎产生了一个有力的证据,即通过现成的密集构建块来近似预期的最优稀疏结构是改进计算机视觉神经网络的可行方法。这种方法的主要优点是,与较浅和较小的网络相比, 在计算需求的适度增加下显著提高质量。还要注意,我们的检测工作是有竞争力的,尽管既没有利用上下文,也没有执行边界盒回归,这一事实进一步证明了Inception架构的强度。尽管我们期望通过更昂贵的具有相似深度和宽度的网络可以获得类似质量的结果,但我们的方法提供了确凿的证据,证明迁移到更稀疏的架构通常是可行和有用的想法。这表明,在[2]的基础上,未来有希望以自动化的方式创建稀疏和更精细的结构。

十、写在最后

        Inception架构主要提出了用稀疏架构代替密集架构;网络的结构创新主要有两点。使用多个尺寸卷积核进行卷积;使用1*1卷积核进行维度转换。

        我在读这篇论文时,发现网上的翻译并不详细,于是我自己写了这篇翻译,尽可能告诉读者哪些是重点,哪些可以忽略,相关Python代码复现网上已经有一大堆了,我之后可能会写,也可能不会。这也是我第一次写博客,有问题希望指出

  • 19
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值