[Paper Reading] Dropout: A Simple Way to Prevent Neural Networks from Overfitting

简介

Dropout作为神经网络常用的正则化方法,最早由Hinton和Srivastava等人[[1]2012年提出。2014年,同一批作者对Dropout进行了完整的描述和分析,发表在本篇介绍的论文中。其中的作者之一Alex Krizhevsky,也正是后来AlexNet的第一作者。AlexNet网络首次在神经网络中采用Dropout用于提高泛化能力。借助AlexNet巨大的影响力,Dropout很快受到了各类研究的青睐,成为之后一段时间内神经网络的标配。虽然后来随着BN的提出以及流行,该结构的使用有所减少,但作为早期提升网络性能的重要手段之一,仍然具有很大的影响。

Dropout的基本思想是在训练过程中,随机的丢弃部分神经元,降低特征提取的共同作用影响,提高个体特征提取器的自适应能力,达到提升网络泛化能力的目的。实验证明Dropout的确可以有效提高模型的泛化能力,但对于为何有效的原因还尚未定论。

网络结构

Dropout结构

Dropout模块结构简单,不依赖于特定的网络架构,可以集成到各种网络结构中。采用Dropout网络结构变化示意图如下所示:

图1: 一个典型的网络连接(左图),经过Dropout处理后的网络结构(右图)

具体来说,基本机制为随机的将部分神经元节点的输出强制设置为0。由于训练过程中每个批次丢弃的神经元是完全随机的,因此每个批次学习的都是不同结构的神经网络。Dropout用数学公式描述为:

                                            y=f(Wx)\circ m, m_i \subset  Bernoulli(p)

其中,f为激活函数,W, x,y分别为权重、上一层输入、以及本层的输出;m为符合伯努利分布(即0-1均匀离散分布)的Dropout控制掩码,m中每个元素取1的概率为p。由公式描述可知,Dropout是在激活函数计算之后处理,因此在神经网络层中,Dropout层是位于激活层(通常ReLU)之后。

失活率(Dropout Rate)

在Dropout中,最主要的超参为失活率,即每层中丢弃的神经元占整层神经元的比率。通常全连接层属于密集层,适合于稀疏化,因此大量使用Dropout。卷积层由于卷积自身的稀疏性以及稀疏化的ReLU函数的大量使用,较少使用Dropout。

不同层可以使用不同的失活率,实践中隐藏层通常使用同样的失活率。经过交叉验证,失活率等于0.5时效果最好,原因是0.5的时候Dropout随机生成的网络结构最多。Dropout也被当作一种添加噪声的方法,用于作用输入的训练数据。通常输入层的失活率设置为0.2,避免输入变化太大。

最大范式正则化(Max-norm Regularization)

原文中采用了最大范式正则化配合Dropout使用,即对每个隐含节点的权重的L2范数设定上限值,其中上限值作为超参调节。当范数超过上限值,约束权重的范数为上限值。

使用最大范式正则化约束权重,限制权重取值不会过大。即使在较大的学习率下,也能避免梯度发生爆炸。较大的学习率,配合Dropout引入的噪声,可以搜索到更多的权值空间。

推断设置

训练过程中随机丢弃神经元,测试和推断过程中则保留全部的神经元。如果测试时也随机丢弃神经元,一是无法充分利用训练时丢弃神经元增加网络泛化能力的目的,另一方面对于给定输入,随机丢弃神经元,可能造成预测结果的不一致。

训练过程中某个神经元输出y,其失活率为p,则该神经元的输出期望值为:

                                                E(x) = p*0 + (1-p)*y

在测试和推断阶段,神经元始终处于激活状态。为了保持训练和测试阶段的期望输出一致,需对测试和推断阶段每个神经元的输出进行如下调整:

                                                        y=(1-p)f(Wx)

反向传播计算

Dropout在前向传播中只是用来定义网络的临时结构,在推理阶段并不使用Dropout。其对网络的影响真正来源于反向传播计算。在Dropout的作用下网络权重有选择的更新,从根本上影响最终网络的表现。

假设在反向梯度计算中,某神经元反向梯度输入为\partial{e}/\partial{y},而y=dropout(x)为该神经元在正向计算过程中经过Dropout后的输出。由链式法则:

                                                    \partial{e}/\partial{x} = \partial{e}/\partial{y} * \partial{y}/\partial{x}

其中:当该神经元在正向过程中被激活时,\partial{y}/\partial{x}取值为1;否则取值为0。

需要说明的是,在正向计算过程中,当神经元失活,Dropout强行将ReLU的输出结果设置为0。在反向梯度计算中,并不是将ReLU的真实输出值与0的差值作为梯度进行计算,而是直接将梯度重置为0。因为Dropout的作用是让该神经元失活,截断该节点处的梯度流。

Inverted Dropout

推断和测试中对所有神经元输出进行(1-p)的缩放,影响计算性能。为了减少测试和推断时的计算时间,也避免修改网络,可以将缩放的计算转移到训练阶段,推断和测试阶段无需做任何修改,此方法称为反向Dropout(Inverted Dropout)。具体来说,即为将Dropout时保留的神经元的输出乘以1/(1-p),根据Dropout下神经元的期望输出计算公式:

                                            E(x) = p*0 + (1-p)*y/(1-p)=y

该缩放保证训练阶段期望值与测试时期望值一致。该操作仅影响训练过程,不影响测试和推断过程。在训练时对输出值进行缩放后,有效学习率(Effect LR)等价为\epsilon/(1-p)。由于p<1,因此有效学习率增大,p因此也被称为推动因子。

有效分析

虽然实验证明,Dropout正交于网络架构,并在几乎所有的数据集上表现都优于基准测试,但其有效具体原因仍待分析。通常的观点解释有:

减少神经元共适应性(co-adaptations):通常认为,神经元之间具有非常复杂的共适应性。一个神经元需要与其它的神经元协作,即基于其它神经元提取特征的基础上,才能提取特定的特征。Dropout随机丢弃部分神经元,打破了神经元之间相互协作的机制,迫使每个神经元独立的学习更加鲁棒的特征,避免了某些特征只有在其它特征下才有效的情况。按此分析,Dropout类似于L1、L2等正则化效果,通过减少权重提高网络的鲁棒性和泛化能力。

Bagging集成作用:Bagging是一种通过集成多个模型降低泛化误差的技术。训练阶段训练多个不同的模型,测试阶段将所有模型的输出结果进行表决或加权平均输出。每次训练迭代过程中,Dropout随机丢弃部分神经元,相当于训练不同的神经网络架构。与完整的Bagging流程不同,Dropout并不是在整个数据集上完整的训练每个网络架构,而只在一个批次的数据上(min-batch)训练不同的网络架构,因此是一种廉价的Bagging 集成近似方法。基于批次训练不同的架构,避免了采用原始Bagging技术需要训练和评估指数级神经网络的问题。

生物进化类比:物种在进化过程中倾向于适应当前环境,从理论上说,繁殖应该倾向于直接复制已经适应环境的父辈基因。然而,自然界更多采用有性繁殖等混合基因的方式进化。一种可能的原因在于基因混合可以组合繁衍出适应未来新环境的变种,避免了当环境发生突变时,物种难以适应而面临灭绝的危险。打乱单个基因依靠与其它基因固定组合来适应环境的方式,有助于增强了基因的适应能力。

共谋论:在策划一起大破坏时,有两种方式:一种是50个人协同合作制作一起破坏;另外一种是分成10个组,每组5人,只要一组成功实施破坏,即任务完成。通常第二种方式的成功率更高,因为50人协同需要紧密配合,人员不可或缺,响应外部环境变化的速度较慢。相对而言,小团队可以更快适应和响应外部环境。即使9组失败,只需一组成功便可算完成任务,从整体上看其适应能力更强。

噪声论:认为Dropout作用相当于数据增强(Data Augmentation)。针对每次Dropout产生的输出结果,总能找到一个样本,其原始网络上输出与Dropout的输出相同。因此每次Dropout操作相当于增加了数据样本,提高了模型的泛化能力。

数据准备

数据集

论文主要针对分类任务进行评估,分类的类型包括图像、声音、文本、以及基因剪接,使用的数据集主要有:

MINST:该数据集包含60,000张训练数据以及10,000张测试数据,每张图片为28*28的灰色图像。测试目标为从手写数字图像中分辨出1~10的数字,为10分类任务。

SVHN(Street View House Numbers):由Google街景应用收集的街道边房屋编号的数字图像组成,房屋编号图像已经被分割为独立的包含数字的彩色图片,图片尺寸为32*32。该数据集包含约600,000张训练数据以及26,000张测试数据,其中训练数据集由标准标注训练数据集以及较简单的标准训练集组成。验证集包含6,000张数据,以2:1的比例从上述两个训练集中随机抽取,两个子集上每个类别的数量分别为400和200。测试目标为从彩色图像中辨认数字,为10分类任务。

CIFAR-10 & CIFAR-100:该数据集包含了50,000张训练数据集和10,000张测试数据集,分别包含了10类和100类物体,图像尺寸大小为32*32。随机从训练数据集中抽样5,000张图片作为验证数据集。测试目标为从图像中辨认出物体的类型,为10和100分类任务。

ImageNet:原始数据集包含1500万包含标注信息的图像数据,覆盖22,000种物体类型。从其中选择1000中物体类型,每种物体类型约1000张图像,组成了用于图像识别大赛ImageNet Large Scale Visual Recognition Challenge(ILSVRC)的数据子集。其中ILSVRC-2010是当时唯一测试集包含标签的数据集,通常在此数据集上训练和验证。测试目标为从图像中辨认物体的类型,为1000分类任务。

TIMIT:语音数据库,包含在无噪声环境下,录制的680人说话的语音数据。每个录制者朗读10句英文,覆盖了8中不同的英语方言。测试目标是能够有效的识别语音内容。

Reuters-RCV1:800,000份来自路透社的新闻稿件,涵盖了103个不同的主题。论文选取了其中的402,738份数据,并通过2000个词汇描述了50中不同的主题。每份文本数据归属一个主题。通过BoW算法,提取关键词,将文章归类到50个独立的主题。

数据处理

SVHN(Street View House Numbers):计算像素的均值和方差,然后每个像素减去均值并除以方差,得到零均值和标准方差分布。

CIFAR-10 & CIFAR-100:首先经过全局对比归一化(Global Contrast Normalization),即针对每幅图的每个颜色通道,分别减去像素的对比强度值。然后进行ZCA白化操作。

ZCA白化:目的是降低数据的相关性,尤其是在图像领域,相邻数据之间的关联性很强,即存在大量冗余。通过ZCA白化处理,希望数据具备1)特征之间关联性降低;2)所有特征的方差相同。首先通过PCA主成分分析,将数据通过特征向量矩阵投影到特征的主成分空间,然后在特征的主成分维度进行标准的归一化,使得不同维度的方差相同。最后将数据转换会原始的数据空间。

