论文笔记_Network in Network

摘要

  本文提出一个叫做Network in Network(NIN)的新型网络架构,以增强接受域内局部感受野的模型识别能力。传统的卷积层使用线性滤波器和非线性激活函数对输入进行扫描。相反,本文构建结构更加复杂的微神经网络对感受野中的数据进行抽象。因为多层感知机的有效函数逼近的特性,我们使用多层感知机来构造微神经网络。微神经网络使用与CNN相似的滑动窗口对输入进行操作,得到特征图(feature map),然后将特征图作为下一层的输入。深度NIN可以通过将上述结构堆叠得到。通过微神经网络增强的局部建模之后,本文在分类层上使用了全局平均池化来代替全连接层,全局平均池化比传统的全连接层更容易解释,且不容易发生过拟合。我们使用NINI在CIFAR-10和CIFAR-100展示了最新的分类性能,并在SVHN和MNISTdatasets上展示了合理的性能。

1.介绍

  卷积神经网络由可选择的卷积层和池化层构成。卷积层对线性滤波器和潜在的感受野做内积运算,然后对每个感受野和线性滤波的内积做非线性映射,卷积层的输出叫做特征图。
  卷积神经网中的卷积核是用于局部感受野的一个广义线性模型(GLM),我们人为广义线性模型的抽象能力很低。我们所说的抽象,是指特征在同一个概念的变体中是不变的。将GLM替换为更有效的非线性函数逼近器会增强局部模型的抽象能力。当样本的潜在特征是线性可分时,GLM的抽象水平很高,例如,概念(特征)的变体都存在于由GLM定义的分离平面的一侧。但是,一些特征数据往往是非线性可分的。在NIN中,使用微神经网络架构来代替广义线性模型,该微神经网络脚骨是一个通用飞信息函数近似器。本文中,我们使用多层感知机作为微神经网络来代替GLM,多层感知机是一个普遍的函数逼近器,且是一个可以通过反向传播训练的神经网络。
  我们将得到的结构称为mlpconv层,与图1中的卷积神经网络进行比较,卷积层和mlpconv层都将局部感受野映射到输出特征向量。mlpconv层使用多层感知机(由多个全连接层和非线性函数构成)将输入的一部分映射到输出特征向量,这个多层感知机被所有的局部感受野所共享。最终的特征图是通过将多层感知机在输入图像上进行滑动窗口得到的,且该层的特征图是下一层的输入。NIN的整体架构是多个mlpconv层堆叠而成的。之所以叫做Network In Network,是因为我们有微网络(多层感知机),这些微网络在mlpconv层中是构成整个深层网络中的元素。
在这里插入图片描述
  与传统的卷积神经网络使用全连接层进行分类不同,本文使用全局平均池化将最后一个mlpconv层输出的特征图的空间平均值作为类别的置信度,然后将置信度向量送入softmax层。在传统的卷积神经网络中,很难解释如何将来自目标成本层(输出层)的类别级信息传递回前面的卷积层,因为在这两层之间,全连接层充当了一个黑盒子。相比之下,全局平均池化更有意义和可解释性,因为他加强了特征图和类别之间的对应关系,这是通过使用微网络进行更强的局部建模实现的。并且,全连接层容易发生过拟合,严重依赖dropout正则化,而全局平均池化层本身就是一个结构正则化器,这就避免了整体结构的过拟合。

2.卷积神经网络

  经典的卷积神经网络是由多个卷积层和空间池化层堆叠而成的。卷积层通过线性卷积核和非线性激活函数(例如,rectifier,sigmoid,tanh等)将输入转换为特征图进行输出。使用线性rectifier为例,特征图的计算方式如下:
