我目前在 Uni 的顾问坚持要我训练同一个网络的 10 个实例,并选择一个测试准确度最高的实例,以避开“局部最小值”。
在我看来,这根本不起作用,应该会导致选择最适合 test_set 的模型,但可能不够泛化,无法与背后的实际分布一起工作。
有这方面的材料或研究吗?我真的认为这种方法过时且毫无意义,但如果没有实际的科学材料,我无法与我的教授争论。
我目前在 Uni 的顾问坚持要我训练同一个网络的 10 个实例,并选择一个测试准确度最高的实例,以避开“局部最小值”。
在我看来,这根本不起作用,应该会导致选择最适合 test_set 的模型,但可能不够泛化,无法与背后的实际分布一起工作。
有这方面的材料或研究吗?我真的认为这种方法过时且毫无意义,但如果没有实际的科学材料,我无法与我的教授争论。
您绝对正确,这是一种有问题的方法。您的测试集只应在部署模型之前的最后可能阶段使用。
通过使用您的测试集进行建模决策,您将引入偏差,这将有利于在您的测试集中找到的观察结果并且可能无法概括。在理想情况下,您的测试集将完美地代表真实分布,但实际上情况并非如此。因此,建议的方法将导致模型更接近地匹配测试集的分布,但不能推广到真实分布。
正确的方法是将您的数据分成一个
然后,您将测试搁置一旁,直到您选择了最终模型。有了验证集,你就可以按照教授的建议去做。您可以安装多个模型,然后选择最好的一个,或者在某个bagging 结构中将所有模型一起使用。一旦您感到满意,您就可以针对您的测试集进行测试,以查看所选模型是否泛化良好。
您的顾问建议称为数据泄漏,它有点类似于在相同数据上训练和测试您的模型。您可能会发现阅读p-hacking 和回测过拟合有助于了解为什么这是量化金融中的一个问题。还有这个关于 p-hacking 相关概念的优秀漫画...
正确的做法是训练十个(或更多)模型,然后将平均性能作为该类型模型性能的指标。您还可以考虑交叉验证策略,以便更好地了解您的模型如何推广。