[论文翻译]NIN:Network In Network




author 作者

Min Lin1,2, Qiang Chen2
, Shuicheng Yan2
1Graduate School for Integrative Sciences and Engineering
2Department of Electronic & Computer Engineering
National University of Singapore, Singapore
{linmin,chenqiang,eleyans}@nus.edu.sg

paper:http://arxiv.org/abs/1312.4400

Abstract 摘要

我们提出了一种新型的深度网络结构,称为“Network In Network”(NIN),它可以增强模型在感受野(receptive field)内对局部区域(local patches)的辨别能力。传统的卷积层使用线性滤波器来扫描输入,后面接一个非线性激活函数。而我们则构建了一些结构稍复杂的微型神经网络来抽象 receptive field 内的数据。 我们用多层感知器实例化微型神经网络,这是一种有效的函数逼近器。特征图可以通过微型神经网络在输入上滑动得到,类似于 CNN;接下来特征图被传入下一层。深度 NIN 可以通过堆叠上述结构实现。通过微型网络增强局部模型,我们就可以在分类层中利用所有特征图的全局平均池化层(GAP),这样更容易解释且比传统的全连接层更不容易过拟合。我们证明了 NIN 在 CIFAR-10 和 CIFAR-100 上得到了有史以来最佳的表现以及在 SVHN 和 MNIST 数据集上合理的表现。

1 Introduction

卷积神经网络(CNN)由卷积层和池化层交替组成。卷积层使用线性滤波器和底层 receptive field 做内积,然后接一个非线性的激活函数,得到的输出称作特征图(feature map)。

CNN 的卷积滤波器是底层数据块的广义线性模型(generalized linear model )(GLM),而且我们认为它的抽象程度较低。这里的抽象较低是指该特征对同一概念的变体是不变的。用更有效的非线性函数逼近器代替 GLM 可以增强局部模型的抽象能力。当样本的隐含概念(latent concept)线性可分时,GLM 可以达到很好的抽象程度,例如:这些概念的变体都在 GLM 分割平面的同一边,而传统的 CNN 就默认了这个假设——认为隐含概念(latent concept)是线性可分的。然而,同一概念的数据通常是非线性流形的(nonlinear manifold),捕捉这些概念的表达通常都是输入的高维非线性函数。在 NIN 中,GLM 用“微型网络”结构替代,该结构是一个非线性函数逼近器。在本项研究中,我们选择多层感知器实例化微型网络,该感知器是一个通用函数逼近器,也是一个通过反向传播训练的神经网络。

最终结构我们称为“mlpconv”层,与 CNN 的比较见图 1.
image.png

图 1 线性卷积层与 mlpconv 层的比较。线性卷积层包含线性滤波器,而 mlpconv 层包含的是微型网络(本文选择多层感知器)。两种层都将局部感受野映射到了隐含概念的置信度值

线性卷积层和 mlpconv 层都从局部感受野(receptive field)映射到了输出特征向量。mlpconv 层将局部块的输入通过一个由全连接层和非线性激活函数组成的多层感知器(MLP)映射到了输出的特征向量。MLP 在所有局部感受野中共享。和 CNN 一样,在输入上滑动 MLP 得到特征图,NIN 的总体结构是一系列 mplconv 层的堆叠。被称作“Network In Network”(NIN),因为内部含有 MLP。

我们没有采用传统 CNN 的全连接层进行分类,而是直接通过全局平均池化层(GAP)输出最后一个 mlpconv 层特征图的空间平均值作为类别的置信度值,然后将得到的向量输入 softmax 层。在传统的 CNN 中,很难解释如何将来自分类层(objective cost layer)的分类信息传递回前一个卷积层,因为全连接层像一个黑盒一样。相比之下,全局平均池化层(GAP)更有意义且容易解释,因为它强化了特征图与分类的对应关系,这是通过使用微型网络构成的局部建模器实现的。此外,全连接层更容易过拟合且严重依赖于 dropout 正则化,而 GAP 则本身就是一个结构化的正则化器,能避免整体结构的过拟合。