f i , j , k = m a x ( w k T x i , j , 0 ) ( 1 ) f_{i, j, k} = max(w_k^Tx_{i,j}, 0)\qquad\quad(1) fi,j,k=max(wkTxi,j,0)(1)
  其中 ( i , j ) (i, j) (i,j)是特征图的像素索引, x i , j x_{i, j} xi,j代表以 ( i , j ) (i, j) i,j为中心的输入, k k k表示特征图的通道。
  当潜在概念(特征)的实例是线性可分的时,这种线性卷积足以用于抽象。然而,实现良好抽象的表示通常是输入数据的高度非线性函数。在传统的卷积神经网络中,这可以通过使用一套过度完整的过滤器来补偿,以涵盖潜在概念的所有变化。也就是说,可以学习单个线性滤波器以检测相同概念的不同变化。然而,为单个概念设置过多的滤波器会给下一层带来额外的负担,它需要考虑前一层的变化的所有组合。因为在卷积神经网络中,高层通过将底层中提取的特征进行组合,从而更高的层具有更大的感受野。因此,我们认为将它们组合成更高层次的概念(特征)之前,对每个局部感受野中提取的特征进行更好的抽象是有益的。
  最近,在maxout网络中,通过在仿射特征图(仿射特征图是线性卷积的结果,不适用激活函数)上进行最大池化操作来减少特征图的数量。最大化线性函数使得分段线性逼近器能够逼近任何凸函数。与传统的卷积层进行线性分离相比,maxout网络更有效,因为它可以分离出凸集中的概念。这种改进使maxout网络在几个基准数据集上具有最佳性能。
  但是,maxout网络强加了一个先验条件,即一个潜在概念的实例位于输入空间中的凸集合中,这一先验条件不一定适用。当潜在概念的分布更复杂时,就有必要探索一种更加通用的函数逼近器。我们试图通过使用NIN来实现这一目标,在NIN中,每个卷积层都引入了一个微网络来计算局部感受野中的抽象特征。
  在之前的几项工作中,提出了在输入端滑动一个微网络的方法。例如,[9]在输入图片的不同部分上使用一个共享的多层感知机;另一项工作中,训练了基于神经网络的滤波用来做人脸检测。但是,这些工作都是针对特定的问题,且都只包含了一个滑动网络结构。NIN是从更一般的角度提出的,微网络集成到CNN结构中,可以更好地抽象出所有级别的特征。

3.Network in Network

  接下来,在3.1和3.2节中我们分别强调了NIN网络的组件:MLP卷积层和全局池化层。然后在3.3节中详细介绍NIN的整体架构。

3.1 MLP 卷积层

  在不考虑潜在概念的分布先验的情况下,我们需要使用一个通用的函数逼近器来提取局部感受野之内的特征,因为通用的函数逼近器能够逼近潜在概念的更多的抽象表示。径向基网络和多层感知机是两个众所周知的通用函数逼近器。本文选择多层感知机,原因如下:第一,多层感知机与神经网络是兼容的,都可以使用反向传播来训练;第二,多层感知机本身可以是一个深度模型,这与特征重用的精神一致。本文中网络的层叫做mlpconv层,该层是使用多层感知机代替广义线性模型对输入进行卷积操作。图1展示了卷积层和mlpconv层之间的不同。mlpconv层的计算输出如下图:
f i , j , k 1 1 = m a x ( w k 1 T x i , j + b k 1 , 0 ) f_{i,j,k_1}^1 = max(w_{k_1}^Tx_{i,j} + b_{k_1}, 0) fi,j,k11=max(wk1Txi,j+bk1,0)
. . . ... ...
f i , j , k n n = m a x ( w k n T f i , j n − 1 + b k n , 0 ) ( 2 ) f_{i,j,k_n}^n = max(w_{k_n}^Tf_{i,j}^{n-1} + b_{k_n}, 0) \qquad\quad(2) fi,j,knn=max(wknTfi,jn1+bkn,0)(2)
  其中 n n n是多层感知机中的层数。多层感知机中使用RELU函数作为激活函数。
  从交叉通道(交叉特征图)池化的观点来看,等式2相当于正常卷积层上的级联交叉信道参数池化。 每个池化层在输入特征图上执行加权线性重组,然后通过RELU线性单元。交叉通道池化所生成的特征图再作为下一交叉通道池化的输入,依次进行下去。 这种级联的跨信道参数池化结构允许交叉信道信息的复杂和可学习的交互。
  交叉通道卷积层也等价于使用1*1卷积核进行卷积的层。这个解释使得理解NIN网络架构更加直观。
与maxout层对比
  maxout网络中的maxout层是在多个仿射特征图上进行最大化pooling,maxout层的输出可以按照下式计算:
f i , j , k = max ⁡ m ( w k m T x i , j ) ( 3 ) f_{i,j,k} = \max \limits_{m} (w_{k_m}^Tx_{i,j}) \qquad\quad(3) fi,j,k=mmax(wkmTxi,j)(3)
  maxout在线性函数上形成一个分段线性函数,可以对任意凸函数进行建模。对一个凸函数来说,函数值低于特定阈值的样本构成凸集。因此,通过逼近局部patch的凸函数,maxout 能够为样本在凸集内的概念形成分离超平面。Mlpconv层与maxout层的不同之处在于,将凸函数逼近器替换为通用函数逼近器,该逼近器对各种潜在概念的分布具有更强的建模能力。