ZCA白化与PCA白化的区别:前者主要用于去相关,而后者在于去相关的同时降维。PCA白化过程中要求各维度方差为1,并且丢弃方差较小的维度达到将维目的。ZCA只要求各维度方差相同,并且处理后数据尽量接近原始数据。ZCA相对PCA多一个操作步骤,即数据需要转换回原始空间。

ImageNet:参考ImageNet Classification with Deep Convolutional Neural Network中的实现。

TIMIT:语音帧经过了均值中心化和方差单位化操作。

Reuters-RCV1:略

训练策略

初始化

整个训练过程中,使用随机初始化训练方法。特别的,在使用神经网络进行语音识别时,通过DBN网进行预训练来初始化神经网络。

超参策略

采用Dropout处理会降低网络的容量。例如,对于有n个神经元的网络,采用Dropout处理后,每次只有(1-p)n个神经元参与训练。在设计包含Dropout的神经网络时,如果已知包含n个神经元的网络容量能够满足给定的任务,包含Dropout的神经网络的神经元个数建议设置为n/(1-p)

在梯度计算过程中,Dropout会引入更多的噪声,导致梯度迭代过程中相互取消,降低了网络训练收敛的速度。为了提高网络的训练速度,设置带Dropout的学习率时,建议其为不使用Dropout的相同网络架构学习率的10~100倍。另外,也可以通过增大动量的方式提升训练速度。考虑到大部分的神经网络使用的动量系数为0.9。包含Dropout时,动量系数设置为0.95~0.99会明显提高网络收敛速度。

