[过拟合]从诞生到现在Dropout的重大事迹 + 原理和使用

您所在的位置:网站首页 方差分析基本原理是谁首先提出的 [过拟合]从诞生到现在Dropout的重大事迹 + 原理和使用

[过拟合]从诞生到现在Dropout的重大事迹 + 原理和使用

2024-07-07 11:19| 来源: 网络整理| 查看: 265

一、Dropout历史 1.1 描述

2012年,Hinton和Srivastava等人首先提出了Dropout的思想。即当一个复杂的前馈神经网络被训练在小的数据集时,容易造成过拟合。为了防止过拟合,可以通过阻止特征检测器的共同作用来提高神经网络的性能。

同年,Alex、Hinton在其论文《ImageNet Classification with Deep Convolutional Neural Networks》中用到了Dropout算法,用于防止过拟合。并且,这篇论文提到的AlexNet网络模型引爆了神经网络应用热潮,并赢得了2012年图像识别大赛冠军,使得CNN成为图像分类上的核心算法模型。

2013年,Li Wan和Yann LeCun等人介绍了Drop Connect,是另一种减少算法过拟合的正则化策略,是 Dropout 的一般化。在 Drop Connect 的过程中需要将网络架构权重的一个随机选择子集设置为零,取代了在 Dropout 中对每个层随机选择激活函数的子集设置为零的做法。Drop Connect 和 Dropout 相似的地方在于它涉及在模型中引入稀疏性,不同之处在于它引入的是权重的稀疏性而不是层的输出向量的稀疏性。

2014年,Srivastava和Hinton等人完整的对dropout进行了描述,并证明了比当时使用的其他正则化方法有了重大改进。实证结果也显示dropout在许多基准数据集上获得了优秀的结果。Dropout很快受到了各类研究的青睐。在批归一化(BN)提出之前,Dropout 几乎是所有的最优网络的标配,直到Ioffe & Szegedy 于 2015 提出批归一化(BN)技术,通过运用该技术,不仅可以加速现代模型的速度,而且可以以正则项的形式来提高基线水平。因此,批归一化几乎应用在近期所有的网络架构中,这说明了它强大的实用性和高效性。

但是,当 Dropout 和 BN 结合在一起时并不能获得额外的增益。事实上,当一个网络同时使用这两者时,甚至会得到更差的结果。Ioffe & Szegedy 于 2015 年发表的文章中就已经讨论过,BN 在某些情况下会削弱 Dropout 的效果。他们揭露了两者之间的不相容性,从而推测 BN 提供了与 Dropout 相似的正则化功能。很多现代模型 如 Resnet,Densenet 等为这一观点添加佐证,它们在只使用 BN 的情况下得到更好的结果。2018年,南京理工大学和清华大学的研究发现理解 Dropout 与 BN 之间冲突的关键是网络状态切换过程中存在神经方差的(neural variance)不一致行为,他们表明 Dropout 在网络测试的时候神经元会产生方差偏移,因而进一步分析与理解如何能避免方差偏移风险,并克服二者组合的局限性。

2017年,张弛原等人通过实验表明:即使是在有损的标签上(其中部分或所有真实标签被随机标签替换),深度网络也能记忆整个数据。而当在有损的标签上训练时,dropout等常用于神经网络的正则化算法(即模型正则化器(model regularizer))在提升深度卷积神经网络(CNN)的生成表现上的效果不佳。针对这一问题,来自谷歌的Lu Jiang和Li Fei-Fei等人提出了一种在数据维中正则化深度网络的全新技术。这种方法是学习一个名叫 MentorNet 的神经网络来监督基础网络 StudentNet 的训练。这一技术受到了课程学习的启发并且通过神经网络从数据学习课程而推进了这一理论。他们同时在几个基准上演示了 MentorNet 的效果,实验表明其能够显著提升有损训练数据上当时最佳深度网络的泛化表现。

1.2 主要事件  年份事件相关论文/Reference2012

Hinton和Srivastava等人首先提出了Dropout的 思想

Hinton, G. E.; Srivastava, N.; Krizhevsky, A.; Sutskever, I. and Salakhutdinov, R. (2012). Improving neural networks by preventing co-adaptation of feature detectors. CoRR,2013Li Wan和Yann LeCun等人介绍了Drop ConnectWan, L. et al. (2013). Regularization of Neural Networks using DropConnect.  JMLR.2014Srivastava和Hinton等人提出dropoutSrivastava, N.; Hinton, G.; Krizhevsky, A. et al. (2014). Dropout: A simple way to prevent neural networks from overfitting. The Journal of Machine Learning Research. 15(1): 1929-1958.2015Ioffe & Szegedy提出批归一化(BN)技术,但BN 在某些情况下会削弱 Dropout 的效果Ioffe, S.; Szegedy, C. (2015). Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift. arXiv:1502.03167.2017张弛原等人通过实验表明当在有损的标签上训练时,dropout等常用于神经网络的正则化算法(即模型正则化器(model regularizer))在提升深度卷积神经网络(CNN)的生成表现上的效果不佳Zhang, C.; Bengio, S.; Hardt, M.; Recht, B. and Vinyals, O. (2017). Understanding deep learning requires rethinking generalization. In ICLR.2017来自谷歌的Lu Jiang和Li Fei-Fei等人提出了一种在数据维中正则化深度网络的全新技术Jiang, L.; Zhou, Z.; Leung, T.; Li, L-J.; Fei-Fei, L. (2017). MentorNet: Regularizing Very Deep Neural Networks on Corrupted Labels. arXiv:1712.05055.2018南京理工大学和清华大学的研究发现理解 Dropout 与 BN 之间冲突的关键是网络状态切换过程中存在神经方差的(neural variance)不一致行为Li, X.; Chen, S.; Hu, X.; Yang, J. (2018). Understanding the Disharmony between Dropout and Batch Normalization by Variance Shift. arXiv:1801.05134v1.   二、再谈Dropout

