神经网络中的输出问题(在MATLAB的神经网络工具箱中)

时间:2013-12-14 12:58:28

标签: matlab machine-learning neural-network

我在MATLAB中用652,500个数据点训练我的artificial neural network(ANN),在另一个盲测试中(652,100个数据点 - 对于全新的输入数据集),输出非常好(我想要的)。但是当我插入非常少量的数据(例如,低于50个数据点)时会出现问题。输出非常意外,我多次检查过。

更准确地说,培训阶段包含10%的培训数据,45%的验证数据和45%的测试数据。培训非常成功,对于大量新输入数据,它可以很好地工作。问题是当神经网络中插入非常有限的数据(与训练数据点相比)时,它显示出非常不切实际的输出,超出了它训练的范围。

为什么会这样?有人可以点亮这个棚子吗?

另请注意,是否有关于培训和最终测试数据点的严格(硬性和快速)规则?例如:在新的输入数据集中应该/必须引入多少百分比的训练数据。我想问题是我的网络过高估计或低估了输出,因为与训练阶段相比,它收到的数据百分比非常低。

1 个答案:

答案 0 :(得分:0)

您的问题是在训练期间过度拟合数据集。数据划分是神经网络训练中非常重要的任务。一般而言,更科学地,训练集的百分比应该在70-80%之间。测试和验证集应各自在10-15%左右。例如:

net.divideParam.trainRatio = 70/100;
net.divideParam.valRatio = 15/100;
net.divideParam.testRatio = 15/100;

你想象一个班上的学生。 TrainRatio是学生应该学习的材料/讲座。 ValRatio是应作为中期检查审查的材料的百分比,TestRatio是应作为期末检查审查的材料的百分比。因此,如果您没有足够的材料进行培训,那么学生在中期和期末考试中就不会成功。清楚吗?神经网络适用于这样一个学习/训练的简单学生。因此,您的网络面临着过度拟合的问题。