相同训练测试集的 ANN 不同结果

Posted

技术标签:

【中文标题】相同训练测试集的 ANN 不同结果【英文标题】:ANN different results for same train-test sets 【发布时间】:2013-03-04 19:10:28 【问题描述】:

我正在为 MATLAB 中的监督分类任务实现神经网络。

我有一个训练集和一个测试集来评估结果。 问题是,每次我为相同的训练集训练网络时,对于相同的测试集,我会得到非常不同的结果(有时我得到 95% 的分类准确率,有时像 60%)。

现在我知道这是因为我得到了不同的初始权重,并且我知道我可以使用“种子”来设置相同的初始权重,但问题是这对我的数据有什么影响以及查看的正确方法是什么这?如何定义使用我设计的 ANN 获得的准确性?是否有针对此的协议(例如运行 ANN 50 次并获得平均准确度之类的)?

谢谢

【问题讨论】:

【参考方案1】:

确保您的测试集与训练集相比足够大(例如,占整体数据的 10%),并检查其多样性。如果您的测试集仅涵盖非常具体的情况,这可能是一个原因。还要确保您始终使用相同的测试集。或者,您应该搜索术语 cross-validation

此外,观察到良好的训练集准确度而观察到较差的测试集准确度是过度拟合的标志。尝试像简单的 L2 权重衰减一样应用正则化(只需在每次权重更新后将权重矩阵乘以例如 0.999)。根据您的数据,Dropout 或 L1 正则化也可能有所帮助(尤其是如果您的输入数据中有很多冗余)。还可以尝试选择更小的网络拓扑(更少的层和/或每层的神经元更少)。

为了加快训练速度,您还可以尝试其他学习算法,例如 RPROP+, RPROP- or RMSProp,而不是简单的反向传播。

【讨论】:

嗨 schreon,感谢您的评论,问题是我知道测试数据对于火车数据不是最优的(它们有不同的来源),但我仍然想介绍一些在该训练集上训练的人工神经网络的分类准确性我不能,因为每次结果都不同......我会看看你建议的那些替代方案,看起来很有趣。谢谢! 您能否提供更多关于您有多少数据样本以及您正在处理的数据类型的信息?事实上,测试数据与训练数据不同是件好事。您的测试数据与您的训练数据的差异越大,您的测试准确性关于泛化性能就越有说服力。但是在您的测试集中,您应该有一定的案例多样性。此外:您现在如何确定收敛点? 在我的问题上解释起来有点复杂,所以我举个例子。假设我试图根据特征“颜色”在青苹果和橙子之间进行分类。我训练了一个可以在两者之间进行分类的 ANN,并且对苹果/橙色测试集很有效。现在我相信绿色西红柿和香蕉之间也存在同样的差异,所以我尝试将针对苹果/橙子训练的相同 ANN 用于西红柿/香蕉测试集。问题在于,每次训练 ANN 时,我都会得到不同的分类准确度,这是可以理解的。希望我足够清楚。非常感谢您的帮助。【参考方案2】:

看起来您的 ANN 没有收敛到最佳权重集。如果没有 ANN 模型的更多细节,我无法确定问题所在,但我会尝试增加迭代次数。

【讨论】:

我考虑过这个选项,但我相信它确实会收敛到最佳权重集,因为对于训练集,它会收到非常好的分类结果。也许它们可以通过几组不同的权重获得,有些对我的测试集有用,有些则不行?再次感谢...

以上是关于相同训练测试集的 ANN 不同结果的主要内容,如果未能解决你的问题,请参考以下文章

如果 ANN 产生完全不同的结果,该怎么办?

R语言决策树bagging随机森林模型在训练集以及测试集的预测结果(accurayF1偏差Deviance)对比分析计算训练集和测试集的预测结果的差值来分析模型的过拟合(overfit)情况

MATLAB SVM:使用相同的数据集进行训练和测试会产生不同的结果

机器学习之sklearn数据集

WEKA - 分类 - 训练和测试集

python 观察具有不同k值的训练和测试集的准确度分数如何不同