训练集、验证集与测试集回顾总结

来源:互联网 发布:dota2 mac 国服下载 编辑:程序博客网 时间:2024/05/21 09:07

在 NG 的课程、西瓜书以及 Goodfellow 的 《DeepLearning》 书中都有提到:最佳的数据划分是将数据分为三部分,分别为训练集(trainning set),验证集(validation set)和测试集(test set)。相信对绝大多数刚刚步入机器学习或是深度学习门槛的小鲜肉都会有点困惑,这次博文,写给新人!也作为笔记。

Training Set : a subset of the dataset used to build predictive models.

Validation Set : a subset of the dataset used to assess the performance of model built in the training phase. It provides a test platform for fine tuning model’s parameters and selecting the best-performing model. Not all modeling algorithms need a validation set.

Test Set : a subset of the dataset to assess the likely future performance of a model. If a model fit to the training set much better than it fits the test set, overfitting is probably the cause.

详尽地归纳总结一下:

训练集就是用来训练参数的,说准确点,一般是用来梯度下降的。而验证集基本是在每个 epoch 完成后,用来测试一下当前模型的准确率。因为验证集跟训练集没有交集,因此这个准确率是可靠的。为何引入测试集?

这就需要区分一下模型的各种参数了。事实上,对于一个模型来说,其参数可以分为普通参数和超参数。在不引入强化学习的前提下,那么普通参数就是可以被梯度下降所更新的,也就是训练集所更新的参数。

另外,还有超参数的概念,比如网络层数、网络节点数、迭代次数、学习率等等,这些参数不在梯度下降的更新范围内。尽管现在已经有一些算法可以用来搜索模型的超参数,但多数情况下我们还是自己人工根据验证集来调。

验证集是否有参与训练?

从狭义来讲,验证集没有参与梯度下降的过程,也就是说是没有经过训练的;但从广义上来看,验证集却参与了一个“人工调参”的过程,我们根据验证集的结果调节了迭代数、调节了学习率等等,使得结果在验证集上最优。因此,我们也可以认为,验证集也参与了训练。

为何引入测试集?

又回到了这个问题,我们需要一个完全没有经过训练的集合,我们既不用测试集梯度下降,也不用它来控制超参数,只是在模型最终训练完成后,用来测试一下最后准确率。这便是测试集。

原创粉丝点击