Generalization error
我们利用机器学习解决实际问题,通常会定义一个损失函数,并将训练集上的Loss最小化,但在有限的数据集上训练出来的模型并不能保证解决一般的问题时仍然是最优的。这个模型在有限的数据集(训练集)和一般的数据集(测试集)上的表现差异,可以用泛化误差来表示,泛化误差就是所学习到的模型的期望风险。
泛化误差由随机误差(Error)、偏差(Bias)和方差(Variance)组成。一般情况下,随机误差是数据本身的噪声带来的,这种误差是不可避免的,本篇主要关注偏差和方差。
Bias and Variance
方差和偏差从两个角度衡量了我们学习到的模型和真实的模型之间的差异。
偏差:描述的是预测值与真实值之间的差距。偏差越大,越偏离真实数据。
方差:描述的是预测值的离散程度。方差越大,数据分布越分散。
这时又要祭出这一张经典的图(几乎在每个谈到偏差方差的帖子都看到),下图将机器学习任务描述为一个打靶的活动:模型每做出一次预测就相当于是一次打靶。偏差越小越“准”,越靠近靶心;而方差越小越“确”,每次打靶的偏离程度越小。 左上角的图例方差偏差都小,是比较理想的模型。
然而在一个实际系统中,方差与偏差往往是鱼与熊掌的关系。因为想要在训练集上拟合得比较好,就要复杂化模型,容易造成过拟合(overfitting)。相反地,如果想要在方差上表现得比较好,就要简化模型,容易造成欠拟合(unfitting)。
但大牛吴恩达在 Deep Learning Specialization谈到了这个问题,Bias-Variance Tradeoff在深度学习领域中不一定成立,因为造成这种情况的根本原因是传统机器学习的训练数据十分有限,而深度学习的一大特点就是需要大量的数据,因此是可能存在方差和偏差同时减小的情况的。
Overfitting and unfitting
模型处于欠拟合的状态时,根本的办法是增加模型的复杂度:
- 增加模型的迭代次数;
- 采用更加复杂的模型;
- 减小正则化权重。
模型处于过拟合的状态时,根本的办法是简化模型的复杂度:
- 获取更多的数据;
- 进行数据清洗;
- 减少特征的数量(特征筛选);
- 提前停止迭代(early stopping);
- 增加正则化权重。