没有开发集时的超参数搜索

数据挖掘 超参数调整 超参数
2022-02-18 00:48:14

我有一个火车和一个测试集,没有开发(开发)集。我正在训练集上训练模型并寻找最终可以最大化测试集准确性的最佳超参数(几乎是正常的机器学习场景)。这是我的困惑:我们通常在开发集(而不是测试集)上进行超参数调整以找到最佳超参数,然后我们使用这些最佳超参数来训练我们的模型,最后在测试集上对其进行测试。虽然没有开发集,但我有两个问题:

  • 如果我们在测试集上进行超参数搜索会不会有问题?有人可能会说,这显然是有问题的,但我说超参数搜索就像每次从头开始使用超参数的组合训练模型并选择最佳组合,而不是模型是从之前的超参数搜索中学习,所以这还有问题吗?
  • 如果第一个选项有问题,我是否应该将我的训练集分解为训练+开发集,然后使用 dev 进行超参数搜索?
1个回答

这几乎是训练集交叉验证后是否需要测试集的副本?,但我认为值得专门解决您问题的这一部分:

超参数搜索就像每次使用超参数组合从头开始训练模型并选择最佳组合,而不是模型从之前的超参数搜索中学习

事实上,无论是从训练集还是开发集,各种模型都不会从彼此那里获得任何直接信息。但是,您正在选择在开发集上表现最佳的超参数,因此整个管道可能会“过度拟合”到开发集。这种影响的大小通常不太明显,但您当然不能将所选超参数的分数报告为对未来性能的无偏估计。

您的第二个问题的答案是“是”;如果您的训练集很小,请考虑重复拆分交叉验证,如 k-fold。