2 Convolutional Neural Networks

经典卷积神经网络由卷积层和空间池化层交替堆叠产生。卷积层通过线性卷积滤波器接一个非线性激活函数(如 rectifier,sigmoid,tanh 等等)生成特征图。例如使用 rectifier 激活函数,特征图的计算如下:

image.png

这里的(i, j)是特征图像素的索引,x_ij代表以位置 (i, j) 为中心的输入块,k 用来索引特征图的颜色通道。

当隐含概念线性可分时,这种线性卷积足以用于抽象,但是要想得到更好的抽象,应该是用输入数据的高度非线性函数。在传统的 CNN 中,这可以通过利用一套完整的滤波器来弥补,覆盖所有隐含概念的变化。也就是说,单独的线性滤波器可以学习检测同一概念的不同变化。但是同一概念使用太多的滤波器会给下一层带来额外的负担,需要考虑来自前一层的所有变化的组合,来自更高层的滤波器会映射到原始输入的更大区域,它通过结合下层的较低级概念生成较高级的概念,因此,我们认为在每一个局部块结合生成更高级概念之前就作出更好的抽象是更有益的。

在最近的 maxout 网络中,特征图的数目通过在 affine feature maps 上做最大池化来减少(affine feature maps 是线性卷积未通过激活函数的直接结果)。线性函数的最大化使分段线性逼近器能逼近任何凸函数。与执行线性可分的传统卷积层相比,maxout 网络更有效,因为它能分离在凸集内的概念。这种改进使 maxout 网络在几个基准数据集上表现出色。

但是 maxout 网络加了一个前提:隐含概念位于输入空间的凸集内,而这是不一定的。因此应该使用一个更通用的函数逼近器,在隐含概念处于更复杂的分布时也依然能用。我们通过使用新的“Network In Network”结构在实现这个需求,在每个卷积层内引入一个微型网络,来计计算和抽象每个局部块的特征。

在输入上滑动微型网络已经在之前的研究中提出过。比如,Sturctured Multilayer Perceptron(SMLP)在输入图片的不同块中使用了共享的多层感知器;在另一项研究中,基于神经网络的滤波器被训练以用于面部检测。但是,他们都是针对某个特定问题设计的,且滑动的网络结构都只有一层。NIN 则从一个通用的角度上提出,微型网络被整合到 CNN 结构中,以追求对各级特征的更好的抽象。

3 Network In Network

我们首先强调提出的“Network In Network”结构的关键组成:3.1 节和 3.2 节分别介绍了 MLP 卷积层和全局平均池化层。然后我们在 3.3 节详细介绍 NIN 整体。

3.1 MLP 卷积层

由于隐含概念的分布一开始并不知道,所以用一个通用函数逼近器做局部块的特征提取,因为它能逼近隐含概念的更多抽象表示。Radial basis network 和多层感知器是两个众所周知的通用函数逼近器。我们使用多层感知器,有两个原因,首先,多层感知器与卷积神经网络的结构一样,都是通过反向传播训练。其次多层感知器本身就是一个深度模型,符合特征再利用的精神。这种多层感知器层在文本被称作 mlpconv,我们用它来替代 GLM(general linear model)在输入上做卷积。图 1 展示了线性卷积层和 mplconv 层的不同。mlpconv 层的计算如下:

image.png

公式 2

这里 n 是多层感知器中的层编号。rectified 为多层感知器的激活函数。

从 cross channel(cross feature map)池化的角度来看,公式 2 等效于级联普通卷积层的 cross channel parametric pooling。每个池化层在输入特征图上做加权线性重组,然后通过 rectifier 函数。池化了的 cross channel 特征图又在下一层池化,如此一遍又一遍重复。级联的 cross channel parameteric pooling 结构允许复杂的和可学习的 cross channel 信息进行交互。

