我正在MATLAB中为监督分类任务实现神经网络。
我有训练集和测试集来评估结果。 问题在于,每次我为相同的训练集训练网络时,我得到的结果都非常不同(有时我得到95%的分类准确度,有时候是60%),对于同一个测试集。
现在我知道这是因为我获得了不同的初始权重,我知道我可以使用'种子'设置相同的初始权重,但问题是这对我的数据说了什么,以及正确的方法是什么这个?如何定义使用我设计的ANN获得的准确度?是否有这样的协议(如运行人工神经网络50次并获得平均准确度等)?
由于
答案 0 :(得分:2)
确保您的测试集与训练集相比足够大(例如,总数据的10%)并检查其是否存在多样性。如果您的测试集仅涵盖非常具体的情况,这可能是一个原因。还要确保始终使用相同的测试集。或者,您应该使用术语交叉验证。
此外,在观察不良测试集精度的同时观察良好的训练集准确度是过度拟合的标志。尝试应用正则化,如简单的L2权重衰减(在每次权重更新后,简单地将权重矩阵乘以例如0.999)。根据您的数据,Dropout或L1正则化也可能有所帮助(特别是如果输入数据中存在大量冗余)。还尝试选择较小的网络拓扑(每层更少的层和/或更少的神经元)。
为了加快培训速度,您还可以尝试其他学习算法,例如RPROP+, RPROP- or RMSProp,而不是普通的反向传播。
答案 1 :(得分:0)
看起来你的ANN没有收敛到最佳权重集。如果没有ANN模型的更多细节,我无法确定问题,但我会尝试增加迭代次数。