我正在为SQUAD(斯坦福问答)数据集(https://rajpurkar.github.io/SQuAD-explorer)建立模型。斯坦福大学不会发布测试集。它仅为我们提供培训和开发数据集。
这是我的问题:
当我调整不同模型的超参数时,我根据斯坦福大学提供的“ dev”数据对其进行了调整。但是,由于无法访问真实的“测试”数据,因此将“开发”集视为“测试”集。根据“ dev”数据集的性能,我们只选择一种模型提交不同模型。
所以我想知道是否应该将训练集进一步分为train和dev,并在新分离的dev集(而不是斯坦福大学给出的dev集)上调整超参数,因为我们将“ dev”集设为“测试”集。 我以某种方式作弊了吗?我是否需要从现有火车数据中创建另一个“开发”数据,将其进一步拆分,并在那里调整超参数,并检查给定“开发”集上的性能编号?
答案 0 :(得分:1)
我认为完全可以(假设您有足够的数据)将训练集进一步划分为新的(较小的)训练和测试,使用开发集调整超参数并评估测试集的性能。
答案 1 :(得分:1)
您可以通过交叉验证轻松地做到这一点。它将为您完成所有这一切。这里的优点是假设您希望将训练集分成10组。将需要9套训练和1套验证。这样,它将运行10次,然后取最佳3(如果您给出3个最佳设置参数)的平均值。