博客:blog.shinelee.me | 博客园 | CSDNpython
《Network in Network》简称NIN,出自颜水成老师团队,首次发表在arxiv的时间为2013年12月,至20190921引用量为2871(google scholar)。网络
NIN的网络结构还是在AlexNet基础上修改而来,其主要创新点以下:ide
本文将依次介绍上面的创新点,同时顺带介绍 全链接 与 卷积的关系、全链接与GAP的关系,最后给出NIN的网络结构。post
论文中讲,mlpconv layer使用一个小的全链接神经网络替换掉卷积,convolution layer与mlpconv layer对比示意图以下,性能
对于convolution layer,假设有N个kernel,每一个kernel的尺寸为\(k \times k\),卷积操做将每一个\(k \times k\)大小的local recptive field / local patch线性映射为N个输出,汇总全部local patch的卷积结果获得N个feature map。学习
对于mlpconv layer,使用micro network替换掉卷积,经过micro network将每一个\(k \times k\)的local patch非线性映射为N个输出,汇总后仍获得N个feature map。文中说micro network为小的全链接神经网络,但在实现时,这个全链接神经网络倒是经过几个卷积层实现的,为何呢?由于全链接能够转化成卷积。测试
下面为《Dive into Deep Learning》中提供一个NIN block(mlpconv layer)的mxnet实现,google
from mxnet import gluon, nd from mxnet.gluon import nn def nin_block(num_channels, kernel_size, strides, padding): blk = nn.Sequential() blk.add(nn.Conv2D(num_channels, kernel_size, strides, padding, ctivation='relu'), nn.Conv2D(num_channels, kernel_size=1, activation='relu'), nn.Conv2D(num_channels, kernel_size=1, activation='relu')) return blk
一个NIN block经过1个卷积层和2个\(1 \times 1\)卷积层堆叠而成,这3个卷积层的输出channel数相同。对于第1个卷积层,由于kernel_size与local patch大小相同,因此对每个local patch而言,这个卷积等价于全链接,共num_channels个输出,每一个输出与local patch全链接的权重就是对应的整个卷积核,卷积核的数量也为num_channels。对于后面2个\(1\times 1\)的卷积层,输入都是num_channels维的向量,即num_channels个\(1\times 1\)的feature map,kernel_size与整个feature map的尺寸相同,这个\(1\times 1\)的卷积也就至关于全链接了。经过\(1\times 1\)的卷积实现了不一样卷积核结果间的信息交流。spa
实际上,经过调整\(1\times 1\)卷积核的数量,能够在不改变输入feature map尺寸和感觉野的状况下,灵活地增长或减小feature map的channel数量,引入更多的非线性,表达能力更强,在实现feature map间信息交流的同时,得到信息的压缩或增广表示。
卷积神经网络的经典作法是 数个卷积层+几个全链接层,典型视角是将前面的卷积层视为特征提取器,将全链接层视为分类器。卷积层的计算量高但参数少,全链接层的计算量少但参数多,一种观点认为全链接层大量的参数会致使过拟合。做者提出了Global Average Pooling(GAP),取代全链接层,最后一层mlpconv layer输出的feature map数与类别数相同,对每个feature map取平均,全链接层与GAP的对好比下图所示,图片来自Review: NIN — Network In Network (Image Classification),GAP的结果直接输给softmax获得每一个类别的几率。
去掉全链接的GAP强制将feature map与对应的类别创建起对应关系,softmax至关于分数的归一化,GAP的输出能够当作是与每一个类别类似程度的某种度量,GAP的输入feature map能够解释为每一个类别的置信度图(confidence map)——每一个位置为与该类别的某种类似度,GAP操做能够当作是求取每一个类别全图置信度的指望。由于只有卷积层,很好地保留了空间信息,增长了可解释性,没有全链接层,减小了参数量,必定程度上下降了过拟合。
最后一层mlpconv layer输出的feature map以下,能够看到图片label对应的feature map响应最强,强响应基本分布在目标主体所在的位置。
此外,做者还作将GAP与全链接层、全链接+dropout对比,在CIFAR-10库上的测试结果以下,
GAP能够当作是一种正则,全链接层的参数是学习到的,GAP能够当作是权值固定的全链接层。上面的实验说明,这种正则对改善性能是有效的。
论文中给出的总体网络结构以下,
论文中没有给出具体的参数配置,实际上,NIN还是在AlexNet基础上修改而来,至关于在AlexNet的每一个卷积层后插入2个\(1\times 1\)卷积层,移除了Local Response Norm,同时用GAP替换掉全链接层。在这里,mlpconv layer既能够当作是加强了原conv layer的表达能力,也能够当作增长了网络深度。