Neural network 使用验证集/测试集时模型性能的差异

Neural network 使用验证集/测试集时模型性能的差异,neural-network,classification,regression,pytorch,Neural Network,Classification,Regression,Pytorch,我已经实现了一个用于分类和回归的PyTorch-NN代码 分类: a) 使用分层折叠进行交叉验证(K=10-表示10倍交叉验证) 我将数据划分如下: 假设我有100个数据:10个用于测试,18个用于验证,72个用于培训 Problem is: Baseline MSE= 14.0 Accuracy on Training set = 0.0012 Accuracy on validation set = 6.45 Accuracy on testing set = 17.12 b) 损失函数=

我已经实现了一个用于分类和回归的PyTorch-NN代码

分类: a) 使用分层折叠进行交叉验证(K=10-表示10倍交叉验证)

我将数据划分如下: 假设我有100个数据:10个用于测试,18个用于验证,72个用于培训

Problem is:
Baseline MSE= 14.0
Accuracy on Training set = 0.0012
Accuracy on validation set = 6.45
Accuracy on testing set = 17.12
b) 损失函数=交叉熵

c) 优化=新加坡元

d) waittime=100个纪元时提前停止

Problem is:
Baseline Accuracy = 51%
Accuracy on Training set = 100%
Accuracy on validation set = 90%
Accuracy on testing set = 72%
我不明白测试数据/验证数据的巨大性能差异背后的原因是什么

我怎样才能解决这个问题

回归:

a) 使用相同的网络结构

b) 损失函数=MSE损失

c) 优化=新加坡元

d) 提前停止,等待时间=100个纪元

Problem is:
Baseline Accuracy = 51%
Accuracy on Training set = 100%
Accuracy on validation set = 90%
Accuracy on testing set = 72%
e) 使用K-fold进行交叉验证

我将数据划分如下:

假设我有100个数据:10个用于测试,18个用于验证,72个用于培训

Problem is:
Baseline MSE= 14.0
Accuracy on Training set = 0.0012
Accuracy on validation set = 6.45
Accuracy on testing set = 17.12
我不明白测试数据/验证数据的巨大性能差异背后的原因是什么


如何解决这些问题?或者这对于NN/依赖于特定的数据集来说是显而易见的吗?

在培训和验证性能之间,以及验证和测试性能之间,存在很大的差距。有两个问题需要探讨:

  • 分布上的差异。我们假设train/val/测试集都来自相同的分布,因此具有相似的特征。一个训练有素的模型应该在val和测试数据集上表现同样出色。如果数据集实际上只有10个样本用于测试,18个样本用于val,则所选样本很有可能会扭曲其中一个/两个数据集,从而使它们不再具有相似的特征。因此,val和测试性能之间的差异可能只是偶然的:您的测试集恰好更难。您可以通过手动检查来测试这一点

  • 过度拟合val:然而,我认为更可能的情况是,您尝试了不同的体系结构、培训机制等,并调整了参数,以在验证集上获得最佳性能。这意味着您已将模型过度拟合到val集。测试集更真实地反映了模型的准确性

  • 对于这两个问题,您的培训精度都非常高,并且培训和验证性能之间存在很大差距。因此,您过度拟合了训练数据,因此需要减少训练或引入更严格的规范化