3.2 全局平均池化

  传统的卷积神经网络在网络的低层进行卷积操作。对分类任务来说,最后一个卷积层输出的特征图展开成向量之后,再传进全连接层中,最后在使用softmax逻辑回归层输出结果。这样的架构将卷积结构和传统的神经网络分类器连接到一起,传统的卷积神经网络将卷积层看作是特征提取层,而分类结果还是使用传统的方法。
  但是,全连接层易于发生过拟合,这就减弱了整个网络的泛化能力。Hinton提出了dropout正则化,通过随机的将全连接层的一部分激活函数置零来减少全连接层的过拟合,该方法的确改善了模型的泛化能力并在很大程度上减少了过拟合。
  在本文中,我们提出另一个策略–全局平均池化来代替全连接层。这个策略的核心思想是为最后一个mlpconv层中分类任务的每个对应类别生成一个特征图。与在最后一个特征图上添加全连接层不同,我们对每一个特征图求平均,然后将形成的向量直接传入softmax层。与完全连接的层相比,全局平均池的一个优点是,通过在特性图和类别之间强制执行对应关系,它更适合卷积结构。因此,特征图可以很容易地解释为类别置信图。另一个优点是,在全局平均池中没有要优化的参数,因此在该层避免了过度拟合。此外,全局平均池汇总了空间信息,因此它对输入的空间转换更具有鲁棒性。
  我们可以将全局平均池看作是一个结构正则化器,它显式地将特征映射强制为概念(类别)的置信度映射。这是由mlpconv层实现的,因为它们比GLMs更接近置信度图。

3.3 NIN网络架构

  NIN的总体架构是mlpconv层的堆叠,最上层是全局平均池化层和目标成本层。下采样层可以加在mlpconv层之间。图2展示了具有3个mlpconv层的NIN网络架构。在每个mlpconv层中,都有一个3层感知机。NIN和微网络中的层数都很灵活,可以针对特定任务进行调整。
在这里插入图片描述

4.实验
4.1 实验概述

  我们在四个基准数据集上评估了NIN:cifar-10[12]、cifar-100[12]、svhn[13]和mnist[1]。用于数据集的网络均由三个堆叠的MLPCONV层组成,所有实验中的MLPCONV层之后都是一个空间最大池化层,它将输入图像的采样率降低了2倍。作为一个正则化器,除了最后一个mlpconv层之外,所有层的输出都应用dropout。除非特别说明,实验部分网络顶部使用的都是全局平均池化层,而不是全连接层。本文使用的另一项正则化技术是权重衰减。图2说明了本节中使用的NIN网络的总体结构。补充资料中提供了参数的详细设置。我们在Alex Krizhevsky[4]开发的超快速CUDA convnet代码上实现我们的网络。数据集的预处理、培训和验证集的拆分都遵循Goodfellow等人[8]的观点。
  我们采用Krizhevsky等人的[4]训练过程。也就是说,我们手动初始化了权重和学习率,使用128个小批次进行训练。训练过程从初始的权值和学习率开始,一直进行到训练集的精度停止提高,学习率下降10倍。这个过程重复一次,所以最终的学习率是初始值的1%。

4.2 CIFAR-10

  CIFAR-10数据集[12]由10类自然图像组成,其中训练图像总数为50,000张,测试图像总数为10,000张。每个图像都是大小为32x32的RGB图像。对于这个数据集,我们使用了与Goodfellow等人在maxout网络[8]中使用的相同的全局对比度归一化和ZCA增白。我们使用训练集的最后10,000张图像作为验证数据。
  在本实验中,每个mlpconv层的feature map数量设置为与相应maxout网络中相同的数量。用验证集调整两个超参数,即局部感受野大小和权重衰减。确定超参数后,利用训练集和验证集对网络从头开始重新训练,并利用结果模型进行测试。我们在这个数据集上获得了10.41%的测试误差,与最先进的测试结果相比,改进了超过1%。表1现实了与已有方法的比较:
在这里插入图片描述
  在我们的实验中证明,在NIN中的mlpconv层之间使用dropout可以通过提高模型的泛化能力来提高网络的性能。 如图3所示,在mlpconv层之间引入dropout使测试误差减少了20%以上。这一观察与古德费勒等人的[8]是一致的。因此,本文所使用的所有模型都在mlpconv层之间添加了dropout。没有dropout正则化的模型对CIFAR-10数据集的错误率达到了14.51%,已经超过了使用正则化器(maxout除外)之前的许多技术水平。由于没有dropout的maxout性能不可用,因此本文仅比较了dropout正则化版本。