失活率是Dropout引入的新超参,建议设置范围为[0.2, 0.5]。对于输入端设置通常为0.2,而隐藏层设置为0.5。太大的失活率导致较多的神经元训练过程中被丢弃,容易导致收敛速度慢,甚至欠拟合;太小的失活率则难以起到泛化的作用。

其具体任务相关的其它超参设置如下:

MINST:从训练数据中随机抽取10,000张样本作为验证数据集。在验证数据集上迭代一百万次,以获得最好验证误差下对应的超参。

CIFAR-10 & CIFAR-100:类似于MINST,随机从训练数据集中抽样5,000张图片作为验证数据集。以验证数据集上迭代到最好的误差的超参为最终配置。

ImageNet:具体参考ImageNet Classification with Deep Convolutional Neural Network

TIMIT:输入的Dropout保留率设置为0.8,网络隐含层的保留率设置为0.5。增加了最大范式正则化操作,其中参数c=4。初始学习率为0.1,动量系数为0.95。

测试评估

数据集测试

MINST:使用了NN(2-layers & 3-layers)+logistic/ReLU,和DBN/DBM+logistic的网络结构进行评估。每组网络均使用了原始配置和增加Dropout后的对比测试实验。在使用Dropout后,表现最好一组的误差由1.6%降低到1.35%。此外将激活函数从logistic替换为ReLU(1.25%)、增加最大范式正则化(1.06%)、以及增加网络的尺寸(0.95%)等操作,可进一步降低误差。针对较大尺寸的网络,未使用Dropout时,即使使用标准化的正则化方法以及早停训练机制,也较难保证较好的泛化能力。在使用Dropout后,即使不使用早停机制,也能的到较好的泛化能力。充分说明Dropout有效提高了网络泛化能力。

