《Going deeper with Convolutions》论文阅读

2015 CVPR

Abstract

  本文提出一种深度学习网络结构——Inception。在 ILSVRC-2014 中分类和检测都取得了很好的效果。这个结构的最大特点就是改善了网络内部计算资源的利用率。在保证计算量没有很大帮增长的前提下,我们增加了深度和宽度。为了能保证最后的实验结果,网络采用了 Hebbian principle 和多尺寸处理。我们提交的 GoogleNet 是一个 22 层的深度网络。

1. Introduction

  我们的网络比AlexNet网络少了12倍的参数,但准确更高。我们在目标检测方面可以取得这个成绩,一方面,我们不仅仅是简单的去构建越来越深的网络,而是考虑深层结构以及传统计算机视觉方法之间的相互协同作用,另一方面就是移动嵌入式端计算力的提升。
  在本文中,我们主要介绍一种有效的深度神经网络结构——Inception。它的名字源于2014年的一篇论文《Network in Network》以及一个很有名的网络句子“we need to go deeper”。本文中,“deep”有两层含义:

   1. 提出一种新的结构方式——”Inception module”

   2. 指网络的深度。

  从LeNet-5开始,神经网络就有了一个典型的结构,一堆卷积层后面跟着一个或者多个全连接层。基于这个基本结构的网络设计,在很多数据集上都获得了很好的效果。对于一些大的数据集,目前的趋势是通过增加层数和各个层的尺寸,并且通过dropout来解决过拟合问题。

  本文灵感来源神经科学中对灵长类动物的视觉前叶(primate visual cortex)的研究,使用一些列不同尺寸的固定Gabor滤波器来解决多尺寸问题。我们使用了相似的方法,不过相较于神经科学实验中的2层模型滤波器都是固定的,我们Inception结构中的滤波器都是可以学习的(可变的),所以我们经过多次重复,22层的GoogLeNet就出来了。

  Network-in-Network中为了增加模型的表现能力,在他们的模型中,额外增加了 1x1 卷积层的数量,同时也增加了他们网络的深度。我们也着重使用了这种方法,但是在我们的设定中, 1x1 卷积层有双重目的:

   1. 主要是用来减少计算量,消除计算瓶颈

   2.可以在不太牺牲准确率的情况下增加网络的宽度

  最后,目前目标检测领域 state-of-the-art方法是 R-CNN,R-CNN是将检测问题分解为 2 个子问题,首先利用一些低级特征,例如,颜色和纹理来产生目标检测的预选框,然后再用分类器去分类,我们也使用了相同的方法,只是在两个步骤上的方法都进行了强化。

3. Motivation and High Level Considerations

  改善深度网络最直接的方法就是增加网络的尺寸。这其中包含了增加深度(网络的层数),和网络的宽度(每一层单元的个数)。这是最简单和安全的方法,尤其是在有大量带有标签的训练图片时,但是这种简单的方法主要有 2 个问题:

  1. 更大尺寸的网络就会有更多的计算量,需要依赖大量有标签的数据(否则容易过拟合),但获取大量带标签的数据很耗时耗力。

  2. 增加神经网络的尺寸会大大增加计算资源。

  要解决上面两个问题的方法就是采用稀疏结构,不管是最后的全连接层还是在卷积层内部。但是遗憾的是,按照现在的计算能力,还不足以很有效的处理非均匀的稀疏数据结构。Inception 结构则是一个尝试,在保证计算能力可以处理的情况下,用现有的模块,可以达到近似于稀疏结构的效果。

4. Architecture Details

  Inception 模块主要的想法是考虑如何用已有的密度单元来估计和表示最优的局部稀疏结构。我们要做的就是找到最优的局部结构,然后重复他。 Arora 等人在文献中提到,一个逐层搭建的结构,需要分析其最后一层的统计相关性,并将高度相关的神经元聚类为簇。这些簇组成了下一层的单元,并与前一层的各个单元连接。我们假定前面一层的每个单元都关于输入图像的一部分,并将这些单元分组分配给滤波器,在较低的层次(更靠近输入端),相关单元聚焦于局部区域。这意味着我们能够得到大量聚焦在同一区域的簇,它们会被下一层的 1x1 卷积捕捉到。

  为了避免区域归一化的问题,Inception 限制了滤波器的尺寸在 1x1,3x3,5x5;这个设定是为了方便而不是必要。这意味着合理的结构是将层次的输出滤波器 bank 层一个输出向量,作为下一层的输入,另外池化对于现有水平的卷积网络很重要的,建议最好在每一步后增加一条并行池化通路,这样会有额外的好处。

  Inception单元是一层一层往上堆叠的,所以他们的输出关联统计性会发生变化:更高层次的抽象特征会由更高层次捕获,而它们的空间聚集度就会随着降低,因为随着层次的升高,3x3 和 5x5 的卷积的比例也会随之增长。

  这个模型的一个问题是在朴素模型(有多个不同的版本,这是其中之一)中,即使只有中等数量的 5x5 卷积也会有很大的计算开支:这个问题将池化层加进来以后会更严重,他们的输出过滤波器个数与前面过程的滤波器的个数想同。(注:因为结构是用 concat 层需要相同的分辨率大小, ele_wise 层需要相同的通道数,这就需要他们每一层的输出个数相同,以最后输出向量的长度就会以 2 倍的速度增长)。这就提出了第二种设想:需要降维的地方可能是计算量可能剧烈增加的地方。相对于一个大型的图像区域块,即使低维的 embedding 也可能包含大量的信息,然后 embedding 会把信息以一种致密的,压缩的方式表示出来,而压缩的信息是很难被建模的。我们还是想大部分位置保持稀疏性,而只在信号需要被聚合的时候压缩它们。也就是说, 1x1 卷积被用在需要大量运算的 3x3 和 5x5 卷积之前来降维,外加 ReLU 。

  由于技术性的原因,好像低层仍然用传统的卷积,在高层用 Inception 结构才有用。我们这个结构最有用的一点就是可以在不巨幅提升计算的情况下(因为降维的大量使用),增加网络的单元的数量(宽度)和网络的深度,并且可以使下一级同时处理不同尺寸的特征。实验证明,经过人为谨慎的设计下,相同深度的卷积网络,使用Inception比不使用的网络快 3-10 倍 。

5. GoogLeNet


你可能感兴趣的:(论文)