1. CNN
- CNN中的滤波器是一种广义的线性模型(GLM),它的抽象水平较低,而抽象可以使特征具有不变性。要让GLM有好的抽象,样本中隐含的概念必须是线性可分的。因此一般的CNN默认的先验是样本中隐含概念是线性可分的,而实际情况往往是非线性可分的。为了弥补这一缺点,一般的CNN会使用一些过完备的滤波器来探测所有隐含概念的变种(即需要很多个滤波器探测同样的隐含概念的不同变种),而这样会使得高层因为考虑所有变种的组合而负担过重。而如果在每一个局部单元中有更好的抽象,就会在高层组合概念的过程中受益。在NIN中将GLM替换成更强的非线性微网络(micro network)可以增强抽象能力。这种微网络需要可以逼近任何连续的函数,可以选择MLP(称为mlpconv层),它同时可以使用BP来训练。
- 和一般的卷积层一样,mlpconv层也可以将局部感受野映射输出为特征,通过在输入中滑动即可得到特征图,其中的MLP在所有感受野中共享。在mlpconv层中MLP是基本元素,如同CNN中的滤波器。在NIN中mlpconv层是基本层,mlpconv层堆叠就构成了NIN。
- 不使用一般CNN中使用的全连接层做分类,而是直接将最后mlpconv层特征图经过一个全局平均池化层(空间平均)来输出类别分数向量,最后送入softmax层。一般CNN由于全连接层被看作为一个黑盒而不能理解类别信息如何反向传播到之前的卷积层,而全局平均池化层增强了类别和特征图之间的关联。另外全连接层容易过拟合并强烈依赖dropout来正则化,而全局平均池化层自身就是一个结构化的正则项防止过拟合。
- maxout网络中,特征图的减少是通过在仿射特征图上进行跨通道最大池化来实现的,多个线性函数的最大化可以得到分段线性函数去逼近任意的凸函数,因而它可以分割凸集中的隐含概念。但需要满足隐含概念分布在凸集上的先验,而这并不总是成立的。
使用relu的卷积层特征图的某一个点表示为
其中(
i,j
)表示特征图的位置索引,
xi,j
表示位置索引为(
i,j
)的输入小片(patch),
k
表示本层特征图数量(通道数)的索引。
- 对上一层32个特征图的相同位置( i,j )的3 × 3小片上用32个3 × 3的滤波器卷积求和后,就输出了本层1张特征图中的1个单像素节点。
- 同时移动所有3 × 3的滤波器到所有的位置上,就输出了本层1张特征图。
- 将上述过程重复64次就可以得到本层64张特征图。
使用maxout层特征图的某一个点表示为
其中
m
表示每个隐层节点对应了
- 对上一层32个特征图的相同位置( i,j )的3 × 3小片上用32个3 × 3的滤波器卷积求和后生成1个单像素的“隐隐层”节点,重复5次就可以生成5个这样的节点。
- 在这5个“隐隐层”节点中选择最大值,就输出了本层1张特征图中的1个单像素节点。
- 同时移动所有3 × 3的滤波器到所有的位置上,就输出了本层1张特征图。
- 将上述过程重复64次就可以得到本层64张特征图。
2. NIN
1. MLP卷积层
- 选择MLP的两个原因:它与CNN的结构相符,可以使用BP训练,并且它自身也可以是深层网络,这符合特征重用的思想。
使用relu的mlpconv层中MLP各层的某一个点表示为
其中
n
表示MLP的层数,
- 将上一层1个特征图位置为( i,j )的3 × 3小片展开成为长度9的向量,此向量全连接到MLP的16隐层,隐层全连接到1个输出得到1个单像素节点。
- 上一层有32个特征图,那么最后会有32个这样的单像素节点用来求和,就输出了本层1张特征图中的1个单像素节点。
- 同时移动所有3 × 3的MLP输入层到所有的位置上,就输出了本层1张特征图。
- 将上述过程重复64次就可以得到本层64张特征图。
如果从跨通道池化的角度看,上述过程可以看作在一般的卷积层后面级联一系列参数化跨通道池化,每一个池化都对输入特征图进行加权线性重组,接着经过一个relu单元。跨通道池化可以理解为将上一层特征图所有通道的同一位置像素,全连接到下一层特征图的同一位置像素,像素在不同位置移动就得到了下一层特征图。这样的级联的参数化跨通道池化也等价于使用1 × 1滤波器的卷积层,它不仅可以利用卷积操作将跨通道特征图全连接,还可以将一般的MLP全连接转化为1 × 1卷积层。比如输入(10, 25),全连接参数(25, 16),则可转化为(10, 25, 1, 1)卷积(16, 25, 1, 1)。
对于上一层32通道,本层有64通道,MLP隐层16的例子而言,其实现过程如下:
- 输入特征图(32, h, w)
- 使用一般的卷积层(16, 32, 3, 3),得到输出(16, h, w),其中16是MLP隐层单元个数
- 后接1 × 1卷积层(64, 16, 1, 1),得到输出(64, h, w),其中64是输出特征图个数
其参数共有 w∈R16×32×3×3 + 64×16×1×1 ,可见与之前分析不同。原因是在跨通道池化的过程中,参数两次发生了共用:第一次是64个输出通道使用了同样的卷积参数,因而 w1∈R64×16×32×3×3→R16×32×3×3 ,第二次是32个通道共用了跨通道池化参数,因而 w2∈R64×32×16×1×1→R64×16×1×1 。因此这样的实现和真正的MLP卷积层有所区别。
2. 全局平均池化
- 一般的CNN在顶层会展开成向量,然后输入到全连接MLP中最后到softmax层用于分类。这种结构将CNN和MLP联系到一起,CNN作为特征提取器,MLP作为分类器。但是全连接的MLP容易过拟合,应该配合dropout。
- 全局平均池化代替全连接MLP:在最后的mlpconv层输出和类别数量相同的特征图,然后取每张特征图的平均,最后得到的向量输入softmax层用于分类。
- 对比:全局平均池化与全连接MLP都是对特征图的非线性变换,只是变换矩阵不同。全局平均池化的变换矩阵固定且仅有对角线上非零且为同值,而全连接MLP则有着复杂的变换关系。实验得出全局平均池化的正则效果比全连接MLP+dropout效果更好,且在一般的CNN中具有通用性。
- 优点:对于卷积结构加强了特征图与类别之间的关联性,并且没有需要优化的参数从而避免过拟合,另外,将空间信息相加可以提高对输入中空间变化的鲁棒性。
3. 实验结果
- 所有的实验都使用3个mlpconv层,每一个mlpconv层后接一个最大池化层(降采样为一半)。
- 除了最后一个mlpconv层,每个mlpconv层后都有dropout。
- 顶层全部使用全局平均池化代替全连接MLP。
- 正则项使用权值衰减(weight decay)同
ImageNet Classification with Deep Convolutional Neural Networks
。 - 预处理、验证集分割同
Maxout Network
。
1. CIFAR-10
每层特征图数量选择和Maxout Network
相同,局部感受野和权值衰减2个超参数使用验证集选择。接着固定超参数使用训练集所有数据进行重新训练。10.41%(不使用扩充数据集)8.81%(使用平移、水平翻转的扩充数据集)
2. CIFAR-100
不改变超参数,唯一区别是输出100个特征图。35.68%(不使用扩充数据集)
3. SVHN
结构同CIFAR-10。2.35%(不使用扩充数据集)
4. MNIST
结构同CIFAR-10。0.47%(不使用扩充数据集)