Network In Network

Network In Network

我们提出了一种新的深度网络结构,称为“网络中的网络”(NIN),以提高模型在接受域内对局部补丁(local patches)的可分辨性。传统的卷积层使用线性滤波器和非线性**函数来扫描输入。相反,我们用更复杂的结构来构建微型神经网络来提取感受野中的数据。我们用一个多层感知器(一个有效的函数逼近器)来实例化微神经网络。通过将微网络以与CNN相似的方式滑动到输入端来获得特征映射,然后将其输入下一层。深度NIN可以通过堆叠上述结构的多个来实现。通过微网络增强的局部建模,我们能够利用分类层中的全局平均特征映射池,这比传统的完全连接层更容易解释,也不容易过度拟合。我们在CIFAR-10和CIFAR-100上演示了NIN的最新分类性能,以及SVHN和MNIST数据集的合理性能。

1 Introduction

**CNN中的卷积卷积核底层数据块的广义线性模型(GLM),我们认为GLM的抽象程度较低。用更有效的非线性函数逼近器代替GLM可以增强局部模型的抽象能力。当潜在概念的样本(the samples of the latent concepts)是线性可分的时,GLM可以达到很好的抽象程度,即概念的变体(the variants of the concepts)都存在于GLM定义的分离平面的一侧。因此,传统的CNN隐式地假设潜在概念是线性可分的,而同一概念的数据往往存在于非线性流形上,因此捕获这些概念的表示通常是输入的高度非线性函数。**本文选择多层感知器[3]作为微网络的实例,它是一个通用的函数逼近器和一个可通过反向传播训练的神经网络。

我们称之为mlpconv层的结构和CNN结构的比较如图1。线性卷积层和mlpconv层都将局部感受野映射到输出特征向量。mlpconv使用多层感知器(MLP)将输入local patch映射到输出特征向量,多层感知器由多个具有非线性**函数的完全连接层组成。

Network In Network

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

MLP在所有的局部感受野*享。特征映射是通过将MLP以与CNN相似的方式滑动到输入上而获得的,然后输入到下一层。NIN的整体结构是多层mlpconv层的叠加。它被称为“网络中的网络”(NIN),因为我们有微网络(MLP),它是整个深度网络的组成元素,在mlpconv层中,

**在CNN中不采用传统的全连通层进行分类,而是通过全局平均池层直接将最后一个mlpconv层的特征图的空间平均值作为类别的置信度输出,然后将得到的向量输入到softmax层。**在传统的CNN中,由于完全连接的层之间起着黑盒的作用,很难解释如何将来自客观成本层(objective cost layer)的类别级信息传递回先前的卷积层。相比之下,全局平均池更具意义和可解释性,因为它加强了特征映射和类别之间的对应关系,这是通过使用微网络进行更强的局部建模实现的。此外,完全连接的层容易过度拟合,并且严重依赖于dropout正则化,而全局平均池本身就是一个结构正则化器,它在本质上防止了整体结构的过度拟合。

2 Convolutional Neural Networks

经典的卷积神经网络[1]由交替堆叠的卷积层和空间池化层组成。卷积层通过线性卷积滤波器和非线性**函数(rectifier、sigmoid、tanh等)生成地形图。以linear rectifier为例,其特征图计算如下:

fi,j,k=max(wkTxi,j,0)f_{i,j,k}=max(w_k^Tx_{i,j},0) (1)

这里,(i,j)是特征图中的像素下标,xi,jx_{i,j}表示以位置(i,j)为中心的输入patch。k用于索引特征映射的通道。当潜在概念的实例是线性可分的时,这种线性卷积就足以进行抽象。然而,实现良好抽象的表示通常是输入数据的高度非线性函数。在传统的CNN中,这可以通过使用an over-complete set of filters来补偿,以覆盖潜在概念的所有变化。

也就是说,可以学习单个线性卷积核来检测同一概念的不同变化。然而,对于一个概念来说,有太多的过滤器会给下一层带来额外的负担,这就需要考虑上一层的所有变化组合[7]。与CNN一样,来自更高层的过滤器映射到原始输入中的更大区域。它通过组合来自下面一层的较低层次的概念来生成更高层次的概念。因此,我们认为在将每个局部补丁合并成更高级别的概念之前,对它们进行更好的抽象是有益的。

