1 模型介绍
Network In Network (NIN)是由等人于2014年提出,在CIFAR-10和CIFAR-100分类任务中达到当时的最好水平,其网络结构是由三个多层感知机堆叠而被成。NiN模型论文《Network In Network》发表于ICLR-2014,NIN以一种全新的角度审视了卷积神经网络中的卷积核设计,通过引入子网络结构代替纯卷积中的线性映射部分,这种形式的网络结构激发了更复杂的卷积神经网络的结构设计,GoogLeNet的Inception结构就是来源于这个思想。
2 MLPConv
作者认为,传统CNN使用的线性滤波器(卷积核)是局部感受野下的一种广义线性模型(Generalized linear model,GLM),所以用CNN进行特征提取时,其实就隐含地假设了特征是线性可分的,可实际问题往往是难以线性可分的。CNN中通过堆加卷积过滤器来产生更高层的特征表示,作者想到了除了像之前一样堆加网络卷积层之外,还可以在卷积层里边做特殊的设计,即使用更有效的非线性函数逼近器(nonlinear function approximator),来提高卷积层的抽象能力使得网络能够在每个感受域提取更好的特征。
NiN中,在卷积层中使用了一种微型网络(micro network)提高卷积层的抽象能力,这里使用多层感知器(MLP)作为micro network,因为这个MLP卫星网络是位于卷积网络之中的,因此该模型被命名为“network in network” ,下图对比了普通的线性卷积层和多层感知器卷积层(MlpConv Layer)。
线性卷积层和MLPConv都是将局部感受野(local receptive field)映射到输出特征向量。MLPConv核使用带非线性激活函数的MLP,跟传统的CNN一样,MLP在各个局部感受野中共享参数的,滑动MLP核可以最终得到输出特征图。NIN通过多个MLPConv的堆叠得到。完整的NiN网络结构如下图所示。
第一个卷积核是,因此在一个patch块上卷积的输出是的feature map(一个96维的向量)。在其后又接了一个MLP层,输出仍然是96,因此这个MLP层就等价于一个的卷积层。模型参数配置可参考下表。
网络层 | 输入尺寸 | 核尺寸 | 输出尺寸 | 参数个数 |
---|---|---|---|---|
局部全连接层 | ||||
全连接层 | ||||
局部全连接层 | ||||
全连接层 | ||||
局部全连接层 | ||||
全连接层 | ||||
全局平均采样 |
在NIN中,经过三层MLPConv后,不接全连接层(FC),而是将最后一个的MLPConv的输出特征图全局平均池化(global average pooling,GAP)。下文对全局平均池化层做具体介绍。
3 Global Average Pooling
传统的CNN模型先是使用堆叠的卷积层提取特征,输入全连接层(FC)进行分类。这种结构沿袭自LeNet5,把卷积层作为特征抽取器,全连接层作为分类器。但是FC层参数数量太多,很容易过拟合,会影响模型的泛化性能。因此需要用Dropout增加模型的泛化性。
这里提出GAP代替传统的FC层。主要思想是将每个分类对应最后一层MLPConv的输出特征图。对每个特征图取平均,后将得到的池化后的向量softmax得到分类概率。GAP的优点有:
- 加强了特征映射和类别之间的对应,更适合卷积神经网络,特征图可以被解释类别置信度。
- GAP层不用优化参数,可以避免过拟合。
- GAP对空间信息进行汇总,因此对输入数据的空间变换有更好的鲁棒性。
可以将GAP看做一个结构正则化器,显性地强制特征图映射为概念置信度。
4 模型特性
- 使用多层感知机结构来代替卷积的滤波操作,不但有效减少卷积核数过多而导致的参数量暴涨问题,还能通过引入非线性的映射来提高模型对特征的抽象能力。
- 使用全局平均池化来代替最后一个全连接层,能够有效地减少参数量(没有可训练参数),同时池化用到了整个特征图的信息,对空间信息的转换更加鲁棒,最后得到的输出结果可直接作为对应类别的置信度。