当开发一个神经网络人们通常划分训练数据到列车,测试,和坚持数据集(很多人都称这些列车,验证和测试分别。同样的事情,不同的名字)。许多人建议根据测试数据集中的性能选择超参数。我的问题是:为什么?为什么不最大化训练数据集中超参数的性能,并且当我们通过测试数据集中的性能下降来检测过度拟合时,停止训练超参数?由于训练通常比测试大,因此与训练测试数据集上的超参数相比,这不会产生更好的结果吗?为什么不优化火车数据集上的超参数?
UPDATE 2016年7月6日
术语变更,下面搭配评论。现在数据集被称为火车,验证,并在这个岗位测试。我不使用测试数据集进行培训。我正在使用GA来优化超参数。在外部遗传算法训练过程的每次迭代中,GA选择一个新的超参数集,在训练数据集上训练,并在验证和测试数据集上进行评估。 GA调整超参数以最大化Train数据集中的准确性。当检测到网络过度拟合(在验证数据集中)时,迭代内的网络训练停止,并且当检测到过度拟合超参数时(再次在验证中),外部GA训练过程停止。结果是为Train数据集进行了优化的超参数。问题是:为什么许多来源(例如https://www.cs.toronto.edu/~hinton/absps/JMLRdropout.pdf,第B.1节)建议优化验证集上的超参数,而不是火车集?引用来自Srivasta,Hinton等人(上面的链接):“超验参数在验证集上进行了调整,以便产生最好的验证错误...”
谢谢Prakhar。我同意关于信息泄露并且不适合测试或验证。但我仍然留有原始问题:为什么不a)根据Train数据集中的性能调整超参数,b)使用验证来检测超参数过度拟合,以及c)使用Test来估计新的未见数据的性能? –
你在说什么只是重新框架我的答案。这样想:a。)通过调整,你的意思是什么。当你使用训练集开始训练模型时,你修复超参数(层数,每层中神经元的数量等),并基本学习权重。 b。)然后使用验证集对此进行评估。 简而言之,hyperpameters的“所有”组合可以学习一组训练集上损失较低的权重,但超参数的最佳值是使用验证集合确定的。 –