原文链接:https://www.yuque.com/yahei/hey-yahei/regularization
正则化指的是为模型引入一些约束,一定程度上限制模型的拟合能力,减缓收敛速度,从而缓解过拟合现象的一系列方法。
参考:
- 《Hands-On Machine Learning with Scikit-Learn and TensorFlow(2017)》Chap11
- 《卷积神经网络——深度学习实践手册(2017.05)》
常见的正则化技术:
- 提前终止(Early Stop)
- 权重正则化(Weights Regularization)
- 随机失活(Dropout)
- 数据增广(Data Augmentation)
- 批归一化(Batch Normalization, BN)
- 重叠池化(Overlapping Pooling)
- 随机池化(Stochastic Pooling)
- 平滑标签(Label Smoothing Regularization, LSR)
欠拟合&过拟合
参考:
欠拟合:模型拟合能力不足,存在高偏差问题,不能很好地从训练数据拟合出预测模型;
过拟合:模型拟合能力太强,存在高方差问题,过分拟合于训练集,甚至直接把训练集记了下来(就像是学生只会刷题,而且记性很好,甚至逐渐把答案背了下来,却没有掌握真正的知识,没法做到举一反三)
(分类任务:欠拟合、恰当拟合、过拟合)
在训练曲线上,过拟合表现为,随着迭代次数的增加,
- 训练集的损失逐步减小,准确率逐步提高
- 验证集却损失逐步增加,准确率逐步下降
因素 | 损失曲线/准确率曲线 |
---|---|
训练集大小 | |
模型复杂度 | |
正则化程度 | |
迭代次数 |
如何解决欠拟合问题?
- 增大模型复杂度(增加层数、参数,增加额外特征项或高次特征等)
- 减小正则化技术的使用(减小正则化系数等)
如何解决过拟合问题?
- 每轮训练后冲洗数据集,使每个Batch模型见到的样本组合不同
- 增加样本数量
- 降低模型复杂度
- 增加噪声
- 决策树等树模型可以进行剪枝
- 增加正则化技术的使用
提前终止
每经过一定迭代次数之后将模型用于验证集上的评估,暂存、更新最近几次在验证集上有一定loss下降的模型(称为快照snapshot或检查点checkpoint);
当连续几次在验证集上没有出现明显的loss下降(甚至有可能回升)时终止训练;
提前终止简单有效,通常都能表现的很好,如果和其他正则化技术共同使用可以获得更好的表现
权重正则化
L2正则化
又称权重衰减(weight decay)、岭回归(ridge regression)、Tikhonov正则化(Tikhonov regularization)。
l 2 = 1 2 λ ∣ ∣ ω ∣ ∣ 2 2 = 1 2 λ ∑ i w i 2 l_2 = \frac{1}{2} \lambda ||\omega||^2_2 = \frac{1}{2} \lambda\sum_i w_i^2 l2=21λ∣∣ω∣∣22=21λi