Maxout Networks & Network in Network

Maxout Networks

Motivation

dropout是一种 regularization 的方法,主要作用是用来减轻过拟合现象。实现方式是:以一定的概率,随机的把hidden units的输出值设成0,也就是随机的让某些hidden units失活,此时就相当于是一种集成模型的训练。

实验证实当网络比较深的时候,使用dropout能够很好的提升网络的 generalization 能力。

作者就想:如果不只是单单的把它作为一种提升模型性能的工具,而是直接应用到网络结构的内部,是不是能够更好的提高网络的性能呢?

注意:dropout只是一种 regularizer,而maxout是一种网络结构。

Architecture

每个隐藏层的hidden units与前一层的hidden units连接的时候,加入一个有k(是个超参数)个hidden units的隐藏层,一般叫做“隐隐藏层”,示意图如下图所示。

maxout

Fully connected layer直接取 max 就可以;对CNN使用Cross chanel pooling的方式完成,这也是它与其它激活函数不同的地方。

比如:ReLU使用的 max(x,0) 是对每个通道的特征图的每一个单元执行的与0比较最大化操作;而maxout是对每个通道的特征图在通道的维度上执行最大化操作(Cross chanel pooling)。

Activation Function: Maxout unit

从这种角度来看,它就是一种新的activation function,作者叫它maxout unit

  1. Maximum operation ensure non-linear property

    因为是 max 操作,可以保证非线性。

  2. Approximate any convex function

    同时可以拟合任何的凸函数,论文中用数学的方法给出了证明。

    不过它只能拟合凸函数,算是一个弊端,后面的Network in Network对这里做了改进

  3. Filter can be trained to learn

    每个hidden units可以学习各自的activation function形式。

Comparison to rectifiers

  • 接着,作者在 4 个不同的数据集上做了 Experiments,都取得了 state-of-the-art 或者相当的效果,Experiments 内容就不讲了,具体细节可以看paper,并且paper中讲的也比较详细。

  • ReLU已经那么好了,为什么还要用,或者说还要有maxout呢?

    原因要是因为ReLU有一些缺点,而maxout正好解决了,这也是maxout的优势。

    缺点是:

    Kaiming He 有一篇 paper 讲的就是ReLU,他那篇 paper 的 motivation 就是:大家都爱用ReLU,效果也很好,那它就没有毛病吗?有的话,如何改进。不过他那篇只是对ReLU的形式进行改进。

  • 然后作者就做了实验,来对比maxoutReLU的效果,对比图如下图所示,从中得到如下结论:

    Comparison to rectifiers
    1. 要让ReLU达到maxout的表现,需要使之具有和maxout相同数量的滤波器(即使用比原来k倍的滤波器,同样也要k倍的ReLU单元),但网络状态和所需要的参数也是原来的k倍,也是对应maxoutk倍。

    2. 训练中使用dropout时,maxout的优化性能比relu + max pooling

  • 既然效果那么好,为什么用的还是很少呢?

    主要原因是因为参数会成倍的增加。不过还是会见到有用的,比如GAN的 discriminator 就用了。

Advantages

  1. 实验中SGD使得ReLU饱和在0值的时间少于5%,而dropout则超过60%

    epochs

    由于ReLU激活函数中的0值是一个常数,这就会阻止梯度在这些单元上传播(无论正向还是反向),这也就使得这些单元很难再次激活,这会导致很多单元由激活转变为非激活。而maxout就不会存在这样的问题,梯度在maxout单元上总是能够传播,即使maxout出现了0值,但是这些0值是参数的函数可以被改变,从而maxout单元总是激活的。单元中较高比例的且不易改变的0值会损害优化性能。

  2. 一是类似dropout的思想可以防止过拟合;而是没有梯度消失的问题,所以能够 train deep/deeper network;

    不过,需要注意的是,别人做实验发现maxout要与dropout一起使用,效果比较好, 原因不知道为什么。

Drawback

  • Parameters increased by k times

    这也是为什么不经常使用的原因。

  • maxoutNIN都是对传统conv+relu的改进。

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

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

  • DropConnect

    DropConnect

Network in Network

Motivation

  • 作者认为CNN中的filter做内积然后用activation function做非线性变换的做法只是一种广义的线性模型(GLM),这就导致抽象能力不够。

  • 也就是说CNN其实有一个假设就是:潜在的概念是线性可分的。然而,相同概念的数据一般是存在于一个非线性的流形中,因此,对同一个概念的东西,可能会学习多个filter,这就增加了很多可能无用的参数。

    如果能用一个更加非线性的函数,是不是就能很好的学习到物体的特征,从而减少 filter 的数量,减少参数的数量?

  • 使用一个MLP代替卷积层的线性卷积操作,原因有两个:

    1. MLP可以拟合任意形式的函数,线性、非线性的都可以

    2. MLP可以和CNN很好的结合,进行 backwards propagation

    3. MLP可以作为一个深层结构,也包含了特征重用的思想

  • 所以NIN的主要目的就是引入更多的非线性元素,并没有替换掉activation function。改变的只是卷积的方式:不再是element-wise形式的乘积,而是用非线性的MLP + ReLU完成。

Architecture

  • Covolution + Activation Function –> Mlpconv

    Mlpconv

    隐藏层的每一个hidden units都可以看作是一个1 x 1filter,每个filter对前面得到的feature map进行卷积得到一个feature map(这里没有使用cross channel pooling

    可以把它看作一个 building block,然后 overall structure of the NIN is the stacking of multiple mlpconv layers,就是进行1 x 1的卷积

    Overall structure
  • Fully connected layer + softmax –> Global Average Pooling + softmax

    Global Average Pooling

    这是首次引入GAP的概念,把FC换成GAP的原因有下面几条:

    1. Fully connected layers act as a black box
    2. Fully connected layer can be easily overfitting
    3. Native to the convolution structure by enforcing correspondences between feature maps and categories.
    4. Global Average Pooling more meaningful and interpretable
    5. Feature maps –> categories confidence maps
    6. No parameters

    可以看这里GAP

    实验效果也很好,超过了FC的效果。

  • Global Average Pooling as a Regularizer

    • Mlpconv + Fully Connected

    • Mlpconv + Global Average Pooling

    • Conventional CNN + Fully Connected

    • Conventional CNN + Fully Connected + dropout

    • Conventional CNN + Global Average Pooling

    Comparison with ReLU

    mlpconv网络,只改变最后的层,证实了Global Average Pooling 的效果比FC更好,又通过证明证实了它的作用与 Regularizer 相类似。

    用传统的CNN + GAP与传统的CNN + FCL (+dropout)进一步的证实了效果更好

    主要原因是可以很好的减轻过拟合。

Visualization of NIN

Visualization of NIN
  • 亮的是被激活的。目的是为了证明GAP的 advantage。

  • 这只利用的 category information,如果利用了 bounding box 可以得到更好的效果。

Advantages

  • 更好的局部抽象

  • 更小的全局overfitting

  • 更少的参数(没有全连接层)

Application

  • Image Classification

  • Object Detection

Comparison with Maxout Network

都是在隐藏层与隐藏层之间加入隐藏层的方式对传统CNN进行改进

  • Maxout Network

    • 为了利用dropout的思想,引入更强的正则化

    • 以直接替换掉activation function的形式完成

  • Network in Network

    • 为了引入更强的非线性因素

    • 以改动卷积层工作方式的形式完成