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
标签:训练,模型,拟合,正则,防止,简单,数据,我们 From: https://www.cnblogs.com/amboke/p/16634666.html