Overfitting and Regularization/zh
| Article | |
|---|---|
| Topic area | Machine Learning |
| Difficulty | Intermediate |
| Prerequisites | Loss Functions, Neural Networks |
当机器学习模型对训练数据学习得过于充分——捕捉到噪声和特异性而非潜在模式——从而在未见过的数据上表现不佳时,就会发生过拟合。正则化是用于防止过拟合并提高模型泛化能力的一系列技术。
偏差-方差权衡
对未见过数据的预测误差可以分解为三个组成部分:
- $ \text{Error} = \text{Bias}^2 + \text{Variance} + \text{Irreducible noise} $
- 偏差衡量模型的平均预测与真实值的距离。高偏差表明模型过于简单,无法捕捉数据的结构(欠拟合)。
- 方差衡量预测在不同训练集之间的波动程度。高方差表明模型对特定训练数据过于敏感(过拟合)。
目标是找到使总误差最小化的最佳平衡点。参数过少的模型会欠拟合(高偏差);参数过多的模型会过拟合(高方差)。正则化技术通过约束模型复杂度来调整这种平衡,接受略高的偏差以换取大幅降低的方差。
检测过拟合
最清晰的诊断方法是比较训练和验证的性能:
- 训练损失下降,验证损失也下降 —— 模型仍在学习;继续训练。
- 训练损失下降,验证损失上升 —— 模型正在过拟合;应用正则化或停止训练。
- 训练损失高,验证损失高 —— 模型欠拟合;增加容量或延长训练时间。
在训练迭代过程中绘制这些学习曲线是必不可少的实践。训练准确率与验证准确率之间的较大差距是过拟合的标志。
L2 正则化(权重衰减)
L2 正则化添加一个与权重平方大小成正比的惩罚项:
- $ J(\theta) = L(\theta) + \frac{\lambda}{2}\|\theta\|_2^2 = L(\theta) + \frac{\lambda}{2}\sum_j \theta_j^2 $
正则化项的梯度为 $ \lambda \theta $,因此每个权重在每次更新时都会以乘法方式向零收缩——这就是权重衰减名称的由来。超参数 $ \lambda $ 控制正则化的强度。
从贝叶斯角度看,L2 正则化等价于对权重施加高斯先验。它鼓励小的、分布式的权重,并抑制任何单个权重变得过大。
L1 正则化
L1 正则化对绝对值之和进行惩罚:
- $ J(\theta) = L(\theta) + \lambda \|\theta\|_1 = L(\theta) + \lambda \sum_j |\theta_j| $
与 L2 不同,L1 惩罚会将许多权重精确地驱动至零,产生稀疏模型。这使得 L1 正则化对特征选择非常有用。LASSO(Least Absolute Shrinkage and Selection Operator,最小绝对值收缩与选择算子)是 L1 正则化线性回归的经典例子。
| 属性 | L1 | L2 |
|---|---|---|
| 惩罚项 | $ \lambda\sum|\theta_j| $ | $ \frac{\lambda}{2}\sum\theta_j^2 $ |
| 对权重的影响 | 将许多权重驱动至精确为零 | 将所有权重收缩至零附近 |
| 稀疏性 | 是 | 否 |
| 贝叶斯解释 | 拉普拉斯先验 | 高斯先验 |
| 使用场景 | 特征选择、可解释性 | 通用正则化 |
Dropout
Dropout(Srivastava 等,2014)是一种专门用于神经网络的正则化技术。在训练期间,每个神经元在每次前向传播时以概率 $ p $ 被随机"丢弃"(置零)。这可以防止神经元相互协同适应,并迫使网络学习冗余表示。
在测试时,所有神经元都处于激活状态,但其输出被缩放 $ (1 - p) $ 倍以补偿较多的激活单元数量(或等效地,在训练期间输出被缩放 $ 1/(1-p) $ 倍——inverted dropout)。
Dropout 可以解释为一种近似的集成方法:每个训练步骤使用不同的子网络,而最终模型近似于指数级多个子网络的平均预测。
早停
早停(early stopping)在训练期间监控验证损失,并在验证损失停止改善时停止优化。这是最简单且最有效的正则化策略之一。
在实践中,耐心(patience)参数指定了在最后一次改善之后等待多少个 epoch 再停止。模型权重在验证损失最低的时刻被保存,并在结束时恢复。
早停作为一种隐式的正则化形式:它限制了训练步骤的有效数量,防止模型完全记忆训练数据。
数据增强
数据增强(data augmentation)通过应用保留标签的变换来增加训练集的有效规模和多样性。对于图像数据,常见的增强方法包括:
- 随机水平/垂直翻转
- 随机裁剪和缩放
- 颜色抖动(亮度、对比度、饱和度)
- 旋转和仿射变换
- Mixup(对图像对及其标签进行线性插值)
- Cutout(遮蔽随机区域)
对于文本数据,增强方法包括同义词替换、回译和释义。数据增强通过让模型接触更多样化的输入而无需收集额外数据,从而减少过拟合。
其他正则化技术
- Batch normalization —— 对层输入进行归一化可以减少内部协变量偏移,并具有轻微的正则化效果。
- 标签平滑(label smoothing) —— 将 one-hot 目标替换为混合形式,例如 $ y_{\text{smooth}} = (1 - \epsilon)\, y + \epsilon / C $,以防止过度自信。
- 噪声注入 —— 在训练期间向输入、权重或梯度添加高斯噪声。
实用指南
- 从一个足够大、能够对训练数据过拟合的模型开始 —— 这能确认模型具有足够的容量。
- 逐步添加正则化(dropout、权重衰减、数据增强)并监控验证性能。
- 使用早停作为安全网。
- 在可能的情况下,优先选择更多训练数据而非更强的正则化 —— 正则化是数据的替代品,而非真正的替代方案。
- 使用验证集而非测试集来调整正则化强度($ \lambda $、dropout 比率)。
参见
参考文献
- Srivastava, N. et al. (2014). "Dropout: A Simple Way to Prevent Neural Networks from Overfitting". JMLR, 15, 1929–1958.
- Tibshirani, R. (1996). "Regression Shrinkage and Selection via the Lasso". JRSS Series B, 58(1), 267–288.
- Goodfellow, I., Bengio, Y. 与 Courville, A. (2016). Deep Learning, 第 7 章. MIT Press.
- Zhang, C. et al. (2017). "Understanding deep learning requires rethinking generalization". ICLR.
- Shorten, C. 与 Khoshgoftaar, T. M. (2019). "A survey on Image Data Augmentation for Deep Learning". Journal of Big Data.