Network-in-Network

https://zhuanlan.zhihu.com/p/125473947

论文(2014年): 链接
代码: 链接

是一篇比较老的文章了(2014年ICLR的一篇paper), 是当时比较牛逼的一篇论文, 同时在现在看来也是一篇非常经典并且影响深远的论文, 后续很多创新都有这篇文章的影子. 通常里程牌式的经典是不随时间而黯淡的, 同样值得好好学习.

NIN的结构 有两个创新点, 都是比较有里程牌意义的, 分别是MLPconv以及全局平均池化

MLP Convolution Layers

在讲之前, 我想梳理一下”历史”, 我们知道在神经网络还没有出现之前, 有个叫感知机(PLA)的东西, 它是神经网络的雏形, 它所用的激活函数叫阶跃函数, 而当激活函数使非线性函数是, 便进入到了神经网络的世界, 神经网络的一个重要性质就是 它可以自动地从数据种学习到合适的权重参数, 不同于感知机时的人工设置参数, 而神经网络的别名就是多层感知机(Multi Layer Perceptron, MLP), 即使用sigmoid等非线性激活函数的多层网络. 非线性激活函数的重要性很大, 如果使用线性激活函数, 加深神经网络的层数就没有意义了, 如下图1举例一个经典的例子

所以神经网络必须使用非线性激活函数, 神经网络出现不久, 就引进了一个叫全连接(fully-connected), 就是相邻的所有神经元之间都有连接, 但是全连接的神经网络当输入数据的尺寸比较大的时候, 会带来了一个很严重的问题, 就是参数特别多特别多多多, 于是才诞生了卷积神经网络CNN.

CNN中的卷积层中是通过线性滤波器对输入特征图进行卷积运算, 然后紧跟其后的是非线性激活函数, 这里的非线性激活函数为什么要用线性前面已经提到了原因, 就是为了让隐层变得有意义, 而线性滤波器何谓线性? 普通的卷积操作可以用一下公式来表示:

其中, w*x+b为线性变换, 函数f为非线性激励函数, 例sigmoid, tanh, ReLusigmoid, tanh, ReLu等, 从公式中可以看到, 普通的卷积过程是一个线性变化, 可以简单地理解线性就是”直线”, 这是一种线性滤波器, 它一个广义线性模型(generalized linear model GLM),当样本的隐含概念(latent concept, )