cross channel parametric pooling 层也等效于一个 1x1 卷积核的卷积层。这个解释可以更直观的理解 NIN 的结构。

与 maxout 层的比较: maxout 网络中的 maxout 层在 affine feature maps 上做了最大池化,maxout 层的特征图计算如下:

image.png

maxout 线性函数形成了一个分段线性函数,可以给任何凸函数建模。对于一个凸函数来说,函数值在特定阈值下的样本点形成一个凸集,因此,通过拟合局部块的凸函数,可以形成样本点在凸集内的概念的分割超平面(例如,l2 balls, convex cones)。mlpconv 层和 maxout 层的不同之处在与见凸函数拟合器用通用函数拟合器替代,使其能对更多的隐含概念分布建模。

3.2 Global Average Pooling

传统卷积神经网络在网络的较低层执行卷积。对于分类任务,最后一个卷积层得到的特征图被向量化然后送入全连接层,接一个 softmax 逻辑回归层。这种结构将卷积结构与传统神经网络分类器连接起来,见卷积层作为特征提取器,得到的特征用传统方式进行分类。

但是,全连接层容易过拟合,从而阻碍了整个网络的泛化能力。后来 dropout 被 Hinton 等人提出,用于正则化,在训练过程中随机地将全连接层的一半激活值置零,改善了它的泛化能力并且很大程度地预防了过拟合。

在本文中,我们提出了另一个策略,叫做全局平均池化层,用它来替代 CNN 中的全连接层。想法是在最后一个 mlpconv 层生成一个分类任务中相应类别的特征图。我们没有在特征图最顶端增加全连接层,而是求每个特征图的平均值,得到的结果向量直接输入 softmax 层。GAP 相比全连接层的优点在于通过增强特征图与类比间的对应关系使卷积结构保留的更好,使特征图分类是可信的得到很好的解释;另一个优点是 GAP 层中没有参数设置,因此避免了过拟合;此外,GAP 汇聚了空间信息,所以对输入的空间转换更鲁棒。

我们可以看到 GAP 作为一个正则化器,加强了特征图与概念(类别)的可信度的联系。这是通过 mlpconv 层实现的,因为他们比 GLM 更好逼近置信图(conficence maps)。

3.3 Network In Network Structure

NIN 的整体结构是一系列 mlpconve 层的堆叠,最上层接一个 GAP 层和分类层。mlpconv 层间的子层可以被相加,像 CNN 和 maxout 网络一样。图 2 展示了一个包含三个 mlpconv 层的 NIN。每个 mlpconv 层,包含一个三层的感知器,NIN 和微型网络的层数都是灵活的,可以根据具体任务微调。
image.png

图 2 NIN 的整体结构。本文的 NIN 由三个 mlpconve 层和一个 GAP 层堆叠而成。

4 Experiment

4.1 Overview

我们在四个基准数据集上评估了 NIN:CIFAR-10,CIFAR-100,SVHN 和 MNIST。网络在这些数据上都使用三层堆叠 mplconv 层结构,mlpconv 层后面都跟随一个最大池化层,把原输入样本缩减一倍。作为正则化器,除了最后一个 mlpconv 层外所有输出都加一个 dropout。除非特别说明,否则实验部分的所有全连接层都用全局平均池化层替代。另一个正则化方法是和 Krizhevsky 等人一样的权重衰减。图 2 展示了本节所用的 NIN 网络整体结构,详细的参数设置在补充材料中。我们使用由 AlexKrizhevsky 开发的超快速 cuda-convnet 代码来实现我们的网络。数据预处理和训练集验证集的拆分同 Goodfellow。

我们的训练过程同 Krizhevsky 等人一样。也就是说,我们手动初始化了权重以及学习率,使用 128 小批次训练。训练层初始化权重和学习率开始,直到训练集上的准确率停止改善,然后损失率减少 10 倍,再继续训练,重复直到学习率衰减到 1%。

