(2013, NIN)Network in Network

1. 论文亮点一

这是在VGG-Net和GoogleNet之前提出的一个CNN分类模型,在我看来,这篇论文最大的亮点是:

  • 提出使用全局平均池化层 ,取代经典CNN分类器如AlexNet、LeNet-5中的全连接层。

传统的CNN分类网络如AlexNet、LeNet-5,甚至2014年出现的VGG-Net,其典型架构是:

  • 网络浅层部分执行一系列卷积/下采样操作,用于提取图像的抽象特征,充当一个特征提取器(feature extractor);
  • 网络顶层部分是一个传统的全连接层/多层感知机MLP,充当一个分类器(classifier)。
  • 特征提取器部分的最后一层输出的feature map,经过向量化(vectorized)后喂入分类器执行分类任务,最后通过一个softmax层输出类别概率。

这类网络架构的一个显著特点是模型的参数数量大得惊人。

  • AlexNet包含约6000万个模型参数,其中最后一个全连接层输出的feature map尺寸为256x6x6。那么全连接层部分产生的权重数量(不算bias)=256x6x6x4096+4096x4096+4096x1000=5862万,即全连接层占了整个模型参数的97.7%;

我们知道,网络的模型参数越多,模型越容易过拟合,那么,如果为什么不把全连接层给砍掉呢?这是NIN网络做的一个重大贡献。

那问题来了,用什么层来代替全连接层,执行分类器的职责?

论文使用了一个全局平均池化层。嗯,这种做法很CNN。

2. 论文亮点二

NIN网络第二个亮点是:

  • 使用mlpconv层取代了传统的conv层

mlpconv层长什么样子?

如下图所示:


(2013, NIN)Network in Network_第1张图片

左边是传统的卷积层/conv层,右边是mlpconv层。从实现上面来讲:

  • 一个mlpconv层相当于在一个普通的conv层之后,又接了两个1x1的卷积层。嗯,一个mlpconv层其实就是将3个卷积层堆叠起来:第一个卷积层的卷积参数和普通conv层一致,接下来的两个卷积层的卷积核固定为1x1,步长stride=1,no padding,输出通道数和第一个卷积层一致。当然,每一个卷积层之后都接了一个Relu非线性层。这样后面两个1x1的卷积操作就类似于一个多层感知机/mlp,这是mlpconv层取名的由来;
  • 另外,mlpconv层本身就是一个微型网络(micro network),所以整个分类网络是由一个个微型网络堆叠在一起组成的,这是这篇论文名称network in network的由来。

下图是论文中提出的NIN网络结构:


(2013, NIN)Network in Network_第2张图片

整个NIN分类网络由3个堆叠的mlpconv层,最后接一个全局平均池化层构成。

3. 为什么mlpconv层比普通的conv层更好?

论文中的回答:

CNN中的卷积层是一个通用的线性模型(generalized linear model,GLM),使用GLM对图像内容的抽象化程度较低。使用一个非线性的函数近似器来代替GLM可以提高模型的局部建模能力,众所周知,包含一个隐藏层的多层感知机/mlp是一个万能的函数近似器。因此,作者选择了一个多层感知机来代替卷积层,用于更好地提取图像的局部特征。

我的理解:

从实现角度来讲,一个mlpconv层其实包含了3个卷积层(1个普通卷积层+2个1x1卷积层),这样,普通卷积层用于提取图像的局部特征,1x1卷积层用于进一步融合/抽象不同通道的feature map中提取到的特征。另外,由于每一个卷积层后面都有一个Relu非线性层,那么一个mlpconv层其实执行了3层Relu非线性操作,和传统的conv层相比(1个卷积层+1个Relu层),这使得模型对于非线性决策函数的建模得到增强。

更一般的讲,我觉得mlpconv层其实也就是增加了卷积层数量,从VGG-Net中可以看到卷积网络的深度对CNN网络的性能至关重要。

因此,实际上NIN做的事情就是使用的更多的卷积层,提取到了图像中更高级/抽象的语义特征。caffe的model zoo里面有一个用于ImageNet数据集的NIN结构,如下图所示:

(2013, NIN)Network in Network_第3张图片

该NIN网络包含了4个mlpconv层,从卷积层数量来讲,该NIN网络包含了4x3=12个卷积层(虽然1x1的卷积层不能增强CNN网络的感受野,但是也融合了不同通道中不同feature map的特征,也具有一定的抽象能力),和包含5个卷积层的AlexNet相比,该NIN模型的表现稍优。

4. 为什么最后可以直接对卷积特征执行全局平均池化得到分类结果?

虽然引入了dropout层后,使用卷积层+全连接层的CNN网络架构在AlexNet上面取得了成功,并且该类结构设计在后来的VGG-Net上面达到了巅峰。但是这也不能掩盖全连接层会造成模型的参数量剧增的事实,超大的模型复杂度使得模型更容易过拟合,阻碍了模型的泛化性能。

这篇论文提出了使用全局平均池化层来代替传统的全连接层:

  • 其思想是:在最后一个mlpconv层,针对每一个目标类别生成一个feature map;
  • 具体实现是:在最后一个1x1卷积时,将feature map的输出通道设置来和模型的分类类别数一致,比如针对ImageNet的1000分类,那么上图中,最后的cccp8-1024卷积层的输出通道就设置为1000,这样,不同通道的feature map就和相应的类别一一对应,最后通过计算每一个通道的feature map的平均值(即全局平均池化层),喂入softmax层,直接得到每个类别的概率;
  • 其实,对于CNN网络来说,使用全局平均池化层的思想更加自然。这相当于在某个类别和对应的feature map之间建立了一一对应的关系,这样,对应的feature map就可以解释为相应类别的置信度映射(confidence map)。对于非常深的CNN网络来说,最后一个卷积层的feature map已经是对图像内容的高度抽象(嗯,前提是得使用很多个卷积层,得到比较高级的语义特征),因此直接使用最后一层的feature map的平均值就能反应图像所属的类别。

5. 总结

NIN网络有两个突出亮点:

  • 使用全局平均池化层代替传统的全连接分类层,可以直接对前面用卷积层提取到的高度抽象的feature map进行分类。另一个重大的好处是,全局平均池化层不包含模型参数。极大地降低了模型的参数数量,相当于网络的一个结构化的正则器(structural regularizer),使得模型复杂度大大降低,泛化性能增强。
  • mlpconv层的使用,其实NIN对人们最重要的启发并不是mlpconv层,说白了其实也就是将卷积层数加深了,Relu层的增多使得模型的建模能力增强。NIN对人们最重要的启发其实是1x1卷积层的使用(有意思的是,NIN中仅仅使用1x1的卷积层来加深网络,提高模型的建模能力),后面的Inception系列和ResNet系列都大量的使用了1x1卷积,因为1x1卷积不仅可以进一步融合不同通道的特征之外,还可以灵活地对feature map的通道数进行升维和降维,典型的是使用1x1卷积降低feature map的通道数,从而减少下一层卷积操作产生的模型参数。具体在GoogleNet里面体现的很直观。关于1x1卷积层的讨论可以参考这个论坛。

这两大亮点,足以使得NIN这篇论文成为经典。

你可能感兴趣的:((2013, NIN)Network in Network)