因为在 YOLO 里面看到了使用 Global Average Pooling 替换全连接层,同时也在其他网络里面发现也都使用了 Global Average Pooling 替换全连接层。因此,打算来读一下这篇提出了 Global Average Pooling 的 Network in Network。

封面来源《9nine》

前言

  Network in Network(下面简称 NIN)认为 CNN 中的卷积核是基础数据补丁的广义线性模型(GLM),同时他认为 GLM 的抽象层次比较低。用更有效的非线性函数逼近器代替 GLM,可以提高局部模型的抽象能力。当潜在概念的样本线性可分离时,GLM 可以达到很好的抽象程度,即概念的变体都存在于 GLM 定义的分离平面的一侧。因此,传统的 CNN 隐式地假设潜在概念是线性可分的。然而,同一概念的数据往往存在于非线性流形上,因此捕获这些概念的表示通常是输入的高度非线性的函数。在 NIN 中使用了一种通用的非线性函数逼近器的 “微型网络” 结果来替代 GLM。在 NIN 一文中就是选择了多层感知器 MLP 作为非线性函数逼近器。
  在 NIN 一文中提出了两个创新点:Mlpconv 和 Global Average Pooling

Mlpconv

  在没有关于潜在先验分布的情况下,使用通用函数逼近器来提取局部补丁的特征是可行的,因为它能够逼近潜在概念的更抽象的表示。径向基网络(Radial basis network)和多层感知器(multilayer perceptron)是两个知名的通用函数逼近器。NIN 一文中选择使用多层感知是基于以下两个原因。这种新型的层就叫做 mlpconv。

  1. 多层感知器和卷积神经网络一样,都是通过反向传播进行训练
  2. 多层感知器自身也是一个深度模型,符合特征再利用的原则

传统卷积


GLM 中的卷积结构如上图所示,以激活函数为 Relu 为例子,其计算如下

fi,j,k=max(ωkTxi,j,0)f_{i,j,k} = max(\omega_k^Tx_{i,j},0)

mlp 卷积


mlp 中的卷积格式如上所示,以 Relu 激活函数为例子,其计算公式如下

fi,j,k11=max(ωk11Txi,j+bk1,0)fi,j,knn=max(ωknnTfi,jn1+bkn,0)\begin{matrix} f_{i,j,k_1}^1 = max({\omega_{k_1}^1}^Tx_{i,j}+b_{k_1},0)\\ \vdots \\ f_{i,j,k_n}^n = max({\omega_{k_n}^n}^Tf_{i,j}^{n-1}+b_{k_n},0) \end{matrix}

  这种跨通道参数池化层与 1×1 的卷积核等效,实际上就是 1×1 的卷积实现。这使得 NIN 的结构容易理解。

关于 1×1 卷积

conv
  卷积核的计算如上图所示,输出通道与卷积核的个数是相等的。对于输入单通道的单个 1×1 卷积核,此时就相当于 feature map 乘以一个系数,而当输入为多个通道的时候,相当于把多个 feature map 线性加权求和再通过一个激活函数,其功能与全连接相似,权重共享,参数更少。

Global Average Pooling

  传统的卷积神经网络在做分类任务的时候,会对最后一个卷积层得到的特征图向量化并送入全连接层,再经过一个 softmax 逻辑回归。但是全连接层容易过拟合,阻碍网络泛化性,直到 Hinton 等人提出 dropout,提升了其泛化能力,预防过拟合。
  NIN 中提出了另一种策略,也就是全局平均池化来替代全连接。在最后一个 mlpconv 层生成的每张特征图直接求平均,得到结果向量输入到 softmax。全局平均池化相比全连接层的优点在于通过增强特征图与类比间的对应关系使卷积结构保留的更好,使特征图分类是可信的得到很好的解释;另一个优点是全局平均池化层中没有参数需要优化,因此避免了过拟合;此外,全局平均池化汇聚了空间信息,所以对输入的空间转换更有鲁棒性。

总结

  1. 改变卷积结构,使用 1×1 卷积,相当于一个微型的全连接层,提高卷积层抽象能力。
  2. 使用全局平均池化替代全连接避免过拟合,对输入的空间转换更有鲁棒性。

参考

[1] Lin M , Chen Q , Yan S . Network In Network[J]. Computer Science, 2013.