**在最近的maxout网络[8]中,特征图的数量可以通过maximum pooling over affine feature maps(affine feature maps是不应用**函数的线性卷积的直接结果)。线性函数上的最大化使得分段线性逼近器能够逼近任何凸函数。**与执行线性分离的传统卷积层相比,maxout网络更有效,因为它可以分离位于凸集内的概念。这种改进使maxout网络在多个基准数据集上具有最佳性能。

然而,maxout网络将一个潜在概念的实例置于输入空间的一个凸集内,这一点并不一定成立。当潜在概念的分布更复杂时,有必要使用更一般的函数逼近器。我们试图通过引入新的“网络中的网络”结构来实现这一点,在每个卷积层中引入一个微网络来计算局部补丁(local patches)的更抽象的特征。

将微网络滑动到输入端已经在以前的一些工作中提出过。例如,结构化多层感知器(SMLP)[9]将共享多层感知器应用于输入图像的不同块上;在另一项工作中,训练基于神经网络的滤波器用于人脸检测[10]。然而,它们都是针对特定问题而设计的,都只包含一层滑动网络结构。NIN是从更一般的角度提出的,为了更好地抽象出各个层次的特征,微网络被集成到CNN结构中。

3 Network In Network

3.1 MLP Convolution Layers

在不考虑潜在概念分布的前提下,最好使用通用函数逼近器来提取local patches的特征,因为它能够逼近潜在概念更抽象的表示。径向基网络和多层感知器是两种著名的通用函数逼近器。我们在这项工作中选择多层感知器有两个原因。首先,多层感知器与卷积神经网络结构相容,卷积神经网络采用反向传播训练。其次,多层感知器本身可以是一个深度模型,这与特征重用的精神是一致的[2]。这种新的层称为mlpconv,MLP代替GLM对输入进行卷积。图1说明了线性卷积层和mlpconv层之间的区别。mlpconv层的计算如下:

Network In Network

这里n是多层感知机的层数。在多层感知器中,以Rectified linear单元作为**函数。

从跨通道(跨特征映射)池的角度来看,等式2等价于在正常卷积层上级联的跨通道参数池。每个池化层在输入特征映射上执行加权线性复合,然后通过rectifier linear单元。跨通道汇集的特征映射在下一层中一次又一次地跨通道汇集。这种级联的跨通道参数池结构允许跨通道信息的复杂和可学习的交互。

跨通道参数池层也相当于具有1x1卷积核的卷积层。这种解释使人们直接理解了NIN的结构。

与maxout层比较:maxout网络中的maxout层跨多个仿射特征映射执行max池[8]。maxout层的特征映射计算如下:

fi,j,k=maxm(wkmTxi,j)f_{i,j,k}=max_m(w^T_{k_m}x_{i,j}) (3)

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)。

补充:参考博客TensorFlow学习记录:MLP卷积层

Google团队提出的Inception Module结构在实现上借鉴了论文《Network in NetWork》(以下简称NIN,该论文由Min Lin和Qiang Chen等人于2014年发表)中的一些做法。在NIN中,主要通过串联卷积层与MLP层(级联在一起称为MLPConv(Multilayer Perceptron + Convolution))的方式增加了卷积层的表达能力。在一般的卷积神经网络中,提升表达能力的主要措施是增加输出通道数(使用多个卷积核提取更多的特征),但是,这样会增大计算量并有可能导致过拟合。而NIN中的MLPConv则实现的是利用多层感知器(其实就是多层的全连接层)来替代单纯的卷积神经网络中的加权求和。具体来讲,MLPConv使用MLP对卷积操作得到的特征图进行进一步的操作,让MLP层像卷积层一样通过滑动计算CNN的输出从而得到本层的最终输出特征图。下图展示了MLPConv的连接情况,其中左边的特征图由卷积操作得到。
Network In Network
在一般的卷积神经网络中,无论是输入还是输出,不同的卷积核之间是不同的;但是在MLPConv中,卷积操作得到的特征图会经过权值共享的MLP来得到要输出的特征图。这样的处理方式拥有更强大的表达能力,因为允许在输出通道之间组合信息(特征图的多少决定通道的深度),所以效果明显。可以将全连层看作是卷积核大小为1*1的卷积层,于是MLPConv就基本等效于普通卷积层再连上1x1的卷积和ReLu**函数。

一文读懂卷积神经网络中的1x1卷积核

和ReLu**函数。

一文读懂卷积神经网络中的1x1卷积核