我在使用Keras解决一个回归任务。在保存模型权重时,有以下选项:
- 使用训练过程结束时的模型权重(对我来说,如果损失在十个周期内没有改善,就提前停止),
- 使用产生最佳损失的权重,或
- 使用产生最佳验证损失的权重。
如果我根据验证损失来选择模型权重,我的结果将倾向于验证集。但同样的问题也适用于训练集。我也可以保存上述所有权重,并测试哪一个在测试集上的表现最佳——这会产生对测试集的偏见。那么应该使用哪一个呢?
这个问题对我来说似乎非常基础,但不幸的是,我自己没能找到答案。如果有我错过的关于这个问题的文章,请随意发布链接而不是回答。
回答:
我认为人们通常会选择具有最佳验证性能的模型,然后在测试集上评估模型性能。虽然模型选择可能会潜在地引入对验证集的偏见,但测试集为模型在未见数据上的表现提供了无偏见的评估。
我认为这个scikit-learn页面提供了一个简洁的概念解释。http://scikit-learn.org/stable/auto_examples/model_selection/plot_nested_cross_validation_iris.html
如果我记得没错,Andrew Ng的机器学习课程也涵盖了这个话题。https://www.coursera.org/learn/machine-learning