本文是2014年ICLR上一篇非常有名的文章,作者Min Lin , Qiang Chen , Shuicheng Yan 来自于新加坡国立大学。本文提出了一个network in network的架构用以提升小batch的辨别能力。本文主要提出了两个创新点:MLPCONV和GAP(全局平均池化)。
文章刚开始介绍传统CNN的结构,就是卷积层和池化层交替组成,卷积层就是一个GLM(广义线性模型),作者认为线性模型对于潜在的线性可分的概念能够很好的提取特征进行分类,但是对于真实案例很难进行分类,所以想要用一个MLP代替卷积层的线性操作。MLP是一个通用的近似函数而且可以用反向传播算法进行训练,还可以很好的嵌入到CNN中。
模型:
Mlpconv:传统的CNN网络卷积层之后会添加非线性激活函数层(relu),,所以针对于线性可分的实例传统CNN网络是可以完成分类工作,添加卷积核的channel就可以,但增加滤波器会是的模型下层负担增加。所以我们引入了mlpconv结构,结构图对比如下图。
Mlpconv是在CNN中嵌入感知机,所以整体的运算结构是:
根据上式可以拟合任意函数,利用非线性的特性更好的提取特征,这里,就是将mlp和卷积核一起沿着图像滑动,输入全连接,输出一个神经元对应一个输出值,所以中间的mlp就相当于提前进行了一个全连接处理,但这里的参数量要比CNN最后全连接的参数量少很多。
GAP:全局平均池化,传统的CNN最后总要有几层全连接,用于更好的分类,但是全连接层增加了大量的参数,整个卷积网络80%的参数都是在全连接层,所以本文将全连接用GAP代替。GAP就是将每个特征图求平均值形成一个特征点输出到softmax分类器,使得参数数量急剧减少,原理如下图所示。所以比较传统CNN(Alexnet)230M的参数量,本文模型的参数量只有29M。不仅如此,GAP还可以减少过拟合的发生。
NIN结构:采用三个mlpconv,结构如下图。
实验
作者在 CIFAR-10 , CIFAR-100 , SVHN and MNIST四个数据集上进行实验,采用上图所示的改进结构。
CIFAR-10,实验结果如下图所示,加dropout层会降低错误率,数据增强也能提高,我们的NIN模型加dropout和数据增强得到了一个最好的结果。
CIFAR-100,这个数据集包含100个种类的图片,所以准确率较低,如下图。
SVHN,数据集由630420张32*32的图片组成,数据集、验证集和测试集组成,分类结果如下图,文章的模型错误率是2.35%,最好的结果是13年的DropConnect模型。
MNIST,手写体数字识别的数据集,较为简单,所以错误率低,具体结果如下图,卷积层和maxout再加dropout可以得到最好的结果。
GAP对比,作者对于模型是否采用GAP进行对比实验,如下图,结果说明GAP结构可以提升准确率。
NIN提出的两个改进点在接下来的模型中应用广泛,例如GooLenet,就应用了1*1的卷积和GAP结构,使得分类效果大幅度提升。Resnet、fast rnn等近些年的网络都弃全连接改用GAP结构。