这是介绍Szegedy等人参加ILSVRC 2014比赛中提出的网络结构(GooLeNet)的论文,在这里GooLeNet使用了22层的神经网络,获得了当年比赛中Classification和Detection项目的第一名。下面来详细的介绍这篇论文的内容。
Abstract
作者在论文中提出了一种新的名为Inception的深度神经网络结构,并在ILSVRC 2014的classification和detection项目中取得了当时最好的结果。Inception结构主要是改进了网络内部中的计算资源的利用率,作者在固定计算资源的情况下对网络的深度和宽度都进行了增加。另外,Inception结构还遵循了Hebbian原则并增加了多尺度的处理。作者在比赛中使用的是基于这种结构的22层的深度神经网络GooLeNet并取得了非常好的结果。
1. Introduction
作者提到最近三年以来由于深度学习的发展,对于图像分类和目标检测都有了非常大的提升。同时,取得进展的原因不单单是靠更加强力的计算资源和更大的数据集和网络模型,更多的原因主要是人们对深度学习的新观念、新算法以及新的模型结构。作者提出,他们所用的网络结构用到的模型参数是AlexNet的 112 ,但是却极大的提升了识别结果。同时对于目标检测任务,当前的发展趋势也不是越来越大的网络结构,而是像R-CNN算法一样,使用深度学习和传统的计算机视觉算法结合的方式。
随着移动计算的兴起,高效率的算法非常重要,特别是他们需要的计算资源和内存占用的要求很高。因此本文中提出的模型结构设计的原则之一就是模型的高效性。
文章中提出的Inception结构是从Lin等人的Network in network中发展而来的,同时作者也提出,要想取得更好的识别结果,当前的深度神经网络结构需要变的更深。在这里“深”有两层含义:1)第一种是作者提出的Inception model是一种新的组织层次;2)直观意义上的深,即网络层数更多。
2. Related Work
这一部分作者主要讲解与本文相关的工作,主要分为以下几个部分:
(1)从LeNet开始,卷积神经网络的结构基本没有大的变化,都是由卷积层——激活函数——[option] 池化层——[option]归一化层——全连接层组成。这种结构非常的流行,同时在像MNIST和CIFAR等数据集中去了非常好的成果;而对于像ImageNet上,最近的趋势则是采用更多层的网络结构并使用Dropout防止过拟合进行处理和识别。
(2)受灵长类的神经结构的启发,Srre使用了一系列不同大小的Gabor滤波以获得不同尺度上的特征,与之相同,本文中的Inception结构也使用了类似的处理,与之不同的是,这里的卷积核都是通过学习得到的,并处理的很多次;
(3)Lin等人提出的Network-in-Network最初用于提高神经网络的表达能力。在Lin等人的实验中采用 1×1 大小的卷积核进行了处理,从而提升的网络的深度和学习能力。在作者的实验中同样采用了 1×1 的卷积核,作用有二:1)用于降低特征的维度,从而降低计算需求;2)在没有损失多少特征的基础上增加网络深度的同时增加了网络的宽度;
(4)讲RCNN的部分,我对于RCNN没有太多兴趣,这里简单介绍一下:RCNN把目标检测分为了两个阶段,第一个阶段利用低层次的特征,如颜色和纹理等产生目标的候选位置区域,第二个阶段则是利用CNN来对候选区域的物体进行分类,从而完成定位。作者他们也采用了类似的方法进行检测,并在一定程度上进行了改进(有兴趣请看原文)
3. Motivation and High Level Considerations
众所周知,提升深度神经网络识别能力的最直接的方式就是提升网络的大小,这不单单包括增加网络的深度,同时包括需要对网络的宽度进行扩展。这里网络的深度就是指网络的层数,而网络的宽度指的是每一层网络中单元的数量。这种做法简单有效,特别是当你有大量的带标签数据的情况下,然而这样做也带来了以下两个问题:
(1)网络的结构越来越大的意味着网络中的参数数量越来越多,如此多的参数会导致网络的学习能力过强,训练时非常容易过拟合,特别是当你的训练数据不够多的情况下(然而这正是绝大多数人面对的情况 = =||)。而给大量的数据进行分类是一种非常昂贵的做法,需要专业人士的大量人工操作,不现实。
(2)网络结构增大带来的另一个问题就是这个网络需要更多的计算资源。例如两个连续的卷积层中,随便增加一点点filter的数量就会极大的增大计算量,然而我们增加的filter还有很大的可能根本就是没用的,这就平白的浪费了很多的计算资源。在实际情况中,由于计算预算总是有限的,因此即使当主要目的是提高性能质量时,计算资源的有效分布也优于随机增加的大小。
解决上面问题的方式就是用稀疏的网络结构代替稠密的网络,这不单单是模仿生物中的网络结构,同时也具有坚实的理论基础。Arora等人提出使用一个非常大的,而且非常稀疏的深度网络表示事物,那么可以通过分析前面的层激活的相关统计并且使用高度相关的输出来聚类神经元来在后层构建最优网络拓扑。(这个实在没懂。。感觉有点扯淡了,虽然道理是这个道理)
不幸的是,当前的计算指令在处理非均匀的稀疏结构时非常的inefficient,这就带来一个问题,计算稀疏的结构很有可能是不划算的。当前人们实现的稀疏性主要是利用卷积的优点,但是通过卷积操作的到本层的feature本身就是前一层feature map上进行全连接操作一点一点计算出来的。这就又带来一个问题,难道就不能在当前的基础上更进一步了吗?作者提出既然稀疏性不能达到