在机器学习中,过拟合是一个非常常见的问题. 

过拟合(overfitting)指的是只能拟合训练数据, 但不能很好地拟合不包含在训练数据中的其他数据的状态[来自 斋藤康溢]

但是机器学习的目标本来就是提高泛化能力,在数据不包含在训练数据中,也希望模型能够准确地去预测.因此,抑制过拟合是十分重要的.而正则化是为了防止过拟合的,进而增强泛化能力  正则化的几种常用方法:

L1 & L2范数

训练集增强

随机失活(dropout)

提前终止(earlystopping)

本篇讲解的是随机失活(Dropout)

 

2.1 原理

dropout 是一种计算方便但功能强大的正则化方法,适用于神经网络

按神经网络自身的不同结构,随机失活的实现方法有差异。对多层感知器(Multi-Layer Perceptron, MLP),随机失活通常将选中节点的输出归零[1];对卷积神经网络(Convolutional Neural Network, CNN),随机失活可以随机将卷积核的部分元素归零,即随机连接失活(drop connect) [2]  ,或在多通道情形下随机归零整个特征图的通道,即空间随机失活(spatial dropout) [3]  ;对循环神经网络(Recurrent Neural Network, RNN),随机失活按网络的拓扑结构可以作用于每个时间步的输入和状态矩阵 [4]   。

基本步骤:在每一次的迭代(iteration)中,随机删除(归零)一部分节点,只训练剩下的节点。每次iteration都会随机删除,每次iteration删除的节点也都不一样,相当于每次迭代训练的都是不一样的网络, 这种正则化方法可以看成是一种集成方法,即集成每个批量所训练的不同网络架构。

意义: 通过这样的方式降低节点之间的关联性以及模型的复杂度,从而达到正则化的效果。引入随机失活后,各节点的“重要性”会被平衡   ,神经网络的每个节点都会贡献内容,不会出现少数高权重节点完全控制输出结果的情况,因此降低了网络的结构风险

PS: 图左为dropout之前(Standard Neural Network),图右为dropout之后(Network after Dropout)

 

2.2 使用

说dropout简单是因为你只需要设置一个超参数 keep_prob,这个参数的意义是每层节点随机保留的比例,而被丢弃的概率为 1 − keep_prob, 比如将 keep_prob 设置为 0.7,那么就会随机30%的节点消失,消失这个动作其实很简单,只是将这一层的参数矩阵与根据 keep_prob 生成的 {0, 1} 矩阵做 逐点乘积,当然前向传播与反向传播都需要做以上的操作, 所以被丢弃时不参与前向传播计算与参数更新的.

dropout参数在不同的框架下不一样,tensorflow中p是保留,keras中p是删除

pytorch里面的dropout,p是代表丢弃的概率,p越大,神经元被丢弃的概率越高。

dropout 最佳实践:

[描述来源:深度学习模型的简单优化技巧|机器之心]

使用 20-50 % 的 dropout,建议输入 20%。太低,影响可以忽略;太高,可能欠拟合。在输入层和隐藏层上使用 dropout。这已被证明可以提高深度学习的性能。使用伴有衰减的较大的学习速率,以及较大的动量。限制权重!较大的学习速率会导致梯度爆炸。通过对网络权值施加约束(如大小为 5 的最大范数正则化)可以改善结果。使用更大的网络。在较大的网络上使用 dropout 可能会获得更好的性能,从而使模型有更多的机会学习独立的表征。   三、瓶颈

dropout的缺点在于,需要将训练集分为不同子集输入每一次的迭代??,这就需要较大的训练集,所以在训练集较小的情况下,dropout的效果可能并不好。我们上面也说过,增大数据集是最好的正则化方式,所以在增大数据集的情况下,使用 dropout 需要使用的计算代价可能会比他带来正则化效果更高,这需要我们在实际使用场景中做取舍。

随机失活通常降低了神经网络的计算开销,因为归零操作可以得到稀疏矩阵。但在迭代次数较多的学习任务,例如RNN的学习中,反复生成随机数会带来额外的计算开销[4] 

Dropout存在的问题在上文已经有所提及,其无法与BN一起使用,BN 在某些情况下会削弱 Dropout 的效果;另外,对于数据标签有损的情况,dropout对于CNN的效果不明显。[描述来源:机器之心]

作为正则化算法的一种,目前如何提升模型的泛化能力,是所有有关正则化算法的研究的核心。在此基础上,不同的研究有各自针对的问题,如上文提到的谷歌的Lu Jiang和Li Fei-Fei等人专注于数据标签有损的情况。

  Reference:

1、深度学习中Dropout原理解析: https://blog.csdn.net/program_developer/article/details/80737724

2、机器之心Dropout: https://www.jiqizhixin.com/graph/technologies/1c91194a-1732-4fb3-90c9-e0135c69027e

3、机器学习中的正则化(Regularization) :https://www.jianshu.com/p/569efedf6985

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3