文章目录
摘要
本文考虑使用最近提出的一种近似模型平均技术–dropout。本文使用dropout技术设计了一个名为maxout的模型,旨在通过dropout来加快优化过程,并提高准确度,模型名称之所以叫做maxout,是因为该模型的输出是模型输入的最大值,且它是dropout的自然伴侣。我们通过实验验证了该模型成功地完成了这两个任务。我们使用maxout和dropout来演示在四个基准标记数据集(MNIST、CIFAR-10、CIFAR-100和SVHN)上的最新分类性能。
1.介绍
Dropout提供了一种廉价且简单的方法,既可以训练共享一大批数据的模型,也可以大致平均这些模型的预测。Dropout应用于多层感知机和深度卷积神经网络,提升了从音频分类到大规模对象识别任务的现有水平。虽然Dropout在实践中运行良好,但是还没有证明它可以实际执行深层体系结构的模型平均。通常认为Dropout是一种不加区分的适用型工具,几乎可以应用于任何模型,都可以产生一定的性能改进。
我们认为与其在任意的模型上适用dropout从而带来轻微的性能提升,也许还不如直接设计一个模型来提高dropout作为模型平均技术的能力,从而获得最佳的性能。使用dropout进行模型训练与之前的类似于SGD的方法有很大不同。当在参数空间中的步长比较大时,Dropout是最有效的,在这种情况下,每次的更新都可以看作是在训练集的不同子集上对不同模型进行了重大更新。Dropout的理想操作机制是:在参数共享的约束下时,整个训练过程类似于使用bagging的集成学习。这些与与SGD的理想操作机制完全不同,SGD的理想操作机制中,单个模型通过小的步长来实现平稳的运行。另一个需要考虑的问题是,当应用到深层模型时,dropout模型平均值只是一个近似值。明确的设计模型使得近似误差最小化,也许可以提升dropout的性能。
我们提出了一个简单模型,叫做maxout,它具有优化模型和模型平均的特点。我们将这个模型与dropout结合使用,在4个基准数据集上取得了更高的性能。
2.回顾Dropout
Dropout是一种可以应用于确定性前馈结构的技术,确定性前馈结构在给定输入向量后,输出预测向量。该架构包含了一系列的隐含层。Dropout训练一组由包含和中变量的子集组成的所有模型组成的模型。使用同一组参数来表示一组分组,其中 是一个二进制掩码,用来决定模型中那些变量参与运算。每次在训练集上进行训练时,我们都按照的梯度对不同的随机取样训练不同的子模型。可以通过和和掩码的按元素相乘得到不同子模型的实例。Dropout的训练与bagging类似,都是在不同的子集上训练出不同的模型。但是,Dropout和bagging的不同之处是在于dropout只训练一次,且所有模型共享参数。这个训练过程要表现的像是在训练一个模型集合而不是训练单个模型,每次的更新都必须有重大的影响,这样才能使得该子模型能较好的拟合当前的输入。
当集合需要将所有子模型的预测平均起来进行预测时,函数形式就变得非常重要。之前的很多工作,例如bagging,是对子模型的输出进行算数平均,但是对于许多由dropout训练出来的指数型模型,如何计算平均值只一点还不清楚。幸运的是,一些模型产生了一种“廉价”的几何平均。当时,通过重整的几何平均定义的预测分布,可以很简单的由给出。换句话说,多个指数模型的预测平均值可以简单的通过运行权重除以2的完整模型来得到。这一结果适用于单层的softmax模型。以前对dropout的研究同样适用于更深层的架构,如多层感知器, 其中方法只是几何平均值的近似值.这种近似没有经过数学描述,但在实践中表现得很好。
3.描述maxout
Maxout 模型是一个简单的前馈框架模型,例如多层感知机或深度卷积神经网络,但是使用了一个新的**函数:maxout单元。给定一个输入(可能是输入,也可能是隐含层的状态),maxout隐含层的采用下式实现:
其中,, ,都是可训练的参数。在卷积神经网络中,通过k个仿射特征图的最大值可以构造一个maxout特征图(例如,跨通道池化)。当使用dropout进行训练时,在乘(按元素撑)权重之前,先乘以dropout掩码,在所有情况下,我们不会将输入丢给max操作符。单个maxout单元可以解释为对任意凸函数进行线性逼近。Maxout网络不仅仅学习隐含单元之间的关系,还学习每个隐含单元的**函数。有如何工作的图形描述,见图1。
Maxout抛弃了传统**函数中的许多重要设计。它所生成的表示并不稀疏(见图2),虽然梯度是高度稀疏的,并且在训练过程中dropout会人为地稀疏有效的表示。虽然maxout可能学会在一侧饱和,但这是一个度量为零事件(因此它几乎不会从上面限制)。虽然参数空间的一个重要部分对应于下面要绑定的函数,但是maxout根本不受学习绑定的限制。几乎所有地方都存在局部极值,而许多常用的**函数具有显著的曲率。Maxout几乎到处都是局部线性的,而许多流行的**函数都具有明显的曲率。考虑到所有这些与标准时间相背离的地方,maxout**函数竟然能够正常工作,这似乎令人惊讶,但是我们发现,maxout具有很强的鲁棒性,并且在使用dropout时很容易进行训练,并且可以达到出色的性能。
4. Maxout是一个通用的近似器
一个具有足够隐含层的多层感知机是一个通用的近似器。同样,Maxout网络也是一个通用的近似器。假设每一个maxout单元都有任意多的仿射分量,我们证明了一个只有个两个隐含单元的maxout模型可以很好的逼近任意一个连续函数。图3中给出了证明的基本思想。(一个包含两个maxout单元的MLP可以近似任意一个连续函数,最后一层的权重可以使得g的值是h1和h2的差值。如果允许z1和z2具有任意高的基数(基数是指一个集合或一个组内元素的个数),则h1和h2可以近似任何凸函数。 因此,g可以近似任何连续函数,因为它是任意凸函数的近似值的差。)
考虑连续分段线性函数g(v),g(v)在上由局部仿射区域组成.
命题 4.1 :(来自wang 2014的定理2.1)对于任意的正整数m,n,都存在两组n+1维的实数参数向量以及使得:
也就是说,任意的分段连续函数都可以使用两个凸分段线性函数的差来表示。
命题 4.2 :根据Stone-Weierstrass近似定理,令C 是一个复数,函数是一个连续函数,一个正实数。存在一个分段线性函数,使得所有的,
命题 4.3 :通用近似理论:一个具有两个maxout单元的maxout网络,可以足够好的近似一个连续函数。
证明:通过命题4.2,一个分段线性函数可以尽可能近似(取决于)一个连续函数;从命题4.1可以看出,一个分段线性函数的表示正好和一个maxout网络完全匹配,该maxout网络具有两个maxout单元和,且k足够大的,可以达到所需的近似程度。综上所述,我们可以得出结论:一个具有两个maxout单元的maxout网络可以任意程度的逼近任何一个复数域内的连续函数。通常情况下,近似程度越大(即),k越大(即)。
5. 实验结构
这一部分就不详细写了。
6. 与RELU进行对比
关于我们的结果,一个明显的问题是,我们是通过改进的预处理还是大模型获得这些结果,而不是通过使用maxout。对于MNIST,我们没有使用预处理; 对于SVHN,我们使用与Zeiler & Fergus(2013)相同的预处理。然而,在CIFAR数据集上,我们使用了一种新的预处理形式。因此,我们将maxout与relu在此数据集上以相同处理和不同模型大小运行的进行比较。
通过大型交叉验证实验(如图6所示),我们发现maxout对RELU有明显的改进。我们还发现,我们的预处理和模型的大小改善了relu和dropout,超过了以前的技术水平的结果。跨通道池化是一种减少状态大小和参数数量的方法,这些参数需要在模型中具有给定数量的过滤器。性能似乎与maxout的滤波器数量有很好的相关性,但与relu的输出单元数量无关(例如,relu单元从跨通道池化中获益不大)。RELU在没有跨通道池化但滤波器数目相同的情况下性能最好,这意味着relu的状态大小和参数数目必须比maxout高大约k倍,才能获得与maxout相同的泛化性能。
7. 模型平均
在证明了maxout网络是有效的模型之后,我们现在分析了它们成功的原因。首先,我们找出了maxout与dropout近似模型平均技术高度兼容的原因。
(Hinton et al., 2012)给出的将权重除以2来平均子模型的直观理由是,这对单层模型softmax回归进行了精确的模型平均。在此基础上,我们还发现,如果将模型扩展到多个线性层,则平均模型保持精确。虽然这与单层具有相同的表示能力,但是将权重表示为几个矩阵的乘积可能具有不同的归纳偏差。更重要的是,它表明dropout可以在更深层的架构中进行精确的模型平均,只要它们在每层的输入空间中是局部线性的,且每层中使用不同的掩码。
我们认为dropout的训练鼓励了maxout单元在训练数据中出现的输入周围具有较大的线性区域。因为每个子模型必须对输出进行良好的预测,不管哪些输入被丢弃,每个单元应该学会大致相同的**函数。在具有任意选择参数的maxout网络中,改变dropout掩码通常会将有效输入移动到足够远的位置,从而逃离隐藏单元为线性的干净输入周围的局部区域,例如,更改dropout掩码可以频繁地更改输入映射到分段函数的哪一部分。使用dropout训练出的Maxout可能具有最大滤波器的标识,但随着dropout掩码的变化,这种情况相对较少发生。线性操作网络和max(·)可以很好地利用dropout的近似模型平均技术。
许多常用的**函数几乎处处都有显著的曲率。这些观察结果表明,对于包含这些**函数的网络,dropout的近似平均模型将不那么精确。为了验证这一点,我们将训练在MNIST和dropout上的最佳maxout模型与训练在MNIST和dropout上的双曲正切网络进行了比较。我们对每个模型的几个子集进行了采样,并将这些采样模型的预测的几何平均值与用权重除以2的dropout技术进行的预测进行了比较。我们发现的证据表明,辍学确实执行模型平均,即使在多层网络也是如此,而且它在maxout的情况下更准确。具体见图7和图8。
8.优化实验
maxout表现出色的第二个关键原因是它改进了bagging中dropout的训练阶段。请注意,第7节中论证使用maxout的论点同样适用于relu线性单位(Salinas&Abbott,1996; Hahnloser,1998; Glorot等,2011)。在一组relu线性单元上,maxout和max pooling之间的唯一区别是maxout在max中不包含0。在性能上,这似乎是一个很小的区别,但我们发现包含这个常数0对dropout背景下的优化是非常有害的。例如,在MNIST上,我们最好的验证集错误是mlp:1.0 4%。如果我们在最大值中包含一个0,这个数字也会上升1.2%。我们认为,当使用dropout进行训练时,maxout比使用跨通道池进行校正的线性单元更容易优化。
8.1优化实验
为了验证maxout在带dropout训练时的优化性能优于maxpool relu线性单元,我们进行了两个实验。首先,我们通过在大型(600,000例)SVHN数据集上训练一个小的(两个k= 2的隐藏卷积层和16个内核)模型来强调训练算法的优化能力。当使用relu进行训练时,训练误差保持在7.3%。如果我们用maxout单元进行训练,我们会得到5.1%的训练误差。另一个优化压力测试,我们尝试在MNIST上训练非常深入和狭窄的模型,并发现maxout在增加深度时比集中relu处理得更好。详见图9。
8.2 饱和
使用dropout时的优化过程与使用普通随机梯度下降时的优化过程非常不同。SGD通常在学习速度小的情况下效果最好,从而导致目标函数平稳下降,而dropout在学习速度大的情况下效果最好,从而导致目标函数不断波动。Dropout迅速探索了许多不同的方向,并拒绝了那些性能恶化的方向,而SGD则缓慢而稳步地朝着最有希望的方向前进。我们从经验上发现,这些不同的操作制度导致RELU不同的结果。当用SGD进行训练时,我们发现relu器的饱和率小于5%。在有dropput训练时,我们很少将单元初始化为饱和,但训练逐渐将单元的饱和率提高到60%。因为max(0,z)**函数中的0是一个常数,这就阻止了梯度流过单元(即该单元没有梯度)。在没有单位梯度的情况下,训练很难使该单位重新活跃起来。Maxout不会遇到这个问题,因为梯度总是流经每个Maxout单元—即使Maxout单元为0,这个0也是参数的函数,并且可以对具有负**的单元进行调整,之后可能会引导其再次变为正。图10显示了在使用dropout进行训练时,**的relu单元如何以比未**relu单元更大的速率变为非**状态,但是maxout单元(始终处于活动状态)在每个方向上正、负活动之间以大约相同的速率过渡。我们假设,relu相对于maxout,优化性能具有高比例的零且更难以摆脱他们的影响。
为了验证这一假设,我们在MNIST上训练了两个mlp,两个mlp都有两个隐藏层且每层都有1200个卷积核,以5个为一组。当我们在max池中包含一个常数0时,结果训练模型无法使用第二层17.6%的过滤器和第二层39.2%的过滤器。少数过滤器通常在池中取最大值,其余的过滤器的最大值为常数0。另一方面,Maxout只使用了2400个过滤器中的2个。对于某些训练实例,网络中每个maxout单元中的每个滤波器都是最大的。所有过滤器都已使用和调整。
8.3 更低层的梯度和bagging
与SGD不同的是,dropout要求梯度随着要删除的单元的选择的变化而发生显著的变化。如果梯度相对于dropout掩模近似恒定,则dropout简化为SGD训练。我们在MNIST上对两种不同mlp进行训练时,通过监测固定数据相对于漏出掩模的方差,验证了整流网络向下层梯度流量减小的假设。maxout输出层权值的梯度方差是maxout在平均训练步长上的1.4倍,而maxout在第一层权值梯度上的方差是整流器的3.4倍。而maxout在第一层权值梯度上的方差是relu的3.4倍。结合我们之前的结果显示maxout允许训练深度网络,这个更大的方差表明maxoutbetter向下传播不同的信息到较低的层,并帮助dropout训练更好地类似于较低层参数的bagging。整流器网络,随着他们的梯度失去更多的饱和,可能导致dropout训练类似于正常的SGD接近网络的底部。
9. 总结
我们提出了一个新的**函数maxout,它特别适合用dropout进行训练,并证明了一个普遍的近似定理。实验结果表明,在深度模型中,dropout与模型平均有很好的近似关系。我们已经证明maxout利用了这种模型平均行为,因为对于max-out单位的近似比tanh更精确。我们已经证明,优化在dropout上下文中的行为与在纯SGD情况下非常不同。通过设计maxout梯度来避免诸如未能使用许多模型滤波器之类的陷阱,我们能够训练比使用relu单元更深层的网络。我们还展示了maxout将由于dropout掩模的不同选择而导致的梯度变化传播到网络的最底层,从而确保模型中的每个参数都能充分享受dropout的好处,并更忠实地模拟bagging训练。我们的方法在五个不同基准测试任务上的最佳性能激发了对进一步模型的设计,这些模型在与不费吹灰之力的近似法相结合时表现得很好。