在这里插入图片描述
  为了与之前的工作相一致,我们还评估了我们在CIFAR-10数据集上使用平移和水平翻转增强的方法。我们能够达到8.81%的测试误差,这达到了新的最先进的性能。

4.3 CIFAR-100

  cifar-100数据集[12]的大小和格式与cifar-10数据集相同,但它包含100个类。因此,每个类中的图像数量仅为cifar-10数据集的十分之一。对于cifar-100,我们不调整超参数,而是使用与cifar-10数据集相同的设置。唯一的区别是最后一个mlpconv层输出100个功能图。CIFAR-100的测试误差为35.68%,超过了目前的最佳性能,且没有超过1%的数据增加。性能比较的细节如表2所示。
在这里插入图片描述

4.4 Street View House Numbers数据集

  SVHN数据集[13]由630,420个32x32彩色图像组成,分为训练集,测试集和额外集。 该数据集的任务是对位于每个图像中心的数字进行分类。 训练和测试程序遵循Goodfellow等人。 即,从训练集中选择的400个样本类和来自额外集的每个类200个样本用于验证。 训练集的剩余部分和额外的集合用于训练。 验证集仅用作超参数选择的指导,但从未用于训练模型。
  数据集的预处理再次遵循Goodfellow等人的[8],这是一种局部对比度正态化。SVHN中使用的结构和参数类似于CIFAR-10中使用的结构和参数,CIFAR-10由三个mlpconv层和全局平均池化层组成。在这个数据集上,NIN的错误率为2.35%。我们将我们的结果与没有增加数据的方法进行了比较,比较结果如表3所示。
在这里插入图片描述

4.5 MNIST

  mnist[1]数据集由大小为28x28的手写数字0-9组成。训练图片6万张,测试图片1万张。对于该数据集,采用与CIFAR-10相同的网络结构。但是,从每个MLPCONV层生成的特征图的数量减少了。因为与cifar-10相比,mnist是一个更简单的数据集,需要的参数更少。我们在这个数据集上测试我们的方法(不适用数据增强)。结果与以往采用卷积结构的工程进行了比较,见表4。
在这里插入图片描述

4.6 全局平均池化作为正则化项

  全局平均池化与全连接层很像,因为两者都对向量化的特征图进行线性转换。不同之处在于转换矩阵。全局平均池化的变换矩阵是带前缀的,只有在具有相同值的块对角元素上才是非零的。而全连接层的变换矩阵是密集的,且其值可以进行反向传播优化。为了研究全局平均池化的正则化效应。我们将全局平均池化替换为一个全连接层,模型的其他部分保持不变。 我们在全连接线性层之前的层中使用和不使用dropout来评估此模型。两种模型都在CIFAR-10数据集上进行了测试,性能比较如表5所示。
在这里插入图片描述
  如表5所示,使用全连接层且不适用dropout时性能最差(测试误差为11.59%)。这个结果在意料之中,因为全连接层在不采用正则化的情况下很容易发生过拟合。在完全连接层之前添加dropout减少了测试错误(10.88%)。 全局平均池化在三者中达到了最低的测试误差(10.41%)。
  然后,我们探讨全局平均池化是否对传统的CNNs具有相同的正则化效果。我们实例化了一个传统的CNN(如Hinton等人所描述的[5]),它由三个卷积层和一个本地连接层组成。本地连接层生成16个特征图,这些特征图被提供给具有dropout的完全连接的层。从公平起见,我们将本地连接层的特征映射的数量从16减少到10,因为全局平均池化方案中的每个类别只允许一个特征映射。 然后通过使用全局平均池化替换dropout +完全连接的层来创建了一个具有全局平均池的等效网络。 在CIFAR-10数据集上测试了性能。
  这种具有全连接层的CNN模型只能达到17.56%的误差率。当增加dropout时,我们获得了与Hinton等人报告的类似的性能(15.99%)。在该模型中,通过将全连接层替换为全局平均池化层,得到了16.46%的误码率,比不使用dropout的CNN提高了1%。再次验证了全局平均池层作为正则化器的有效性。虽然它比dropout正则化器的结果略差,但我们认为全局平均池可能对线性卷积层要求过高,因为它需要带校正激活的线性滤波器来绘制类别的置信图。

