训练时监控 val_loss

Monitoring val_loss while training

有个简单的问题让我突然怀疑自己的工作。

如果我只有一个训练集和验证集,我可以在训练时监控 val_loss 还是会给我的训练增加偏差。我想在验证集训练结束时测试我的准确性,但突然我在想,如果我在训练时监控该数据集,那会有问题吗?或者没有?

简短回答 - 是的,监控验证错误并将其用作决定特定算法设置的基础会增加算法的偏差。详细一点:

1) 您修复任何 ML 算法的超参数,然后在训练集上对其进行训练。您生成的 ML 算法 具有特定的超参数设置 过度拟合训练集,并且您使用验证集来估计这些超参数在看不见的数据上可以获得什么样的性能

2) 但是您显然想调整超参数以获得最佳性能。您可能正在执行网格搜索或类似的操作,以使用验证集为该特定算法获得最佳超参数设置。结果 你的超参数设置过拟合验证集 。将其视为有关验证集的一些信息仍然通过超参数泄漏到您的模型中

3) 因此,您必须执行以下操作:将数据集拆分为训练集、验证集和测试集。使用训练集进行训练,使用验证集对特定的超参数进行决策。当你完成(完全完成!)微调你的模型时,你必须使用模型从未见过的测试集来估计战斗模式下的最终性能。