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

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

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

谢谢

最佳答案

确保您的测试集与训练集相比足够大(例如总数据的 10%)并检查它的多样性。如果您的测试集仅涵盖非常特定的情况,这可能是一个原因。还要确保您始终使用相同的测试集。或者,您应该在谷歌上搜索术语交叉验证。

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

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

关于matlab - 相同训练测试集的 ANN 不同结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15443102/

10-12 02:08