深度学习5——过拟合、欠拟合与正则化
·
1. 过拟合与欠拟合
欠拟合
模型在训练集和验证集上效果都较差。
常见原因:
- 模型能力不足
- 训练轮数不足
- 学习率不合适
- 输入特征不足
- 数据或标签存在严重问题
- 正则化过强
过拟合
模型在训练集上效果很好,但在验证集或测试集上效果明显较差。
常见原因:
- 训练数据太少
- 模型过于复杂
- 训练轮数过多
- 数据噪声或错误标签较多
- 训练集不能代表真实场景
- 训练集和验证集分布差异较大
- 模型记住了背景、设备编号等无关特征
例如猫狗分类模型可能错误地学到:
室内背景 → 猫
草地背景 → 狗
而没有真正学习猫和狗本身的特征。
典型曲线:
训练损失持续下降
验证损失先下降,随后上升
这通常表示模型从某个 epoch 开始出现过拟合。
2. 正则化
正则化是一组用于降低过拟合风险、提高泛化能力的方法。
常见方法:
- L1正则化
- L2正则化
- 权重衰减
- Dropout
- 数据增强
- Early Stopping
- 降低模型复杂度
- 增加训练数据
- Label Smoothing
(1) L1正则化
在原始损失函数上增加权重绝对值之和:
loss = loss0 + λ * Σ|w|
特点:
- 对非零权重施加相对稳定的收缩作用
- 容易让部分权重变成0
- 可以产生稀疏模型
- 在一定程度上具有特征选择作用
(2) L2正则化
在原始损失函数上增加权重平方和:
loss = loss0 + λ * Σw^2
特点:
- 权重越大,惩罚越强
- 通常不会直接让大量权重变为0
- 会让权重整体变得更加平滑、均匀
- 减少模型对某些单一特征的过度依赖
例如原始梯度为3:
w = 10
lr = 0.1
gradient = 3
普通更新:
w_new = 10 - 0.1 * 3
= 9.7
加入L2正则化后,假设 λ=0.1:
loss = loss0 + λ*w^2
新的梯度:
gradient_total = 3 + 2*λ*w
= 3 + 2*0.1*10
= 5
w_new = 10 - 0.1*5
= 9.5
L2项额外推动权重向0缩小。
较大的权重可能使模型对输入变化更加敏感,但“权重大”不等于一定过拟合,只能看作一种风险因素。
(3) 权重衰减
权重衰减直接在参数更新过程中缩小权重:
w_new = (1 - lr*wd)*w - lr*gradient
其中:
- lr:学习率
- wd:权重衰减系数
它相当于先把权重乘以一个略小于1的数,再进行梯度更新。
对于普通 SGD,L2正则化与权重衰减在一定条件下近似等价;对于 Adam 等自适应优化器,两者通常并不完全等价。
(4) Dropout
Dropout是一种针对神经网络结构的正则化方法。
训练时:
- 按照一定概率随机关闭部分神经元
- 每个 batch 被关闭的神经元可能不同
- 防止网络过度依赖少数神经元或特征
推理时:
- 使用完整网络
- 主流框架通常在训练阶段自动完成缩放,因此推理阶段不需要手动调整
例如:
原始神经元:
A B C D E
某次训练:
A × C × E
下一次训练:
× B C D ×
Dropout迫使网络学习更加分散、鲁棒的特征。
总结:
- L1、L2:在损失函数层面约束参数
- Weight Decay:在参数更新层面缩小权重
- Dropout:在网络结构层面随机关闭神经元
- 数据增强:在输入数据层面增加变化
- Early Stopping:在训练过程层面提前停止
更多推荐




所有评论(0)