4.2 CIFAR-10

CIFAR-10 数据集由 10 类自然图片组成,有 50000 张训练图片,10000 张测试图片,每张图片是 32x32 的 RGB 图片。对于这个数据集,我们使用与 Goodfellow 在 maxout network 中相同的 global contrast normalization 和 ZCA 白化。我们用训练集的最后 10000 张图片做验证集。

实验中每个 mlpconv 层的特征图数与 maxout 网络相同。有两个超参数用验证集微调,如局部感受野(local receptive field)的大小和权重衰减。超参数调整好后固定,然后重新在训练集合验证集上训练,将最终模型用于测试集。我们在测试集上得到了 10.41% 的错误率,比当前最优结果降低 1%。表 1 展示了与先前方法的对比。

image.png

表 1:CIFAR-10 各种方法在测试集上的错误率

我们实验证明,mlpconv 层间使用 dropout 可以通过增加模型泛化能力来提升模型表现。如图 3 所示,在 mlpconv 层间引用 dropout 层错误率减少了 20% 多。这一结果与 Goodfellow 等人的一致,所以本文的所有模型 mlpconv 层间都加了 dropout。没有 dropout 的模型在 CIFAR-10 数据集上错误率是 14.5%,已经超过之前最好的使用正则化的模型(除了 maxout)。由于没有 dropout 的 maxout 不可靠,所以本文只与有 dropout 正则器的版本比较。

image.png

图 3:mlpconv 层间添加 dropout 的影响,有 dropout 和没有 dropout 的 NIN 在训练集和测试集前 200 代的错误率

与先前一样,我们也在做了位移和水平翻转的数据增强的 CIFAR-10 数据集上对我们的方法做了评估,在测试集上达到了 8.81% 的错误率,创了新纪录。

4.3 CIFAR-100

CIFAR-100 和 CIFAR-10 数据规模一样,只是分为 100 类。因此每一类图的数目是 CIFAR-10 的 1/10。对于 CIFAR-100,我们不调整超参数,而是使用和 CIFAR-10 一样的设置。位移的不同是最后一个 mlpconv 层输出 100 个特征图。CIFAR-100 在测试集上的错误率为 35.68%,超了当前不做数据增强最好的表现 1% 多。详细的表现比较见表 2。image.png

表 2:CIFAR-100 各种方法在测试集上的错误率

4.4 Street View House Numbers

SVHN 数据集由 630,420 32x32 的彩图组成,分为训练集、测试集和额外集和。这个数据集的任务是识别出每张图中间的数字。训练和测试过程同 Goodfellow,也就是说,每一类从训练集中选择 400 张图,从额外集中选 200 张图作为验证集。剩余的训练集和额外集用于训练。验证集只用于调整超参数,不用于训练。

数据集的预处理也同 Goodfellow,即 local contrast normalization。用于 SVHN 的结构和参数设置同 CIFAR-10 一样,由三个 mlpconv 层加 GAP 组成。我们在这个数据集上得到 2.35% 的错误率。我们将结果与其他没有做数据增强的方法结果进行比较,如表 3 所示。
image.png

表 3 各种方法在 SVHN 的错误率

4.5 MNIST

MNIST 数据集由 28x28 的 0-9 手写数字组成。有 60000 张训练集图片和 10000 张测试集图片。对于这个数据集,网络结构同 CIFAR-10 一样,只是每个 mlpconv 层的特征图数减少了,因为 MNIST 比 CIFAR-10 简单。与先前使用卷积神经网络的结果对比如表 4.image.png

表 4:MNIST 的错误率比较

我们得到了 0.47% 的表现,但是没有当前最好的 0.45% 好,因为 MNIST 的错误率已经非常低了。

4.6 Global Average Pooling as a Regularizer

