这是个深度学习中比较常见的问题。网上有好多解答,我就梳理一下:
1. 更换网络结构
首先从模型上解决的一个很好的例子是rsnet可以缓解过拟合的风险,更深的网络通常更容易过拟合 ,但ResNet通过**跳跃连接(skip connections)**,使梯度能够有效传播,避免梯度消失问题,同时让模型能学习更深层次的特征。通过可以参考。
hyshhh:何恺明ResNet(残差网络)------彻底改变深度神经网络的训练方式

2. 早停法
然后进行早停法也是一种提高泛化能力的方法它通过监控验证集损失(Validation Loss),在模型开始过拟合之前停止训练,从而提高泛化能力。
- 初始阶段 :训练损失 & 验证损失 都下降(模型正在学习)。
- 中期阶段 :训练损失继续下降,但验证损失下降变慢(模型学习到较好的特征)。
- 后期阶段 :训练损失继续下降,但验证损失开始上升 (模型过拟合,记住了训练数据的细节,但无法泛化到新数据)。 早停法的关键 : 当发现验证集损失不再下降或开始上升 ,就停止训练,防止模型在训练集上过度拟合。

3. 更换损失函数
Focal Loss(焦点损失,适用于类别不均衡)
- 为什么?
- 传统交叉熵容易被简单样本主导,导致模型忽视难分类样本。
- Focal Loss 降低了对易分类样本的关注,并强化了对困难样本的学习。
- 适用任务:目标检测(如 RetinaNet)、医学图像分类、小样本分类。

4. 数据增强
数据增强是一种最常见的提高泛化能力的方式
(1) 数据增强(Data Augmentation)
- 通过对训练数据进行变换,增加数据多样性,使模型学习到更加稳健的特征,防止过拟合。
- 图像任务:
- 几何变换(旋转、缩放、翻转、剪切)
- 颜色扰动(亮度、对比度、色调变化)
- Cutout、Mixup、CutMix(随机遮挡或混合样本)
- 时序任务:
- 时间窗口变化、随机抖动、噪声扰动
(2) 数据清理 & 去噪
- 确保数据标注准确,避免错误标签影响模型学习(Label smoothing 也可以缓解标注错误的影响)。
- 处理噪声数据,减少错误示例对模型学习的干扰。
(3) 增大数据集
- 采集更多真实数据(如果可能)。
- 使用合成数据(如GAN生成数据、物理仿真数据)。
- 半监督学习 & 伪标签(利用未标注数据进行训练)。
5. 正则化
比较少见的一种是对正则化的处理,主要方法如下
L1/L2 正则化(权重衰减,Weight Decay) L1 正则化 :鼓励稀疏性(让部分权重变为0)。 L2 正则化 (常见于AdamW、SGD):防止权重过大,减少过拟合。 Dropout (随机丢弃神经元): 训练时随机让部分神经元失效,防止神经元对特定模式的过度依赖。 **Batch Normalization / Layer Normalization:**归一化输入分布,提高训练稳定性,减少对特定样本的过拟合。

推荐阅读:
hyshhh:李沐ResNest:残差网络(resnet)经典改进深入解析------Split-Attention Networks。
hyshhh:【论文】ICCV2017------Soft-NMS一种NMS(非极大值抑制)的改进方法