8种防止过拟合的简单技术

8种防止过拟合的简单技术

当模型在训练数据上表现良好但对未见数据的泛化能力较差时,就会发生过度拟合。过拟合是机器学习中一个非常常见的问题,并且有大量文献致力于研究防止过拟合的方法。在下文中,我将描述八种简单的方法来缓解过度拟合,方法是在每种方法中只对数据、模型或学习算法进行一次更改。

目录

  1. 坚持
    2. 交叉验证
    3. 数据增强
    4. 特征选择
    5. L1/L2 正则化
    6. 移除层数/每层的单元数
    7.辍学
    8. 提前停止

1. 坚持(数据)

我们可以简单地将数据集分成两组:训练和测试,而不是使用我们所有的数据进行训练。常见的拆分比率是 80% 用于训练,20% 用于测试。我们训练我们的模型,直到它不仅在训练集上而且在测试集上表现良好。这表明了良好的泛化能力,因为测试集代表了未用于训练的未见数据。然而,这种方法需要足够大的数据集才能在拆分后进行训练。

2. 交叉验证(数据)

我们可以将数据集拆分为 ķ 组(k 折交叉验证)。我们让其中一组作为测试集(请参阅保留解释),其他组作为训练集,并重复此过程,直到每个单独的组都被用作测试集(例如, ķ 重复)。与 hold-out 不同,交叉验证允许所有数据最终用于训练,但也比 hold-out 计算成本更高。

3.数据增强(数据)

更大的数据集将减少过度拟合。如果我们无法收集更多数据并且受限于当前数据集中的数据,我们可以应用数据增强来人为地增加数据集的大小。例如,如果我们正在为图像分类任务进行训练,我们可以对图像数据集执行各种图像转换(例如,翻转、旋转、重新缩放、移动)。

4. 特征选择(数据)

如果我们只有有限数量的训练样本,每个都有大量的特征,我们应该只选择最重要的特征进行训练,这样我们的模型就不需要学习这么多的特征并最终过拟合。我们可以简单地测试不同的特征,为这些特征训练单个模型,并评估泛化能力,或者使用各种广泛使用的特征选择方法之一。

5. L1/L2正则化(学习算法)

正则化是一种限制我们的网络学习过于复杂的模型的技术,这可能会导致过拟合。在 L1 或 L2 正则化中,我们可以在成本函数上添加一个惩罚项,以将估计的系数推向零(而不是取更多的极值)。 L2 正则化允许权重衰减到零但不为零,而 L1 正则化允许权重衰减到零。

6. 移除层数/每层的单元数(模型)

如 L1 或 L2 正则化中所述,过于复杂的模型可能更可能过拟合。因此,我们可以直接通过移除层来降低模型的复杂度,减小模型的大小。我们可以通过减少全连接层

7. Dropout(模型)

通过将 dropout(一种正则化形式)应用于我们的层,我们忽略了具有设定概率的网络单元的子集。使用 dropout,我们可以减少单元之间的相互依赖学习,这可能导致过度拟合。然而,由于 dropout,我们的模型需要更多的 epoch 才能收敛。

8. 早停(模型)

我们可以首先针对任意数量的 epoch 训练我们的模型并绘制验证损失图(例如,使用保留)。一旦验证损失开始下降(例如,停止减少而是开始增加),我们停止训练并保存当前模型。我们可以通过监控损失图或设置提前停止触发器来实现这一点。保存的模型将是不同训练时期值之间泛化的最佳模型。

你已经到了文章的结尾!希望您现在拥有一个对抗过度拟合的方法工具箱⚔️。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/1378/36132906

posted @   哈哈哈来了啊啊啊  阅读(845)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示