SVHN:使用了卷积神经网络+max pooling/maxout等配置的网络架构进行评估。表现最好的网络由三层卷积网络+两层全连接网络构成,从输入到隐含层的Dropout配置(保留率)为{0.9, 0.75, 0.75, 0.5, 0.5, 0.5},即对输入和卷积网络也增加了Dropout处理。在只对全连接层增加Dropout处理后,误差由3.95%降低到3.02%。增加卷积层Dropout处理后,误差进一步下降到2.47%。通常认为卷积层本身具有稀疏性,无需增加Dropout。由实验可知,对卷积层增加Dropout对误差也有改善,其原因可能在于增加Dropout后,增加了输入到全连接层的噪声。

ImageNet:性能最好的网络由卷积神经网络组成(AlexNet),由包含Dropout处理的神经网络架构在Top5上的错误率由传统特征提取分类的26%下降到16%,并以此获得ILSVRC-2012分类比赛的冠军。

TIMIT:对比实验在经过DBN预训练的NN网络(4\6\8)之间进行。在一个6层的NN网络上,增加Dropout处理,误差由23.4%下降到21.8%,在增加网络到8层时,误差进一步降低到19.7%。

Reuters-RCV1:在表现最好的网络上,使用Dropout后,错误率由31.05%下降到29.62%。在文本分类上,Dropout对性能的提升要远小于图像分类任务。

正则化对比

Dropout具有一定的正则化效果。其它常用的正则化方法包括L1、L2、KL稀疏化、最大范式等。通过在相同数据集(MINST)上使用同一网络架构,配合不同的正则化方法对比发现,Dropout+最大范式的组合正则化方法获得了最低的测试误差。

特征影响

可视化对比单层自动编码器学习到的特征,如下所示:

图2:特征图可视化对比[2]

在未使用Dropout时,每个神经元学习到的特征没有明显有意义的结构信息。一种可能的原因在于神经元之间相互协作而无需独立学习显著的特征。在使用Dropout后(p=0.5),每个神经元学习到了类似于点、边等明显的结构特征,可以独立完成对特征的提取。由此可知,Dropout的使用的确破坏了神经元之间相互依赖协作的工作模式,从而提高了神经元的独立学习能力。

