2018-09-26 NIN学习

googlenet网络结构设计很大程度上借鉴了2014年 ICLR 的paper,Network In Network(以下简称 NIN )。这篇 paper 改进了传统的CNN 网络,采用了少量参数进一步提高了 CIFAR-10、CIFAR-100 等数据集上的准确率,其提出的网络结构是对传统CNN 网络的改进:

多层感知卷积层(Mlpconv Layer):使用 Conv+MLP 代替传统卷积层,增强网络提取抽象特征和泛化的能力;

全局平均池化层(Global AveragePooling):使用平均池化代替全连接层,很大程度上减少参数空间,便于加深网络和训练,有效防止过拟合。

1.它对传统的卷积加入了MLP算法

相对传统的卷积层过程,Mlpconv 层可以看成是每个卷积的局部感受野中还包含了一个微型的多层网络:

将MLP与Maxout对比,下图说明一般CNN、Maxout、MLP计算过程:


2018-09-26 NIN学习_第1张图片

maxout,有k个的3x3的w(这里的k是自由设定的),分别卷积得到k个1x1的输出,然后对这k个输入求最大值

NIN,有k个3x3的w(这里的k也是自由设定的),分别卷积得到k个1x1的输出,然后对它们都进行relu,然后再次对它们进行卷积,结果再relu。(这个过程,等效于一个小型的全连接网络)

maxout和NIN都是对传统conv+relu的改进。

maxout想表明它能够拟合任何凸函数,也就能够拟合任何的激活函数(默认了激活函数都是凸的)

NIN想表明它不仅能够拟合任何凸函数,而且能够拟合任何函数,因为它本质上可以说是一个小型的全连接神经网络。

1*1 卷积层 对往后的网络设计产生了深远的影响,同期的 VGG 也在网络中用于线性变换,但输入通道数和输出通道数不变,没有发生降维;在 GoogleNet 和 ResNet 上也使用了1*1 卷积层,不仅可以跨通道组织信息,提高网络的表达能力,同时可以对输出通道升维和降维。


2018-09-26 NIN学习_第2张图片
MLP与传统线性卷积比较


2018-09-26 NIN学习_第3张图片
https://www.cnblogs.com/makefile/p/nin.html给出的例子

2.Global AveragePooling

传统的cnn是在较低层使用卷积,如分类任务中,最后的卷积层所得feature map被矢量化进行全连接层,然后使用softmax 回归进行分类。一般来说,在卷积的末端完成的卷积与传统分类器的桥接。全连接阶段易于过拟合,妨碍整个网络的泛化能力,一般应有一些规则方法来处理过拟合。

在传统CNN中很难解释最后的全连接层输出的类别信息的误差怎么传递给前边的卷积层.而global average pooling更容易解释.另外,全连接层容易过拟合,往往依赖于dropout等正则化手段.

global average pooling的概念非常简单,分类任务有多少个类别,就控制最终产生多少个feature map.对每个feature map的数值求平均作为某类别的置信度,类似FC层输出的特征向量,再经过softmax分类.其优点有:

参数数量减少,减轻过拟合(应用于AlexNet,模型230MB->29MB);

更符合卷积网络的结构,使feature map和类别信息直接映射;

求和取平均操作综合了空间信息,使得对输入的空间变换更鲁棒(与卷积层相连的FC按顺序对特征进行了重新编排(flatten),可能破坏了特征的位置信息).

FC层输入的大小须固定,这限制了网络输入的图像大小.


2018-09-26 NIN学习_第4张图片
FC与global average pooling的区别


主要是看论下面两个博客,不懂的就回过头看看。



https://blog.csdn.net/qq_35608277/article/details/79192569

 https://www.cnblogs.com/makefile/p/nin.html

你可能感兴趣的:(2018-09-26 NIN学习)