在进行神经网络(以及各种机器学习模型)的训练中,我们需要对数据进行划分,以便于我们选择合适的超参数、评价模型的泛化能力。
训练集
我们利用训练集来进行参数训练(即前面提到的前向传播、反向传播、参数更新的过程)。
验证集
我们选取不同的超参数通过训练集训练出不同的模型。将这些模型应用在验证集上以选择最合适的超参数。
测试集
在确定好合适的超参数后,我们将模型应用在测试集上以判断模型的泛化能力。
要注意的是,在训练过程中验证集和测试集的数据一定不能参与训练,否则会导致评估的结果超出真实值。
划分方式
传统的机器学习中,由于数据量小,我们往往采用 训练集:验证集=7:3 或者 训练集:验证集:测试集 = 6:2:2 的划分方式。但由于深度学习的数据量较大,验证集和测试集的比例可以缩小。例如对于100万组数据,我们可能只需要1万验证集+1万测试集。
在实际操作中,有时我们不需要进行无偏评估,所以可能只需要验证集而不需要测试集。(然而人们却总是说此时的划分是训练集/测试集)
偏差和方差
直观理解之前,先来说一下偏差和方差在西瓜书当中的数学定义:
定义:
y代表样本的真实值
yD代表样本在数据集中的标记(在这里我们认为我们的数据集不完全准群,具有噪音,即yD不等于y)
f(x,