[Paper Reading]Maxout Networks b
2019-01-05 本文已影响0人
csuhan
论文地址
:https://arxiv.org/pdf/1302.4389.pdf
Abstract:我们考虑了一个问题:设计一个模型来替换Dropout技术、我们定义了一个新的模型:Maxout,可以达到与dropout相近的精度、我们在一些数据集上进行了测试,达到了当今的最高水平。
1. Introduction
Dropout提供了一种简单有效的方式来训练一个较大的模型的集合,这些模型共享参数,同时近似取这些模型精度的平均值。虽然dropout效果很好,但是先前并没有证明其确实能够得到模型的平均精度。
Dropout被认为是一种通用的工具,在几乎所有的模型中都能够提高模型的表现。
我们认为与其在任意模型中使用dropout,最好的方式莫过于设计一种模型来提高获取模型平均精度的能力,正如dropout一样。
Dropout与SGD等很不一样,它的每一次更新都是在不同的训练数据子集上对不同的模型进行显著性的更新。
我们提出一个简单的模型叫做Maxout,他对优化和提高模型平均精度很有效。
2. Review of Dropout
......
3. Description of Maxout
Maxout模型是一个简单的前馈结构,正如多层感知机或者卷积神经网络一样。它使用一种新的激活函数:maxout unit。给定输入x,maxout hidden layer使用函数:

其中Zij:

在CNN当中,maxout feature map可以是所有通道中k个特征图的最大值。单个maxout单元可以解释为对任意凸函数进行分段线性逼近,Maxout networks不仅学习隐层之间的关系,而且学习,每个隐层的激活函数!

其中k即为需要maxout的参数,通俗来讲,就是把原来MLP中每个隐层仅有一个W、b,变成k个W、b,然后去其中最大值。正如代码:
output = K.max(K.dot(X, self.W) + self.b, axis=1)
下图很好的解释了Maxout

Maxout抛弃了许多传统激活函数的设计,它并非全是稀疏的,尽管梯度是高度稀疏的,dropout也会在训练过程中稀疏数据的表达。
虽然Maxout学习时可能会在一侧或另一侧饱和,但这几乎是不可能的。
总之,Maxout和dropout配合时效果特别好。
4. Maxout是一个通用的逼近器(universal approximator)
简言之,Maxout激活函数并不是一个固定的函数,二十一个分段线性函数,通过学习得到的

总结:
- 单个maxout激活函数可以理解成一种分段线性函数来近似任意凸函数(任意的凸函数都可由分段线性函数来拟合)。它在每处都是局部线性的(k个“隐隐层”节点都是线性的,取其最大值则为局部线性,分段的个数与k值有关),而一般的激活函数都有明显的曲率。
- 如同MLP一样,maxout网络也可以拟合任意连续函数。只要maxout单元含有任意多个“隐隐层”节点,那么只要两个隐层的maxout网络就可以实现任意连续函数的近似。
- maxout网络不仅可以学习到隐层之间的关系,还可以学习到每个隐层单元的激活函数。
- maxout放弃了传统激活函数的设计,它产生的表示不再是稀疏的,但是它的梯度是稀疏的,且dropout可以将它稀疏化。
- maxout没有上下界,所以让它在某一端饱和是零概率事件。
- 如果训练时使用dropout,则dropout操作在矩阵相乘之前,而并不对max操作的输入执行dropout。
- 使用maxout会默认一个先验:样本集是凸集可分的。
总之:每个隐层都有多个W,取最大值,其是一种新的激活函数,效果好,但是参数大量增加。
参考文献: