为什么神经网络模型在测试集上的准确率高于训练集上的准确率?
种花家的奋斗兔 2020-03-21 17:28:37 5847 已收藏 11
分类专栏: Deep Learning 文章标签: dropout 深度学习
版权
Deep Learning
专栏收录该内容
26 篇文章0 订阅
订阅专栏
类似下图:
或者下图:
来自:吴恩达机器学习Regularization部分。
如上图所示,有时候我们做训练的时候,会得到测试集的准确率或者验证集的准确率高于训练集的准确率,这是什么原因造成的呢?经过查阅资料,有以下几点原因,仅作参考,不对的地方,请大家指正。
(1)数据集太小的话,如果数据集切分的不均匀,或者说训练集和测试集的分布不均匀,如果模型能够正确捕捉到数据内部的分布模式话,这可能造成训练集的内部方差大于验证集,会造成训练集的误差更大。这时你要重新切分数据集或者扩充数据集,使其分布一样
(2)由Dropout造成,它能基本上确保您的测试准确性最好,优于您的训练准确性。Dropout迫使你的神经网络成为一个非常大的弱分类器集合,这就意味着,一个单独的分类器没有太高的分类准确性,只有当你把他们串在一起的时候他们才会变得更强大。
因为在训练期间,Dropout将这些分类器的随机集合切掉,因此,训练准确率将受到影响
在测试期间,Dropout将自动关闭,并允许使用神经网络中的所有弱分类器,因此,测试精度提高。
References:
https://stackoverflow.com/questions/43979449/higher-validation-accuracy-than-training-accurracy-using-tensorflow-and-keras
https://www.quora.com/How-can-I-explain-the-fact-that-test-accuracy-is-much-higher-than-train-accuracy
https://www.cnblogs.com/carlber/p/10892042.html
————————————————
版权声明:本文为CSDN博主「种花家的奋斗兔」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/IT_flying625/article/details/105013514
测试集准确率高于训练集准确率最可能是数据分布问题,即训练集与测试集分布不一致。
其实机器学习模型在数据划分和训练时一般都有一个假设:训练集和测试集分布是一致的。你的数据集比较小在划分的时候数据分布有更大的扰动,那么产生两个数据集分布不一致的概率就更大了,也就会出现测试集准确率高于训练集准确率。而过拟合是不可能的,过拟合的定义是训练好的模型在训练集准确率远高于测试集准确率。两者文字差不多,但有完全不同的原因。
所以建议是:在训练前验证两组数据分布一致性问题(最好按类别采样,而不是直接对整个数据集采样)
2018.09.27 补充:
数据分布包含问题,测试集数据分布包含于训练集数据分布,这时测试数据集比训练数据集简单,测试集准确率可能会高于训练集准确率。
数据分布交集大,且训练数据分布与测试数据分布的非交集部分中训练集数据分布更广,这时测试数据集比训练数据集简单,测试集准确率也可能会高于训练集准确率
作者:Genome
链接:https://www.zhihu.com/question/30112982/answer/238463274
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
你是说测试集loss更小,同时测试集accuracy更大吗?怀疑你的测试集是训练集的子集,k-fold交叉验证试一下,再把训练和测试的划分比例反过来看看