训练集
用于模型拟合的数据样本,用来调试神经网络中的参数。
测试集
用来评估模最终模型的泛化能力。但不能作为调参、选择特征等算法相关的选择的依据。测试集的作用是体现在测试的过程。
验证集
用于查看训练效果,查看模型训练的效果是否朝着坏的方向进行。验证集的作用是体现在训练的过程。举个栗子:通过查看训练集和验证集的损失值随着epoch的变化关系可以看出模型是否过拟合,如果是可以及时停止训练,然后根据情况调整模型结构和超参数,大大节省时间。
验证集和测试集之间的区别
验证集没有参与网络参数更新的工作,按理说也能用来测试网络的实际学习能力;测试集本来也能就是用来测试效果的,按理来说也能查看训练效果。
测试集谁能来当
一个形象的比喻:
训练集-----------学生的课本;学生根据课本里的内容来掌握知识。
验证集-----------作业;通过作业可以知道不同学生学习情况、进步的速度快慢。
测试集-----------考试;考的题是平常都没有见过,考察学生举一反三的能力。
传统上,一般三者切分的比例是:6:2:2,验证集并不是必须的。
训练集直接参与了模型调参的过程,显然不能用来反映模型真实的能力(防止课本死记硬背的学生拥有最好的成绩,即防止过拟合)。
验证集参与了人工调参(超参数)的过程,也不能用来最终评判一个模型(刷题库的学生不能算是学习好的学生)。
所以要通过最终的考试(测试集)来考察一个学(模)生(型)真正的能力(期末考试)。
测试集为了具有泛化代表性,往往数据量比较大,所以往往只取测试集的其中一小部分作为训练过程中的验证集。当然有的论文中没有设置验证集也是可以的。
名词解释
超参数:在机器学习中,超参数是在学习过程开始之前设置其值的参数。 相反,其他参数的值是通过训练得出的。
简单来说,就是我们在模型开始训练之前设定好的参数,如batch size,学习率以及有多少个epoch等。
给定这些超参数,训练算法从数据中学习参数。相同种类的机器学习模型可能需要不同的超参数来适应不同的数据模式,并且必须对其进行调整以便模型能够最优地解决机器学习问题。 在实际应用中一般需要对超参数进行优化,以找到一个超参数元组(tuple),由这些超参数元组形成一个最优化模型,该模型可以将在给定的独立数据上预定义的损失函数最小化。