3

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

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

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

谢谢

4

2 回答 2

2

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

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

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

于 2013-03-23T19:22:41.767 回答
0

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

于 2013-03-15T23:07:34.857 回答