以下为个人学习阶段理解,如果有不对的地方欢迎各位大佬指点,共同进步。
个人理解
训练集(train set):
- 训练模型,学习关键信息。类似于上课听讲学习知识。
开发集(dev set):
- 又称为验证集。类似模拟考检验,及时发现不足并巩固,为了在最终高考获得好成绩。
测试集(test set):
- 不参与整个训练过程,只在最后训练完成对模型进行整体评估。类似于高考最终检验。主要目的是开发者模拟应用阶段的真实数据。
【注意】
- 三者是互不相交、相同分布(需要和实际应用时的数据相同分布)的;
- 开发集和测试集都不参与训练过程;
- 开发集的作用是:在训练阶段评估模型,及时发现不同超参对模型的影响,从而选出最好的一组超参数;
- 不使用测试集进行超参数优化的原因:因为最终是为了在训练集(模拟应用阶段的真实数据)上获得更好表现,如果使用了训练集,就会有“面向结果编程”的感觉,类似于提前获得了高考试卷并用于校内模拟考,再根据试卷学习知识点(优化超参数),在真正高考(测试集验证)大概率有很高分数,但是一旦进入大学考试(将模型实际应用),就会瞬间暴露原形。
参考
https://www.zhihu.com/question/66883644/answer/2509793818?utm_id=0