深度学习基础:模型选择、欠拟合和过拟合

有时候,模型在训练数据集上更准确时,这个模型在测试集上不一定更准确,这是为什么呢?

一、训练误差和泛化误差

训练误差是指在训练集上表现出的误差,而返回误差是指在任意一个测试数据样本上表现出的误差的期望,并常常通过测试数据集上的误差来近似。

我的理解:由于训练误差是经过模型在训练集上反复训练的,它的结果会更倾向于训练集的结果。那么如果将其损失值降得过低,就好像是这个模型专门为这个训练集训练了一组参数。显然,这组参数就不那么容易去适应测试集中随机出现的一组数据。如此,训练误差低的,返回误差就可能还更高一些了。

二、模型选择

在机器学习中,通常需要评估若干个候选模型,从中找出适合的模型。这个过程称为模型选择。下面总结几个模型选择中的概念。

1. 验证数据集

严格意义上,测试集只能在所有超参数和模型参数选定之后使用一次。不能看哪个模型在测试集上的效果好就选哪个,因为测试集是用来测试模型的。有鉴于此,我们可以预留一部分训练集和测试集以外的数据来进行模型选择。比如,我们可以将训练集中的一部分作为验证集,而剩余部分作为真正的训练集。

在这里插入图片描述

2. K K 折交叉验证

由于数据不容易获取,预留大量的验证数据显得太奢侈。 K K 折交叉验证是一种改善的方法。该方法的做法是:

  • 将原始训练数据集分割成 K K 个不重合的子数据集
  • 进行 K K 次训练和验证。每一次,选一个子数据集作为验证集,剩下 K 1 K-1 个子数据集作为训练集
  • 最后,对这 K K 次训练误差和验证误差分别求平均

这种做法充分利用了现有的数据集。
在这里插入图片描述

三、欠拟合和过拟合

  • 欠拟合(underfitting):模型无法得到较低的训练误差
  • 过拟合(overfitting):模型的训练误差 < < << 在测试集上的误差

出现这两种现象的因素有很多。这里重点讨论两个因素:模型复杂度、训练数据集大小

1. 模型复杂度

其实这个我感觉和“我的理解”里面说的差不多。假如一个模型过于复杂,就相当于是专门为这个数据集找了个模型一样,不具有普适性,就会出现过拟合。但是如果过于简单,又会出现欠拟合。

在这里插入图片描述

2. 训练集大小

一般来说,如果训练集样本过少,特别是模型参数数量更少时,过拟合更容易发生。