Going deeper with Convolutions
摘要
提出了一个代号为 I n c e p t i o n Inception Inception的卷积神经网络结构,此结构在 I L S R C 2014 ILSRC2014 ILSRC2014分类和检测中达到了先进水平。
这种结构最主要的特点是提升了网络中计算资源中的利用率。通过精心的设计,作者在保持计算量不变的情况下增加了网络的深度和宽度。
结构的决策基于Hebbian原则和多比例处理的直觉。
Hebb学习规则是Donald Hebb在1949年提出的一种学习规则,用来描述神经元的行为是如何影响神经元之间的连接的,通俗的说,就是如果相链接的两个神经元同时被激活,显然我们可以认为这两个神经元之间的关系应该比较近,因此将这两个神经元之间连接的权值增加,而一个被激活一个被抑制,显然两者间的权值应该减小。
此外,Hebb还有一句非常注明的话,我在很多资料中都见到这句话的引用:“neurons that fire together, wire together”,这句话就是对权值如何更新的一个解释,同被激活者连接的权重理应增加。****
作者在 I L S V R C 14 ILSVRC14 ILSVRC14中提交的一个代表称为 G o o g l e N e t GoogleNet GoogleNet,具有 22 22 22层。
1. 介绍
一个振奋人心的消息是,目标检测和分类的进步不单单是由于硬件设施的强大,数据集规模增大,模型增大的结果,而主要是众多新的创意造就的结果。
作者在 I L S V R C 2014 ILSVRC2014 ILSVRC2014提出的 G o o g l e N e t GoogleNet GoogleNet使用的参数比两年前夺冠的网络结构少了 12 12 12倍,且准确度大幅提升。
在目标检测方面,最大的提升不是由于更大更深的网络的初步应用,而是来自深度结构和经典计算机视觉的协同,如 R C N N RCNN RCNN算法。
考虑到了算法在算力和内存占用方面,不实用完全固定的数值。
I n c e p t i o n Inception Inception的名字起源于 N e t w o r k i n N e t w o r k Network in Network NetworkinNetwork与网络行为“ W e n e e d t o g o d e e p e r We\space need\space to\space go\space deeper We need to go deeper”$.
作者称: d e e p deep deep有两种含义:
- 一是引入了一种新的组织等级——“ I n c e p t i o n m o d u l e Inception \space module Inception module“
- 二是直接意义上的网络深度
一般来将,人们可以将“ I n c e p t i o n m o d u l e Inception \space module Inception module”看成是“ N e t w o r k i n N e t w o r k Network \space in \space Network Network in Network”的逻辑顶点.此网络结构的优势已经在 I L S V R C 2014 ILSVRC\space2014 ILSVRC 2014分类和检测挑战上验证过,其表现超越了时代前沿的技术。
2. 相关工作
从 L e N e t − 5 LeNet-5 LeNet−5开始,卷积神经网络就有了标准结构——堆叠若干卷积层(随后对比度归一化和最大池化),然后 F C FC FC层,这种基础设计的变体在图像识别中盛行,并在 M I N I S T MINIST MINIST, C I F A R − 10 CIFAR-10 CIFAR−10和 I m a g e N e t ImageNet ImageNet等数据集上产生了产生了最好的结果,对于大型的数据集如 I m a g e N e t ImageNet ImageNet,来说,近期的趋势就是增加深度和层的大小,并且使用 D r o p o u t Dropout Dropout来控制过拟合。
尽管担心最大池化层会导致精确的空间信息的丢失,像[ Imagenet classifification with deep convolutional neural networks.]同样的卷积网络结构成功用于定位、目标检测和人体姿态估计。
受灵长类动物视觉皮层的神经科学模型启发,【15】用一系列固定的,不同尺寸的 G a b o r Gabor Gabor滤波器来解决多个比例。作者采用了相同的政策,但与【15】中使用两层固定的深度模型相反, I n c e p t i o n m o d u l e Inception \space module Inception module中的所有卷积核都是学习得来的。一个 I n c e p t i o n m o d u l e Inception \space module Inception module重复多次,就形成了 22 22 22层的 G o o g l e N e t GoogleNet GoogleNet。
N e t w o r k i n N e t w o r k Network\space in\space Network Network in Network是一种增加神经网络表征能力的方法,在其模型中,加入了 1 × 1 1\times1 1×1卷积层来增加深度,作者在 G o o g l e N e t GoogleNet GoogleNet中也多次使用此方法。但是作者使用 1 × 1 1\times1 1×1卷积核是出于两个目的:最重要的目的是降维,消除计算瓶颈。否则会限制网络的尺寸,这样处理可以方便增加网络深度和宽度,且不用施加过重的惩罚。
目前用于目标检测最先进的方法是 R e g i o n s w i t h C o n v o l u t i o n a l N e u r a l N e t w o r k s ( R − C N N ) Regions\space with\space Convolutional\space Neural \space Networks(R-CNN) Regions with Convolutional Neural Networks(R−CNN),它将整个目标检测问题分解为两个子问题:利用低级线索(如颜色和纹理)来产生目标定位的建议框,但不知道其种类,然后用 C N N CNN CNN分类器来确定这些建议框的物体种类。这样一种二阶段方法利用了低级线索边界框分割的准确率以及先进的 C N N CNN CNN网络的能力。
作者在检测方案中采用了相似的流程,但是两个步骤中都进行了改进,比如为了更高的目标边界框召回率,使用多框预测,以及为了更好的分类边界建议框使用的集成方法。
3. 动机和高等级的考虑
提升深度神经网络的最直接方法是提升网络的尺寸,包括增加其深度和宽度,分别对应增加网络的层数和每层的单元数。这种方法是训练高质量模型简单且安全的方法,尤其是当具有大量带标签的训练数据可用的时候。但通常有两个主要的缺点:
- 模型尺寸越大大代表着参数越多,会使得模型加大过拟合的倾向,特别是训练集中带标签的样本有限。由于标识过的数据集很难获得,所以称为了主要的瓶颈。经常需要专家去辨别多种细粒度的种类,如 图 1 图1 图1。
- 计算资源使用量的急剧增加。连接一起的两个层,卷积核如果一起增加会导致计算量增加四次方。如果正价的容量没有被有效利用(最终收敛至 0 0 0),那么计算资源就会被大大浪费。
解决上述两个问题基础的方法就是引入稀疏性,并将全连接层换成稀疏的,即便他们处于卷积层当中。
有研究结果表明,如果数据集的概率分布可以用一个大的、非常稀疏的深层神经网络来表示,那么可以通过分析前一层激活的相关统计信息和对输出高度相关的神经元进行聚类来逐层构建最佳网络拓扑。
这一结论与众所周知的** H e b b Hebb Hebb法则**产生共鸣——一起放电的神经元连接在一起,表明了即使在非严格限制的条件下,这个潜在的思想依然适用。
目前关于非统一稀疏数据结构的计算设施还非常低效,及时算术运算的数量减少 100 100 100倍,查找和缓存未命中的开销。中间一度有研究使用随机和稀疏连接表,以打破对称性改进学习,但是为了优化并行计算,这一趋势又变回了完全连接。
当前最先进的计算机视觉体系结构具有统一的结构。大量的过滤器和更大的 b a t c h batch batch允许高效使用密集计算。
随之有问题产生:是否有希望进入下一个中间步骤:一个能够利用滤波器级稀疏性的结构,正如理论所表明的那样,通过利用密集矩阵的计算来利用我们当前的硬件。
大量关于稀疏矩阵计算的研究表明将稀疏矩阵聚簇成相对密集的字矩阵对于稀疏矩阵乘法有颇具竞争力的趋势。在不久的将来相似的方法被用于非统一的深度学习框架的自动构建不是那么遥不可及。
I n c e p t i o n Inception Inception结构被证明在定位和目标检测的场景下尤其有用,作为【6】和【5】的基础网络,
4. 结构细节
总结:
- 提出用三种尺寸的卷积核进行卷积,然后再将结果连接在一起,但是计算效率太低
I n c e p t i o n Inception Inception结构的主要思想是考虑如何通过轻松易得的密集矩阵来近似一个卷积视觉网络最优的局部稀疏结构。我们所要做的就是找到最优的局部结构并在空间上重复它。
【2】提出了一个逐层的结构,一层应该分析最后一层的统计相关性,并将他们中相关性高的聚簇为组。这些簇形成了下一层的单元并与上一层的单元相连接。
作者假设上一层的每个单元对应着输入图像中的某些区域,并且这些单元被分组合为滤波器组,在低等级层(靠近输入)中,相关单元集中在局部区域。因此,我们会得到许多集中在单中区域的聚簇,他们能够被下一个 1 × 1 1\times1 1×1的卷积层所覆盖。少量的分散的很远的聚簇们可以用过更大的卷积块来覆盖,并且随着区域越来越大,大块卷积的数量也会越来越少。
为了避免块堆砌的问题,目前的 I n c e p t i o n Inception Inception结构的化身将卷积核的尺寸限制为 1 × 1 , 3 × 3 和 5 × 5 1\times1,3\times3和5\times5 1×1,3×3和5×5,这是处于方便考虑而非必要。这也意味着所提出的结构是这三种卷积层输出的组合,连接成一个单个的输出向量,形成了下一阶段的输入。另外还要这个阶段加上一个并行的池化层,会使得效果更好。如 图 2 ( a ) 图2(a) 图2(a)所示。
由于这些 I n c e p t i o n Inception Inception模块堆叠在彼此的顶部,所以他们输出的统计相关性一定会改变:当更高级抽象的特征被更高层所捕捉时,预计他们的空间集中度会下降。这表示 3 × 3 3\times3 3×3和 5 × 5 5\times5 5×5的卷积随着层等级升高应当增加。
上述模块的一个巨大问题,最起码在初级版本中的一个巨大问题时:在具有大量卷积核的卷积层上,即使只有少量的 5 × 5 5\times5 5×5卷积,计算开销也可能非常大,一旦将池化单元添加进来,这个问题将更加明显:输出的卷积核的数量等于上一阶段卷积核的数量。将池化层的输出和卷积层的输出进行合并会不可避免地导致输出的数量逐层增大。虽然这种结构也许覆盖了最优的稀疏结构,但是效率太低了,导致在几个阶段内就会产生计算爆炸。
于是 I n c e p t i o n Inception Inception结构的第二个思想横空出世:哪里计算量要求高,降维哪里。
此思想基于嵌入的成功:即便是低维度的嵌入也能包含关于相对大的图像块的信息。但是用密集的、压缩过的形式来嵌入表示信息处理起来很难。在多数地方,还是保持稀疏表示为妙,仅当信号需要聚集时才对其进行压缩。
也就是说, 1 × 1 卷积用于在 3 × 3 和 5 × 5 1\times1卷积用于在3\times3和5\times5 1×1卷积用于在3×3和5×5卷积之前进行降维。除了用于降维,他们还用于修正线性激活函数。最终结构如 图 2 ( b ) 图2(b) 图2(b)所描述
I n c e p t i o n Inception Inception网络是由许多上述类型的模块彼此堆叠在一起组成的。
此结构的一个有用的方面是它可以加大的增加每个阶段单元的食量,而不用担心随后阶段计算复杂度的爆炸性增长。这是因为在每个开销大的计算前都会使用降维。
此设计遵循了实际的经验:视觉信息应在不同的比例下被处理,然后在下个阶段同时从不同比例抽象特征。
计算资源使用的提升,使得可以增加每个阶段宽度以及阶段的数量,而不用担心计算困难。
人们可以利用Inception架构来创建稍差但计算成本较低的版本
作者通过 I n c e p t i o n Inception Inception模块设计出了与没有 I n c e p t i o n Inception Inception模块性能相同,但速度快3-10倍的网络,但是需要惊喜的人工设计。
5. GoogleNet
作者用 I n c e p t i o n Inception Inception模块组成的 G o o g l e N e t GoogleNet GoogleNet参加了 I L S V R C 2014 ILSVRC\space 2014 ILSVRC 2014, 表 1 表1 表1阐述了 I n c e p t i o n Inception Inception用于竞赛中的实例。作者集成中的7个网络中的6个用了这种网络。
包括 I n c e p t i o n Inception Inception模块中的所有卷积,都使用了 R e L U ReLU ReLU,网络中的感受野是 224 × 224 224\times224 224×224, 3 × 3 # 3\times3\# 3×3#reduce,和 5 × 5 # 5\times5\# 5×5#reduce代表降维用的 1 × 1 1\times 1 1×1卷积核的数量。
在分类器之前使用平均池化的做法是基于【12】,作者的实现中还添加了额外的线性层,能够让网络很容易的适用于其他标识过的数据集。
作者发现从 F C FC FC向平均池化层的传递提高了 0.6 0.6% 0.6的准确率。
因为网络相对深,所以作者担心网络中反向传播的能力。浅层网络强大的性能证明了网络中间层所产生的特征也是非常具有辨别力的,通过向这些中间层后增加辅助分类器,来获取这些细微的辨别力。这种方法用来解决梯度消失问题,也能提供正则化。
这些分类器,是小型卷积网络,放置在 I n c e p t i o n ( 4 a ) 和 ( 4 b ) Inception(4a)和(4b) Inception(4a)和(4b)模块上面。训练时,将他们的损失加权后加到总损失中,在测试中,这些辅助层会被丢弃。后来的实验证明这些辅助网络的作用非常小(0.5%),并且仅仅需要一个就能达到同样的作用。
结构如下:
整个网络的结构如下: