
我已经将我的训练设定为80:20的比例,并开发了cnn的模式,辍学0.5。我的准确率是98%。但验证精度仍大于训练精度。这有什么问题吗?这会导致过度适应吗?如果是的话,那我为什么得到98%的精度呢?图上给出的是below.The红线是验证精度,蓝色是训练精度。
发布于 2020-06-09 10:14:08
正如@Suren所回避的那样,由于课程在培训和验证集上的分布,您的验证精度可能高于您的培训精度。如果培训集包含更高比例的特定类,而验证类也包含该特定类的示例,那么您当然会看到验证的准确性很高。
建议是平衡培训、验证和集合的课程。你可以做这个数据增强,因为你人为地增加了例数,而不是你已经有的数据。本文评估了使用数据增强的不同类平衡方法对CNNs:https://arxiv.org/pdf/1710.05381.pdf泛化性能的影响。
发布于 2020-07-09 11:46:50
正如@shepan6 6所提到的,这可能是因为您在验证集中的类平衡。您应该在培训集和验证集上打印混淆矩阵。您可能会发现一个高错误类在您的验证集中被低估了。您可能还会发现,您的算法经常混淆两个类。例如,对于MNIST,3和8经常被混淆,因为它们在编写时看起来很相似。使用这个例子,如果您的验证集中没有太多的3's和/或8's,那么验证集的准确性将高于测试集。
即使与950个样本相差1%只是9.5个样本,从97%到98%的变化可能并不仅仅是随机性的变化。N= 950和p= 0.97的二项数大于或等于950*0.98=931的概率约为3.7%,因此从统计学上讲,这是一个相当大的跳跃。(这里我忽略了训练集精度测量中的不确定性带来的随机性,但是对于3800个样本,没有什么可担心的,特别是因为验证误差一般都在上升。)
当然,您也可能希望检查您的验证代码中的bug。也许你只是简单地交换了你的训练和验证集。
最后,您可能对算法进行了过度调整,以便在验证集上做得很好,如果可能的话,您可能需要考虑收集新的验证数据。
https://datascience.stackexchange.com/questions/75700
复制相似问题