GAP 层和全连接层很相似,都对特征向量做了线性转换。不同的是转换矩阵。GAP 的转换矩阵是事先定义的并且仅在共享相同值的块对角线元素上是非零的。全连接层可以有复杂矩阵变换且值是通过反向传播设置的。为了研究 GAP 的正则化影响,我们用 GAP 替换全连接层,模型其他部分相同。我们评估了全连接层前面有 dropout 和没有 dropout 的模型,都在 CIFAR-10 上测试,表现比较如表 5.

image.png

表 5:GAP 和全连接层的比较

如表 5 所示,全连接层没有 dropout 的表现最差,11.59%,与预期一样,全连接层没有正则化器会过拟合。全连接层前增加了 dropout 后测试集错误率为 10.88%。GAP 在三者比较中得到了最低错误率 10.41%。

然后我们探索了 GAP 对传统 CNN 来说是否也有同样的正则化影响。我们实例化了一个像 Hiton 等人描述的传统 CNN,由三个卷积层和一个局部连接层(local connection layer)组成。局部连接层生成 16 个特征图,传给没有 dropout 的全连接层。为了比较的公正性,我们把局部连接层的特征图数从 16 减到了 10,因为 GAP 的每个类别只允许一个特征图。GAP 的等价网络由 dropout+ 带有 GAP 的全连接层替代,表现在 CIFAR-10 上测试。

全连接层的 CNN 模型只能得到 17.56% 的错误率,添加 dropout 后与 Hinton 等人提到的表现相近——15.99%。用 GAP 替换全连接层,我们达到 16.46% 的错误率,与没有 dropout 的 CNN 相比提升了 1%。这又一次验证了 GAP 层作为正则化器的有效性。尽管比 dropout 稍差一些,但是我们认为 GAP 可能对线性卷积要求过高,因为它需要带有 rectified 激活函数的线性滤波器来为类别的置信图建模。

4.7 Visualization of NIN

我们通过 GAP 来增强 NIN 最后一个 mlpconv 层的特征图,使其作为分类是可信的,这可能会加强局部感受野的建模。为了知道这个目标实现了多少,我们提取和可视化了在 CIFAR-10 上训练的模型的来自最后一个 mlpconv 层的特征图。

图 4 展示了 CIFAR-10 上测试集上选择的 10 类的一些示例图和相关特征图。如预期,特征图的最大激活区域和输入的相关真实分类吻合,这明显是 GAP 加强过的。在真实分类的特征图内,可以看到最大的激活区域出现在与原物体相同的区域,在结构化物体中尤其如此,例如图 4 第二行的车。注意这些特征图的分类只用类别信息进行训练,如果使用有边界框标注的图片效果会更好。

image.png

图 4:最后一个 mlpconv 层的特征图可视化,只展示了特征图的 10%。相关特征图的分类是: 1. airplane, 2. automobile, 3. bird, 4. cat, 5. deer, 6. dog, 7. frog, 8. horse, 9. ship, 10. truck。与输入图片的真实类别相关的特征图被圈出,左面板和右面板只是不同样例

可视化证明了 NIN 的有效性,通过用 mlpconv 层建模得到一个更强的局部感受野,使其有效,然后 GAP 增强了特征图类别的学习。下一步研究可以用于物体侦测,侦测结果可以基于与 Farabet 等人的场景标记工作相同的类别级特征图来实现。

5 Conclusions

我们提出了一个新的深度网络,叫做“Network In Network”(NIN),用于分类任务。这个新结构有 mlpconv 层组成,使用多层感知器对输入进行卷积,用 GAP 代替传统 CNN 中的全连接层。mlpconv 层对局部块建模更好,GAP 充当结构化正则化器,防止了过拟合。用 NIN 的这两个组件,我们得到了当前在 CIFAR-10,CIFAR-100 和 SVHN 数据集上最好的表现。通过可视化特征图,我们证明了来自 NIN 的最后一个 mlpconv 层的特征图得到的分类是可信的,并且使通过 NIN 做物体侦测变成了可能。