NIN:Network In Network
通过引入子网络结构代替纯卷积中的线性映射部分,替换传统卷积模式 (卷积 + 激活 + Dropout) 的卷积方式;结尾使用全局池化替代 Dropout,提高泛化能力的同时,减小网络
什么是 NIN?
- Network In Network (NIN) 以一种全新的角度审视了卷积神经网络中的卷积核设计,通过引入子网络结构代替纯卷积中的线性映射部分, 替换传统卷积模式 (卷积 + 激活 + Dropout) 的卷积方式;结尾使用全局池化替代 Dropout,提高泛化能力的同时,减小网络
NIN 的网络结构?
- NIN 包括 3 层 mlpconv layer+1 层全局池化 (Global Pooling)
- 在网络推理(inference)时,这个多层感知器会对输入特征图的局部特征进行划窗计算,并且每个划窗的局部特征图对应的乘积的权重是共享的,这两点是和传统卷积操作完全一致的,最大的不同在于多层感知器对局部特征进行了非线性的映射,而传统卷积的方式是线性的
NIN 的损失函数?
- 网络分类层前一层为 6x6x1000,对其进行全局池化 (Global Pooling) 后,生成 1000 长度的一维向量,最后使用交叉熵损失 (CrossEntropyLoss) 计算损失
mlpconv layer 的原理?
在不存在 mlp 层是,卷积层如图绿色线进行计算,加入 mlp 层后,如何人理解红色线?
上图标准卷积的输出是 55x55x96,经过 mlp 加工后,输出仍然是 55x55x96。mlp 的计算过程如下图,mlp 连接 1 个卷积核大小(实际上没有卷积核计算,全连接直接连接像素)内每个位置特征,对其进行加权处理后,得到 1 个值,当卷积核扫描完之后,得到和 55x55 长度的特征
mlp 连接卷积层的输入与输出特点
输入为一个 feature map, 输出为一个 feature map 时
输入为多个 feature map, 输出为一个 feature map 时
输入为多个 feature map, 输出为多个 feature map 时
在 Mlpconv 中,不同的 feature map 之间的开头与能结尾之间的权值不一样,而在隐含层之间的权值是共享的;通过后面两张图可知,全连接的作用很像深度可分离卷积 (depthwise separable convolution) 中的 pointwise (1x1 卷积) ,即使用同一个权重,整合不同特征图上的信息到同一张特征图上,所以实现时,使用 1x1 卷积替代全连接
mlpconv 层的 Pytorch 实现:实际上就是卷积层 + 2 个 1x1 卷积
全连接嵌套在中间,输入 shape 是不定的,如何确保全连接对上 CNN 输出?
- 全连接每次计算不是接上一层的所有 featrue map,而是连接固定大小搜索框的所有像素,所以其输入大小是固定的
卷积层和广义线性模型 (GLM) 的关系?
- 标准卷积 (Convolution) 的滤波器对一个接收域做卷积时,卷积核对其进行加权求和,然后接一个激活函数,这样的操作做可以看作是广义线性模型 (GLM)
- 对于线性可分的问题来说,CNN 或许可以提取特征,但是对更复杂问题就无能为力了
NIN 如何使用全局池化?
- 一般来说,卷积神经网络会使用全连接层作为分类层,而 NIN 在最后的分类层使用全局池化 (Global Pooling) ,如分类层前的输出是 6x6x10,全连接作为分类层时,首先是将特征展平为 6x6x10=360 长度的特征,然后再使用全连接;而全局池化直接对 10 个特征图进行池化,得到 10 个值,作为 10 分类分类的概率
- 使用全局池化后,NIN 网络比使用全连接作为分类层模型效果更好
NIN 全局池化分类的特张图有什么特点?
- 上图横向为示例图片,纵向为每个图最后一层 mlpconv 的输出 (6x6x10),输入全局池化 (Global Pooling) 前,通过上图看不同图片对应每个类别的响应位置
- 可以看出,响应位置集中在标签附近 (对角线)
相比较 LeNet、AlexNet 和 VGG,NiN 有什么不同?
- LeNet、AlexNet 和 VGG 都有一个共同的设计模式:通过一系列卷积和池化层利用空间结构提取特征,然后通过完全连接层对表示进行后处理,AlexNet 和 VGG 对 LeNet 的改进主要在于这些后期网络如何扩展和深化这两个模块
- NIN 提供了另一种选择。它们是基于一个非常简单的观点提出的:在每个像素的通道上分别使用 MLP
NiN 比较 AlexNet 有什么提升?
- 采用较少参数就取得了 AlexNet 的效果,AlexNet 参数大小为 230M,而 Network In Network 仅为 29M
- Network In Network 通过创新的创建 MLP 卷积层,提高了网络的非线性表达同时降低了参数量,用全局均值池化代替全连接层,极大的降低了参数量
NiN 与 VGG 比较有什么差异?
- NiN 块由一个卷积层和两个卷积层组成 1×11×1 卷积层充当具有 ReLU 激活的每像素全连接层