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
的隐藏层,一般叫做“隐隐藏层”,示意图如下图所示。
对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
Maximum operation ensure non-linear property
因为是 max 操作,可以保证非线性。
Approximate any convex function
同时可以拟合任何的凸函数,论文中用数学的方法给出了证明。
不过它只能拟合凸函数,算是一个弊端,后面的
Network in Network
对这里做了改进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
的形式进行改进。然后作者就做了实验,来对比
maxout
与ReLU
的效果,对比图如下图所示,从中得到如下结论:要让
ReLU
达到maxout
的表现,需要使之具有和maxout
相同数量的滤波器(即使用比原来k
倍的滤波器,同样也要k
倍的ReLU
单元),但网络状态和所需要的参数也是原来的k倍,也是对应maxout
的k
倍。训练中使用
dropout
时,maxout
的优化性能比relu + max pooling
好
既然效果那么好,为什么用的还是很少呢?
主要原因是因为参数会成倍的增加。不过还是会见到有用的,比如
GAN
的 discriminator 就用了。
Advantages
实验中
SGD
使得ReLU
饱和在0
值的时间少于5%
,而dropout
则超过60%
。由于
ReLU
激活函数中的0
值是一个常数,这就会阻止梯度在这些单元上传播(无论正向还是反向),这也就使得这些单元很难再次激活,这会导致很多单元由激活转变为非激活。而maxout
就不会存在这样的问题,梯度在maxout
单元上总是能够传播,即使maxout
出现了0
值,但是这些0
值是参数的函数可以被改变,从而maxout
单元总是激活的。单元中较高比例的且不易改变的0
值会损害优化性能。一是类似
dropout
的思想可以防止过拟合;而是没有梯度消失的问题,所以能够 train deep/deeper network;不过,需要注意的是,别人做实验发现
maxout
要与dropout
一起使用,效果比较好, 原因不知道为什么。
Drawback
Parameters increased by k times
这也是为什么不经常使用的原因。
maxout
和NIN
都是对传统conv+relu
的改进。maxout
想表明它能够拟合任何凸函数,也就能够拟合任何的激活函数(默认了激活函数都是凸的)NIN
想表明它不仅能够拟合任何凸函数,而且能够拟合任何函数,因为它本质上可以说是一个小型的全连接神经网络
Related work associated with dropout
DropConnect
Network in Network
Motivation
作者认为
CNN
中的filter
做内积然后用activation function
做非线性变换的做法只是一种广义的线性模型(GLM),这就导致抽象能力不够。也就是说
CNN
其实有一个假设就是:潜在的概念是线性可分的。然而,相同概念的数据一般是存在于一个非线性的流形中,因此,对同一个概念的东西,可能会学习多个filter,这就增加了很多可能无用的参数。如果能用一个更加非线性的函数,是不是就能很好的学习到物体的特征,从而减少 filter 的数量,减少参数的数量?
使用一个
MLP
代替卷积层的线性卷积操作,原因有两个:MLP
可以拟合任意形式的函数,线性、非线性的都可以MLP
可以和CNN
很好的结合,进行 backwards propagationMLP
可以作为一个深层结构,也包含了特征重用的思想
所以
NIN
的主要目的就是引入更多的非线性元素,并没有替换掉activation function
。改变的只是卷积的方式:不再是element-wise
形式的乘积,而是用非线性的MLP + ReLU
完成。
Architecture
Covolution + Activation Function –> Mlpconv
隐藏层的每一个
hidden units
都可以看作是一个1 x 1
的filter
,每个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
的卷积Fully connected layer + softmax –> Global Average Pooling + softmax
这是首次引入
GAP
的概念,把FC
换成GAP
的原因有下面几条:- Fully connected layers act as a black box
- Fully connected layer can be easily overfitting
- Native to the convolution structure by enforcing correspondences between feature maps and categories.
- Global Average Pooling more meaningful and interpretable
- Feature maps –> categories confidence maps
- 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
用
mlpconv
网络,只改变最后的层,证实了Global Average Pooling 的效果比FC
更好,又通过证明证实了它的作用与 Regularizer 相类似。用传统的
CNN + GAP
与传统的CNN + FCL (+dropout)
进一步的证实了效果更好主要原因是可以很好的减轻过拟合。
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
为了引入更强的非线性因素
以改动卷积层工作方式的形式完成