稀疏性

正则化的目的在于增加模型的稀疏性,较好的稀疏性有助于提高模型的泛化能力和可解释性。一个稀疏良好的网络模型包含两层含义:1)在任意的输入下,网络中只有稀疏的神经元被激活响应;2)同一个神经元,在任意的输入下,具备稀疏的响应能力,即只有在特定的输入才响应,而大部分输入下则不响应。

统计神经元在不同的输入下响应的分布如下图所示:

图3:神经元响应分布[2]

每幅图的左子图显示在不同输入下,每个神经元平均被激活次数的分布百分比情况;右子图描述了被激活不同次数的神经元个数的分布情况。对比左边子图,使用Dropout后峰值左移,大部分神经元被激活的平均次数小于1,说明神经元在不同的输入下被激活次数降低。对比右子图,使用Dropout后,绝大多数的神经元没有被激活,只有少量神经元被激活,而且大部分反复被激活的次数较低。

通过对比,Dropout不仅降低了被激活神经元的数量,而且降低了相同神经元在多次输入下反复被激活的次数,有效的提高了模型的稀疏性。

训练集大小影响

使用同一个网络,在不同的数据集上训练网络,比较有无Dropout下的测试误差。在MINST上随机抽样得到不同规模([100, 500, 1k, 5k, 10k, 50k])的训练集。对比结果发现,在较小的数据集[100,500]时,由于严重的过拟合,测试误差都比较差,而且使用Dropout的误差更差。当数据集逐步增大时[1k, 5k],使用Dropout的测试误差急剧下降,并且优于基准测试。原因在于当前网络容量适合该规模的数据集,并且Dropout发挥了泛化作用。当进一步增大训练数据集时,Dropout和基准测试误差下降速度减少,但两者差距缩小。这是因为网络在较大数据集上本身的过拟合现象得到缓和,Dropout的效果提升不再明显。

模型均值评估

测试和推断阶段不使用Dropout,而是通过对网络权重(输出)进行(1-p)缩放,近似平均不同的网络模型。一种更准确但耗时的方法是采样训练阶段的k个不同网络模型,用于逐一测试和推断。将网络的预测结果平均,作为最终的预测结果。当k\rightarrow \infty时,这种蒙特卡洛平均采样结果将无限逼近真实预测值。

在MINST数据集上实验发现:当k=50时,预测值接近于通过权重缩放时得到的预测值。因此,通过简单的权重缩放来模拟多模型平均是可行的。

总结

在标准版本的Dropout提出来之后,又有很多新类型的Dropout陆续被提出,例如DropConnect、Standout等。尽管Dropout思想很简单,但有效的缓解了过拟合问题。

随着批归一化(Batch Normalization, BN)提出后,BN以其更好的性能和效果而得到广泛应用。但是,当Dropout与BN结合在一起时,却并不能获得额外的增益效果,结果反而变差。一种观点认为Dropout和BN有相似的正则化功能,两者之间不相融。最近的研究表明,两者之间的冲突关键在于网络状态切换过程中,存在神经方差(Neural Variance)不一致行为。简单来说,在使用BN时,测试阶段使用训练阶段的统计方差,在增加Dropout后,由于方差偏移作用,不同于(未使用Dropout)真实的测试方差,而导致预测结果产生错误偏差。

参考文献

[1] Geoffrey E. Hinton, Nitish Srivastava, Alex Krizhevsky, Ilya Sutskever, Ruslan R. Salakhutdinov. Improving neural networks by preventing co-adaptation of feature detectors

[2] Nitish Srivastava, Geoffrey Hinton, Alex Krizhevsky, Ilya Sutskever, Ruslan Salakhutdinov. Dropout: A Simple Way to Prevent Neural Networks from Overfitting

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,245评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,749评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,960评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,575评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,668评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,670评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,664评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,422评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,864评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,178评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,340评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,015评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,646评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,265评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,494评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,261评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,206评论 2 352

推荐阅读更多精彩内容