Network in Network笔记

Network in Network是2014年的ICLR的非常厉害的一篇paper。是对传统的CNN的一种改进。

1、摘要

  • 提出了NIN的深度网络结构来增强模型在感知野在局部图像块的辨别力。
  • 传统的conv layer使用线性过滤器之后紧跟一个非线性激活函数的方法来扫描输入,而论文使用micro networks with more complex structures to abstract the data within the receptive field。
  • feature maps的获取是通过在输入上sliding micro networks over the input in a similar manner as CNN,然后将feature maps作为输入给下一层。
  • Deep NIN可以通过堆叠上述结构(can be implements by stacking mutiple of the above described structure)
  • 通过micro network模型来加强local modeling(局部模型?),在分类层利用GAP(global average pooling)相较于传统的FC(Fully connection)层可以更容易去解释(更容易去解释是因为FC相当于是一个black box)并且可以更好的避免过拟合。

2、Introduction

  • By abstraction we mean that the feature is invariant to the variants of the same concept.【通过抽象化数据,对于一个同一个概念的变体,特征是不变的??】
  • paper认为传统CNN的卷积过滤器是对底层数据块的一种广义线性模型(GLM,generalized linear model),而且对数据的抽象化水平比较低。
  • 在NIN,使用micro network来代替GLM,micro network可以当作是一个general nonlinear function approximator。在论文中,作者选用multilayer perceptron【多层感知器】作为micro network的实例。
  • 最后得到结构为mlpconv layer——>The mlpconv maps the input  local patch to the output feature vector with a multilayer perceptron(MLP) consisting of multiple fully connected layers with nonlinear activation functions。

3、key components of NIN's structure

  •  MLP Convolution Layers
    • choose universal function approximator for feature extraction of the local batches
    • 有两个比较有名的universal function aproximator,分别是radial basis network、multilayer perceptron。之所以选择multilayer percetron,有两点原因:(1)multilayer percetron(多层感知)和CNN相兼容,都是通过back-propogation来训练的。(2)多层感知的可以是一个深层模型本身,这一点与特征重用的思想是一致的(MLP可自行深度化)。
    • 这种新类型的层叫做mlpconv(MLP通过mlpconv来代替GLM去对输入做卷积),下图是mlplayer的计算:

  • Global Average Pooling
网络结构

一个单层的mlpconv网络的caffe网络结构文件,源码来源。mlp层实际上是卷积加传统的mlp(多层感知器),因为convolution是线性的,而mlp是非线性的,后者可以得到更高的抽线,泛化能力更强。在跨通道(cross channel, cross feature map)的情况下,mlpconv等价于卷积层+1*1卷积层,NIN网络模型】,通过模型可以看出:paper中一个NIN网络是由三个mlpconv+GAP组成,而一个mlpconv=conv(+relu)+cccp1(+relu)+cccp2(+rule)组成,其中每个conv、cccp之后需要接relu,每个mlpconv之后需要接pool,最后经过三层的mlpconv,接上global average pool,最终对于单个图片输出[1,1000, 1, 1]。由模型来看,cccp层其实就是kernel size=1的1x1卷积,s=1。

​​​

参考:http://simtalk.cn/2016/10/05/Network-In-Network/

猜你喜欢

转载自blog.csdn.net/github_37973614/article/details/81586708