2012-09-27 183 views
2

我创建了一个神经网络,性能很好。通过使用nprtool,我们可以使用输入数据和目标数据来测试网络。这是我的问题,测试提供目标数据的神经网络的目的是什么?是不是测试不应该有目标数据,这样我们就可以知道训练好的神经网络如何在没有目标数据的情况下执行?希望有人会对此作出回应,感谢=)Matlab神经网络测试

回答

0

我不熟悉nprtool,但我怀疑它会给输入数据到你的神经网络,然后用比较你NN的输出数据目标数据(并基于此计算某种成功率)。

因此,您的NN永远不会看到目标数据,它只是用来衡量性能。

这就像是学校练习册的“老师版”。学生(即NN)没有解决方案,但她/他的答案将由教师与他们进行比较(即nprtool)。 (好吧,老师大概/希望知道的问题,但你的想法。)

+0

你我的想法,感谢帮助=) – wan

0

“目标”数据t时所需的y=net(x)y作为例子来训练网络。 nprtool做的是将训练集分为三组:训练集,验证集和测试集。

第一个用于实际更新网络。

第二个是用来确定网络的性能(注意:这个集合并不以任何方式用于更新网络):随着NN“学习”错误(作为tnet(x)之间的差异)在验证集上减少。这种趋势最终会停止甚至倒转:这种现象被称为“overfitting”,这意味着神经网络现在正在追逐训练集,“记忆”它的代价是泛化能力(意思是:用未见的数据表现良好) 。所以这个验证集的目的是在NN开始过拟合之前确定何时停止训练。这应该回答你的问题。最后第三组是用于外部测试,为您留下一套训练程序未触及的数据。

+0

澄清: 验证集合一般用于比较不同的体系结构或神经网络的参数。例如,虽然训练集用于训练网络,但验证集将用于确定有多少层/节点。它也可以用来找到一个好的正则化参数。 测试集无法用于此目的的原因是因为架构可能过度使用验证集,同样,学习算法可能会过度训练集。 –

+0

感谢您的信息,它确实有助于=) – wan

0

即使总数据集[训练,验证和测试]被输入到训练算法,测试数据不以任何方式来设计(即,火车和验证)的净

总=设计+测试

设计=列车+验证

训练数据被用于估计权重和偏置

的验证数据被用于监测非训练数据的设计性能。无论培训数据的性能如何,如果6个(默认)时期的验证性能持续下降,则培训终止(验证停止)。

这可以缓解OVERTRAINING AN OVERFIT NET的可怕现象,即使训练集性能提高,非训练数据的性能也会降低。

过度训练网具有比训练方程更多的未知权重和偏差,从而可以提供无数种解决方案。具有两个未知数的过度拟合的一个简单的例子,但只有一个方程:

KNOWN:A,B,C

FIND:独特x1和x2

USING:A * X1 + B * X2 = C

希望这会有所帮助。

格雷格