如果新模型依赖于超参数的值,验证集如何以无偏的方式调整超参数?

人工智能 神经网络 机器学习 超参数优化
2021-11-09 07:03:39

我从头开始构建了一个神经网络,为超参数选择任意数字:学习率、隐藏层和神经元的数量、时期数和小批量的大小。现在我已经能够构建一些可能有用的东西(测试数据的准确率约为 93%,以前的模型看不到),我想专注于超参数调整。

训练集和验证集之间的概念差异很明显并且很有意义。很明显,该模型偏向于训练集,因此使用它来调整超参数或评估其性能是没有意义的。

但是,如果更改任何参数强制我再次重建新模型,我该如何使用验证集?最终预测取决于 X 个 MxN 矩阵(权重)和 X 个 N 个向量(偏差)的值,其值取决于学习率、批量大小和 epoch 数;其尺寸取决于隐藏层的数量和大小。如果我更改其中任何一个,我需要再次重建我的模型。所以我会使用这个验证集来训练不同的模型,最后就像第一步一样:从头开始拟合模型。

总结一下:我遇到了一个递归问题,我需要用看不见的数据微调我的模型的超参数,但是更改这些超参数中的任何一个都意味着重建模型。

2个回答

这是一个标准的 ML 问题:改变超参数会改变整个模型的性能。理想情况下,您将交叉验证超参数选择,而不仅仅是在静态验证集上进行比较。话虽如此,您需要小心超参数优化,因为您可能会过度拟合这些验证集的特性;交叉验证在一定程度上有所帮助,但真正有帮助的是拥有一个您几乎从未测试过的测试集。理想情况下,您从未选择过带有(交叉)验证的 HP。测试集性能将表明您的 HP 优化过程有多少偏差。

恐怕从头开始培训是您唯一的解决方案。然而,这并不意味着你必须训练到最后,并且许多超参数优化技术将帮助你尽早停止训练,这样你就不会在不值得的 HP 上浪费计算资源。一个很好的起点是 Criteo 的 Aloïs Bissuel 的博客文章:超参数优化算法:简短回顾

拥有一个完全独立的测试集非常重要。一旦你开始使用验证集性能作为调整超参数的衡量标准,你就会使你的网络在验证集上运行良好,因此它不再可以作为衡量性能的真正衡量标准。最终,如果您过于频繁地使用测试集,那么调整超参数以提高测试集的性能,您最终会陷入同样的​​困境。我实际上已经使用了几个测试集来试图避免这个陷阱。