训练集(train)——课本,学生根据课本里的内容来掌握知识

参与训练,模型从训练集中学习经验,从而不断减小训练误差。这个最容易理解,一般没什么疑惑。

验证集(validation)——作业,可以知道不同学生实时的学习情况、进步的速度快慢

不参与训练,用于在训练过程中检验模型的状态,收敛情况。通常用于调整超参数,根据几组模型验证集上的表现决定哪组超参数拥有最好的性能。

同时,验证集在训练过程中还可以用来监控模型是否发生过拟合。一般来说,验证集表现稳定后,若继续训练,训练集表现还会继续上升,但验证集会出现不升反降的情况,这样一般就是发生了过拟合。所以验证集也用来判断何时停止训练。

测试集(test)——考试,考的题是平常都没有见过,考察学生举一反三的能力

不参与训练,用于在训练结束后对模型进行测试,评估其泛化能力。之前模型使用【验证集】确定了【超参数】,使用【训练集】调整了【可训练参数】,最后使用一个从没有见过的数据集来判断这个模型的好坏。

需要十分注意的是:测试集仅用于最终评价模型的好坏,在测试集上得到的指标可以用来和别人训练的模型做对比,或者用来向别人报告你的模型效果如何。切记,千万不能根据模型在测试集上的指标调整模型超参数(这是验证集应该干的事情),这会导致模型对测试集过拟合,使得测试集失去其测试效果的客观性和准确性。

交叉验证

以上将数据集随机地划分成训练集、验证集、测试集三部分,对于有足够多数据的情况下是有效的,但数据量较小时,应采用交叉验证的方法。 交叉验证法的作用就是尝试利用不同的训练集/测试集划分来对模型做多组不同的训练/测试,来应对单次测试结果过于片面,以及训练数据不足的问题。

交叉验证的做法就是将数据集粗略地分为比较均等不相交的k份,即

神经网络端点检测 神经网络测试集的作用_深度学习

取其中的一份进行测试,另外的k-1份进行训练,求得error的平均值作为最终的评价,具体算法流程如下:

神经网络端点检测 神经网络测试集的作用_神经网络端点检测_02