4.7 NIN的可视化

  在NIN的最后一个mlpconv层中,我们通过全局平均池化显式地将特征图强制为各个参数的置信度映射,这只有在局部接受域建模更强的情况下才有可能实现,例如NIN中的mlpconv。为了了解这一目的完成的程度,我们从CIFAR-10训练模型的最后一个mlpconv层提取并直接可视化特征图。
  图4显示了从CIFAR-10测试集中选择的每个十个类别的一些示例图像及其相应的特征图。 期望在对应于输入图像的地面真实类别的特征图中观察到最大激活,其由全局平均汇集明确地强制执行。在真实类别的特征图中,可以观察到最强激活大致出现在原始图像中对象的相同区域。对于结构化对象尤其如此,例如图4第二行中的car。注意,类别的特征图只使用类别信息进行训练。如果将对象的包围框用于细粒度标签,则预期会得到更好的结果。
  可视化再次证明了NIN的有效性。它是通过使用mlpconv层进行更强的局部响应场建模来实现的。然后,全局平均池化会强制实施类别级别特征映射的学习。可以对一般物体检测进行进一步的探索。检测结果可以基于与Farabet等人的场景标注工作相同的类别水平特征图来实现。
在这里插入图片描述

5.总结

  我们提出了一种新的深度网络,称为“网络网络”(NIN),用于分类任务。 这种新结构由mlpconv层组成,这些层使用多层感知器对输入进行卷积,并使用全局平均池层作为常规CNN中完全连接层的替代。Mlpconv层可以更好地对局部patch进行建模,而全局平均池化层可以作为防止全局过拟合的结构正则化器。通过NIN的这两个组件,我们在CIFAR-10、CIFAR-100和SVHN数据集上展示了最先进的性能。通过对特征图的可视化,我们证明了NIN的最后一个mlpconv层的特征图是类别的证据图,这激发了通过NIN进行目标检测的可能性。

延伸

  下面的这个图是在另一篇博文中发现的,其原话是:

NIN网络是第一个提出1×1卷积核的论文,同时其也提出了Network in Network的网络概念。因为一般卷积操作可以看成特征的提取操作,而一般卷积一层只相当于一个线性操作,所以其只能提取出线性特征。所以该作者就像能否在卷积层后也加入一个MLP使得每层卷积操作能够提取非线性特征。
其实这里的MLP,指的是同一层中,不同特征层之间,同一个位置上的值的MLP
MLP,指的是同一层中,不同特征层之间,同一个位置上的值的MLP 。
其实这里的MLP,指的是同一层中,不同特征层之间,同一个位置上的值的MLP

  初步看过论文之后,自己的感觉是使用多层感知机代替了卷积层,但是参考文献[1][2]都说的是“在卷积层后也加入一个MLP”。
  于是又找了另一篇博文[3],该博文在前半部分是说“将卷积层使用MLP代替”,但在后半部分的实现中,也是在卷积层后加上了1*1的卷积。

  1. 常规卷积层: conv→relu
  2. maxout: several conv(full)→max
  3. NIN: serveral conv(full)→relu→conv(1x1)→relu

  这个实现部分与博文[1][2]都一样。暂且就认为是这样的吧。
  上面说使用MLP代替GLM,但是在实现中,却使用了11的卷积,那么接下来就介绍一下11卷积和MLP的关系。
   多层感知机可以简单的理解为一个全连接的人工神经网络。除了输入输出层,它中间可以有多个隐层。
  在我的另一篇文章中说到,可以使用1*1的卷积代替全连接层,下面是原文:

具体做法:
假设原来的卷积神经网络:输入为[224 , 224 , 3],经过一系列卷积层之后,最后一个卷积层(+池化层)的输出为[7 , 7 , 512],接下来就将输出的[7 , 7 , 512] 的feature map展开成7 * 7 * 512,再进行全连接层,全连接层的神经元数量分别为4096,1000(最后的输出结果为1000个)。
如果使用1*1的卷积来代替全连接层的话,可以:

  • 在最后一个卷积层输出的feature map为[7,7,512],我们使用一个7 * 7 * 4096的卷积核对其卷积,得到feature map为[1 , 1 , 4096].
  • 然后使用一个1 * 1 * 1000的卷积核进行卷积操作,最终得到的输出为[1,1,1000]。

  写到这里,突然间感觉上面的疑惑好像解开了,本文确实是使用MLP代替卷积层,与[1][2]说的“在卷积层后面添加一个MLP”其实是一会是。从上面1*1卷积代替全连接的过程我们可以看到,将两个全连接层转换为了2个卷积层(其中一个是1 * 1卷积),这实际上与先进行卷积再进行1 * 1的卷积是一样的。
  不知道我这样的理解是不是对的,如果有不同意见的小伙伴,关于评论交流。

参考文献:

1.https://blog.csdn.net/haolexiao/article/details/77073258
2.https://blog.csdn.net/mounty_fsc/article/details/51746111
3.http://www.voidcn.com/article/p-szdpwdhf-bpe.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值