当前位置:   article > 正文

深入探讨机器学习中的过拟合现象及其解决方法

过拟合

1. What❓

过拟合Overfitting)是指在机器学习中,模型在训练集上表现较好,但在测试集或实际应用中表现较差的现象。过拟合发生时,模型过于复杂地学习了训练集中的噪声、异常值或特定模式,从而导致对新样本的泛化能力下降。

过拟合通常是由于模型在训练过程中过于强调训练集上的表现,将训练集中的噪声或特定模式也当作了普遍规律而过度拟合。过拟合可能导致模型过于复杂,过于依赖训练集中的特定样本,从而在面对新样本时无法进行准确的预测,从而降低了模型的泛化性能。

过拟合的表现通常包括训练集上的误差较低,但测试集上的误差较高,模型在训练集上的表现比在测试集上要好,模型对噪声或异常值敏感,对新样本的预测不准确等。

上图中,模型的训练误差以蓝色显示,验证误差以红色显示。随着模型的训练周期增大,验证误差增加(正斜率)而训练误差稳步下降(负斜率),则模型可能发生了过度拟合的情况。 最好的预测和拟合模型将是验证误差具有其全局最小值的地方,也就是图中的虚线位置。

2. Solutions❗️

为了解决或者是缓解过拟合问题,以下是一些常用的方法:

2.1 数据增强

  • 数据增强Data Augmentation)是一种在机器学习和深度学习中用于增加训练数据量的技术。它通过对原始训练数据进行一系列变换操作,生成新的训练样本,从而扩增了训练数据的规模和多样性。数据增强可以帮助模型更好地学习到数据中的模式和特征,从而提高模型的泛化性能,减少过拟合的风险。
  • 数据增强技术可以应用于各种类型的数据,包括图像、文本、语音等。常用的图像数据增强操作包括随机翻转、随机旋转、随机缩放、随机裁剪、色彩变换等,如下图所示。对于文本数据,数据增强可以包括随机删除、随机替换、随机插入等操作。对于语音数据,数据增强可以包括加入噪声、变换语速、变换音调等操作。
  • 通过数据增强,可以生成具有多样性的训练样本,从而提高模型的鲁棒性,使其对于新的、未见过的数据更具泛化性能。数据增强也可以减少模型在训练过程中对于少量标注数据的依赖,从而在数据量较小的情况下仍能训练出效果较好的模型。

2.2 正则化

  • 正则化Regularization):在损失函数中引入正则化项,如 L1 正则化(Lasso)、L2 正则化(Ridge)等,用于限制模型参数的大小,减小模型的复杂度,从而减少过拟合。
  • L1 正则化可以将一些模型参数稀疏化,即将一些参数设为零,从而实现特征选择的效果;而 L2 正则化会使得模型参数向零的方向收缩,从而减小参数的幅度,降低模型的复杂性。
    L 1 : N e w L o s s F u n c t i o n    =    O r i g i n a l L o s s F u n c t i o n    +    λ ∗ ∥ w ∥ 1 L1\text{:}NewLossFunction\,\,=\,\,OriginalLossFunction\,\,+\,\,\lambda *\left\| w \right\| _1 L1NewLossFunction=OriginalLossFunction+λw1
    L 2 : N e w L o s s F u n c t i o n    =    O r i g i n a l L o s s F u n c t i o n    +    λ ∗ ∥ w ∥ 2 2 L2\text{:}NewLossFunction\,\,=\,\,OriginalLossFunction\,\,+\,\,\lambda *{\left\| w \right\| _2}^2 L2NewLossFunction=OriginalLossFunction+λw22
  • L1 正则化(Lasso 正则化):Original 是原始的损失函数(例如均方误差、交叉熵等),λ 是正则化参数(用于控制正则化项的权重),w 是模型的参数向量,||w||₁ 是参数向量 w 的 L1 范数(绝对值之和)。
  • L2 正则化(Ridge 正则化):其中,损失函数、λ 和 w 的定义与 L1 正则化相同,但是这里的正则化项是参数向量 w 的 L2 范数的平方(参数的平方和)。
  • 需要注意的是,正则化参数 λ 的选择对于正则化技术的效果非常关键,λ 越大,正则化项对模型的惩罚越强,模型的复杂性越低;而 λ 越小,正则化项对模型的惩罚越弱,模型的复杂性越高。因此,在实际应用中,需要根据具体问题和数据集的情况,合理选择正则化参数的取值。

2.3 早停策略

  • 早停策略Early Stopping):在训练过程中,根据验证集的性能表现,在验证集上性能不再提升时提前停止训练,从而防止模型在训练集上过拟合。
  • 如上图所示,我们通常在验证集的误差曲线或者准确率曲线的拐点处停止训练,从而防止模型的过拟合。

2.4 随机丢弃

  • 随机丢弃Dropout):在训练过程中,随机丢弃一些神经元的输出来减少神经元之间的依赖性,也就是输出置为零,如下图所示,这样可以强制网络在训练时学习多个独立的子网络,从而增加模型的泛化能力。
  • Dropout 的设置大小通常是一个超参数,需要在训练过程中进行调优。一般情况下,随机丢弃的大小在 0.1 到 0.5 之间比较常见,但最佳的设置大小取决于具体的问题和模型架构。
  • 在实践中,可以通过尝试不同的丢弃率进行模型训练,然后使用验证集上的性能指标来选择最佳的丢弃率。通常情况下,较大的丢弃率可以提供更强的正则化效果,但可能会降低模型的训练速度和预测性能,而较小的丢弃率则可能不足以减少过拟合。因此,建议从较小的丢弃率开始,例如 0.1 或 0.2,然后逐渐增加丢弃率,直到在验证集上达到最佳性能为止。

2.5 增加训练数据量

  • 通过增加训练数据量,从而减少模型在训练集上的过拟合风险,提高模型的泛化能力。
  • 给模型来一点大数据(Big Data)的调教。
    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/766968
推荐阅读
相关标签