如何解决模型的过拟合问题?
前言:最近在复现前人工作,发现模型过拟合,尝试了很多种方法都没有解决,包括但不限于:
模型层面:
简化模型方式如下:
- 使用正则化层(Dropout, BatchNorm, LayerNorm)
- 减小模型规模(替换为更小的模型,减小参数量)。已知训练样本规模约为100k,替换为参数量约为1M的模型。
数据层面:
提升训练样本多样性,方式如下:
- 使用数据增强(JPEG压缩、Gaussian Blurring)
- 增大训练集规模
训练层面:
- 正则化,optimizer中使用
weight_decay=1e-4
- 早停策略(Early Stopping)
- batch size 调整使得对比学习损失发挥作用
- 学习率调整,避免模型陷入局部最优
Overfitting(过拟合)本质是模型在训练集上学得过“细”,记住了噪声或偶然模式,导致在测试集上泛化能力差。
然而,在尝试上述方法后,模型在训练集上的准确率接近100%但是在测试集上的准确率仍然不理想,只有70%左右,原因有待进一步探索。