【顶刊2023】重新审视Dropout层的作用,不止可有效防止过拟合!来源:《Dropout Reduces Underfitting》

简介: 【顶刊2023】重新审视Dropout层的作用,不止可有效防止过拟合!来源:《Dropout Reduces Underfitting》

前言

  在大众的普遍认知里面我们都知道DROPOUT是一种正则化方法,通过在训练过程中以一定的概率随机地将神经元的输出设置为0来防止过拟合。这是早在2012年Hinton等人提出的观点且到现在为止的确经受住了各类实验的验证。今年的顶刊《Dropout Reduces Underfitting》中提出了Dropout层居然可以解决欠拟合问题。

精要概括

  在神经网络训练中只是在训练的初始阶段使用 Dropout,训练一段时间之后不用了。这与没有 全程Dropout 的模型和未这样使用Dropout相比,训练初阶段使用Dropout模型的最终训练损失更低。作者也在很多模型中证明了这样可以解决模型欠拟合问题的,这种手段命名为Early Dropout。

image.png


基础回顾

  在神经网络训练过程中欠拟合和过拟合是较为常遇见的两大类问题,在这里先做个基础回顾,温故而知新。

过拟合

  在深度学习中,过拟合(overfitting)是指模型过度适应训练数据,导致在新的数据上表现不佳。也就是说,模型在训练集上的表现非常好,但是在测试集上的表现却很差。过拟合的原因通常是由于模型的容量过大,模型可以学习到训练数据中的噪声和随机性,从而导致模型对于训练数据过度拟合。过拟合还可能由于训练数据过少、噪声较多、特征工程不足等原因导致。过拟合会导致模型无法泛化到新的数据上,丧失了模型的实用价值。

              image.png

  在模型训练过程中,可以通过监控训练集和测试集的误差来判断模型是否出现了过拟合。如果模型在训练集上的误差持续下降,但在测试集上的误差反而开始上升,就说明模型出现了过拟合问题,需要及时采取相应的措施来解决。

欠拟合

  在深度学习中,欠拟合(underfitting)是指模型无法充分拟合训练数据的特征,表现为模型在训练集和测试集上的误差都很大,不能很好地捕捉到数据的规律。也就是说,模型的表现能力过低,不能很好地适应数据;欠拟合的原因可能是模型的复杂度过低,模型无法拟合数据的复杂特征。欠拟合还可能由于训练数据过少、特征工程不足等原因导致。欠拟合会导致模型的预测能力很差,无法有效地利用训练数据,丧失了模型的实用价值。

               image.png

  在模型训练过程中,可以通过监控训练集和测试集的误差来判断模型是否出现了欠拟合。如果模型在训练集和测试集上的误差都很大,无法有效地适应数据,就说明模型出现了欠拟合问题,需要及时采取相应的措施来解决。

Dropout解决过拟合

  Dropout是一种用于深度神经网络的正则化技术,可以有效地防止过拟合。Dropout的原理是在训练过程中随机地关闭一些神经元,从而减少模型中神经元之间的相互依赖,强制模型学习更加鲁棒和通用的特征。具体来说,Dropout在每一次训练迭代中以一定的概率随机地关闭神经元,这样相当于对每个神经元都添加了一个二元的掩码(0或1),如果掩码为0则表示该神经元被关闭了,不参与该次迭代的计算。这个概率一般是在0.2到0.5之间。

image.png

  在测试时,Dropout则不再随机关闭神经元,而是保留所有的神经元,并且将每个神经元的输出乘以保留该神经元的概率,以保持网络的期望输出值不变。这个过程相当于对每个神经元的输出进行了加权平均,可以视作是集成了许多不同的子模型,从而使得模型更加稳健和泛化能力更强。

  因此,Dropout在训练过程中可以避免过拟合的问题,提高模型的泛化能力,同时可以加速训练,避免神经元之间的相互适应和共适应。

python

复制代码

def dropout_layer(X, dropout):  
    assert 0 <= dropout <= 1  
    # 在本情况中,所有元素都被丢弃  
    if dropout == 1:  
        return torch.zeros_like(X)  
    # 在本情况中,所有元素都被保留  
    if dropout == 0:  
        return X  
    mask = (torch.rand(X.shape) > dropout).float()  
    return mask * X / (1.0 - dropout)

Dropout解决欠拟合

  从精要概括中我们可得到Early Dropout的工作机制,那么我们分别从下述的几个角度来分析Dropout解决欠拟合的原因。

  1. 梯度的幅值
  2. 模型距离
  3. 梯度方向方差
  4. 梯度方向误差
  5. 偏差与方差权衡

   上述的原因理论解释方面大家可详见博客前面的论文地址,这里我们只放实验结构图供大家参考学习。

梯度的幅值&模型距离

image.png

梯度方向方差

image.png

梯度方向误差

image.png



相关文章
|
机器学习/深度学习 PyTorch 算法框架/工具
【论文泛读】 ResNeXt:深度神经网络的聚合残差变换(ResNet的改进,提出了一种新的维度)
【论文泛读】 ResNeXt:深度神经网络的聚合残差变换(ResNet的改进,提出了一种新的维度)
【论文泛读】 ResNeXt:深度神经网络的聚合残差变换(ResNet的改进,提出了一种新的维度)
|
5月前
LeNet-5实现的过程
【7月更文挑战第28天】LeNet-5实现的过程。
74 2
|
7月前
|
机器学习/深度学习 计算机视觉
YOLOv8改进 | 损失函数篇 | SlideLoss、FocalLoss分类损失函数助力细节涨点(全网最全)
YOLOv8改进 | 损失函数篇 | SlideLoss、FocalLoss分类损失函数助力细节涨点(全网最全)
762 0
|
7月前
|
机器学习/深度学习 算法 数据建模
SPSS多层感知器 (MLP)神经网络预测全国污染物综合利用量数据
SPSS多层感知器 (MLP)神经网络预测全国污染物综合利用量数据
|
7月前
|
机器学习/深度学习 计算机视觉
【SPP】来自何凯明在2015年发表的顶刊。一起学习池化层的变形体SPP
【SPP】来自何凯明在2015年发表的顶刊。一起学习池化层的变形体SPP
75 0
【SPP】来自何凯明在2015年发表的顶刊。一起学习池化层的变形体SPP
|
7月前
|
机器学习/深度学习 计算机视觉
YOLOv5改进 | 损失函数篇 | SlideLoss、VFLoss分类损失函数助力细节涨点(全网最全)
YOLOv5改进 | 损失函数篇 | SlideLoss、VFLoss分类损失函数助力细节涨点(全网最全)
526 0
|
机器学习/深度学习 算法框架/工具
机器(深度)学习中的 Dropout
机器(深度)学习中的 Dropout
268 0