哪个更重要 - 稳定的训练结果或良好的测试结果?
例如,在不同的时期获得不稳定的训练精度,但良好的测试精度更好吗?或者是在不同的epochs获得了稳定的训练精度,但是测试精度不好。
哪一个是最好的选择?
哪个更重要 - 稳定的训练结果或良好的测试结果?
例如,在不同的时期获得不稳定的训练精度,但良好的测试精度更好吗?或者是在不同的epochs获得了稳定的训练精度,但是测试精度不好。
哪一个是最好的选择?
我个人更喜欢训练/测试准确度分别高/低的场景,因为这意味着您的模型至少很适合训练数据,但不幸的是在看不见的数据上表现不佳。这也是一个保守的场景,因为它不会比这更糟,所以你有一种很好的感觉,你的模型需要改进。
另一方面,如果你的训练准确率很低,你甚至不应该在看不见的数据上测试模型,因为你确信它没有得到足够好的训练。但是,如果你坚持测试它,即使训练准确率很低,而且测试结果比训练结果好,那么这可能意味着你在测试时很幸运。在任何情况下,您都不应在这种情况下对模型的质量做出任何推断。
您的问题的解决方案是使用k-fold validation,这意味着您应该将数据集多次随机拆分为不同的训练/测试集,并在所有拆分中评估其训练/测试准确性,以便更好地了解模型在您的数据集上运行。
首先,这种情况并不常见。如果这意味着您的训练和测试数据不是来自相同的底层分布!话虽如此,这里有一些关于这个问题的其他想法:
如果不稳定的训练准确度和良好的测试准确度始终如一地出现,即它们是可重现的——那么我可能会对此感到满意。然后开始添加不同类型的正则化来稍微平滑训练损失曲线。例如,这可能是批量标准化或 dropout 的形式。
如果测试准确率到处都是,而且变化很大,那么我肯定想先整理一下训练曲线。尝试更多的数据预处理,不同的批量大小(也许你的太小,因此波动)以及如上所述添加正则化。
另一种方法可能是尝试对输入数据进行某种形式的降维。将您拥有的特征映射到潜在空间,其中信息可能更密集并且(希望)更统一。尝试哪种方法在很大程度上取决于您的数据类型:文本、图像、视频、声音、温度、股票价格等。看看像t-SNE这样的东西,它适用于大多数数据类型,或者Word2Vec的文本。
在行业中的大多数情况下,我们应该追求稳定的性能,而不是强大的准确性。但是,这取决于。这是我目前业务的一个例子。
我目前的工作是为算法交易部署深度学习算法。我的算法不能预测市场,但它们确实每 15 分钟预测 FOREX EUR/USD、XAU/USD 等的交易策略。不深入细节,假设我的算法用平均值预测真正的交易策略65% (+-3%) 稳定精度。它可以为我的投资组合提供长期稳定的利润。但是,如果我的平均准确率为 70%(+-15%),我的算法可能会在 3 周内获得丰厚的利润,而同样的投资组合可能会在一周内失败。实际上,这个描述的场景是我从我的大多数模型中所经历的一个真实的例子。
但是,如果我的任务是通过计算机视觉从闭路电视摄像机中从公众的某些特征中检测通缉犯罪嫌疑人,那么性能不稳定是可以接受的。原因是该算法有时在识别普通人时会出错,这很好,但由于其整体性能,它可以更好地找到特定目标。以此类推,性能强大的不稳定模型具有某种魔力,但有时魔杖可能不起作用;而稳定的模型是普通的德国机器,大部分时间都在工作,没有神奇的力量。