二、过拟合、欠拟合
当使用机器学习算法时,决定机器学习算法效果的两个因素:降低训练误差、缩小训练误差和测试误差的差距。
这两个因素对应着机器学习中的两个主要挑战:欠拟合和过拟合。
过拟合
overfitting
:选择的模型包含的参数过多,以至于该模型对于已知数据预测得很好,但是对于未知数据预测的很差,使得训练误差和测试误差之间的差距太大。- 过拟合的原因是:将训练样本本身的一些特点当作了所有潜在样本都具有的一般性质,这会造成泛化能力下降。
- 过拟合无法避免,只能缓解。因为机器学习的问题通常是
NP
难甚至更难的,而有效的学习算法必然是在多项式时间内运行完成。如果可以避免过拟合,这就意味着构造性的证明了P=NP
。
欠拟合
underfitting
:选择的模型包含的参数太少,以至于该模型对已知数据都预测的很差,使得训练误差较大。欠拟合的原因一般是学习能力低下造成的。
通过调整模型的容量
capacity
可以缓解欠拟合和过拟合。
2.1 模型容量
模型的容量是指其拟合各种函数的能力。
- 容量低的模型容易发生欠拟合,模型拟合能力太弱。
- 容量高的模型容易发生过拟合,模型拟合能力太强。
通过选择不同的假设空间可以改变模型的容量。
模型的假设空间指的是:代表模型的函数集合。这也称作模型的表示容量
representational capacity
。由于额外的限制因素(比如优化算法的不完善),模型的有效容量
effective capacity
一般会小于模型的表示容量。通常在模型的假设空间中出最佳的函数是非常困难的优化问题,实际应用中只是挑选一个使得训练误差足够低的函数即可。
统计学习理论提供了量化模型容量的方法,其中最出名的是
VC
维理论:训练误差与泛化误差之间差异的上界随着模型容量增长而增长,随着训练样本增多而下降 。虽然
VC
维理论对于机器学习算法有很好的指导作用,但是它在深度学习很难应用。原因有二:- 边界太宽泛。
- 难以确定深度学习的容量。由于深度学习模型的有效容量受限于优化算法,因此确定深度学习模型的容量特别困难。
通常泛化误差是关于模型容量的
U
形函数。随着模型容量增大:- 训练误差会下降直到逼近其最小值。
- 泛化误差先减小后增大。
- 泛化误差与训练误差的差值会增大。
2.2 缓解过拟合
缓解过拟合的策略:
- 正则化。
- 数据集增强:通过人工规则产生虚假数据来创造更多的训练数据。
- 噪声注入:包括输入噪声注入、输出噪声注入、权重噪声注入。将噪声分别注入到输入/输出/权重参数中。
- 早停:当验证集上的误差没有进一步改善时,算法提前终止。
具体内容参考深度学习《正则化》章节。
正则化 :基于结构化风险最小化(
SRM
)策略的实现,其中 为正则化项。在不同的问题中,正则化项可以有不同的形式:
- 回归问题中,损失函数是平方损失,正则化项是参数向量的 范数。
- 贝叶斯估计中,正则化项对应于模型的先验概率 。
2.3 缓解欠拟合
- 缓解欠拟合的策略:选择一个模型容量更高的模型。