我在使用卷积神经网络(CNN)来对图像进行分类。我开始时有1000张图像。因此,我使用了900张作为训练数据集,100张作为测试数据集。我得到了一个大约70%正确率的模型。
今天我又获得了150张图像。所以我有两个继续进行的想法:
(1) 我可以将之前的100张测试数据和900张训练数据合并成一个“新”的训练集,这样我就可以有1000张训练数据来获得可能更好的模型吗?然后我可以将这新的150张图像用作新的“测试”数据?
(2) 我可以将新的150张图像和900张训练数据合并成一个“新”的训练集来训练一个更好的模型,并且继续使用之前的100张测试数据集来测试新模型吗?
显然我会尝试两种方法,但我理论上不确定哪一种更好…有什么评论吗?谢谢。
回答:
如果你想要最好的CNN,你应该尽可能多地使用数据进行训练。理论上,训练数据越多,你的测试误差就越接近训练误差。这意味着你的CNN在处理未经训练的例子时会表现得更好。另一方面,你不希望测试数据太少,因为你需要对准确率测量有信心。所以理想情况下,你应该获得更多的训练数据和更多的测试数据。
如果你的数据是IID,那么你不必担心用哪1150张图像来训练你的模型。
重新使用相同测试数据的唯一危险是,你可能会因为它在测试数据上给出了更好的结果而改变模型(例如,增加另一层,和/或增加现有层中的更多单元)。当你根据测试误差的观察来调整模型时,你有可能会过度拟合数据。你可以通过使用第三个数据集,即所谓的验证集,来调整模型,以缓解这个问题。
IID:总共1150张图像是从相同的分布中独立抽取的。换句话说,大致来说,除了这些图像对你来说是新的之外,150张和1000张之间没有什么区别,每张图像的选择不受其他任何图像选择的影响。