【问题标题】:Matlab neural network testingMatlab神经网络测试
【发布时间】:2012-09-19 11:48:19
【问题描述】:

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

【问题讨论】:

    标签: matlab neural-network


    【解决方案1】:

    我不熟悉 nprtool,但我怀疑它会将 输入 数据提供给您的神经网络,然后将您的 NN 的 输出 数据与目标数据(并据此计算某种成功率)。

    所以你的神经网络永远不会看到目标数据,它只是用来衡量性能。

    这就像学校练习本的“教师版”。学生(即 NN)没有解决方案,但老师(即nprtool)会将她/他的答案与他们进行比较。 (好吧,老师可能/希望知道这个主题,但你明白了。)

    【讨论】:

      【解决方案2】:

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

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

      第二个用于确定网络的性能(注意:此集合不以任何方式用于更新网络):当 NN “学习”错误时(作为 t 和 @ 之间的差异验证集上的 987654326@) 减少。趋势最终会停止甚至逆转:这种现象被称为“overfitting”,这意味着神经网络现在正在追逐训练集,以牺牲泛化能力为代价“记忆”它(意思是:在看不见的情况下表现良好)数据)。所以这个验证集的目的是在 NN 开始过拟合之前确定何时停止训练。这应该可以回答您的问题。

      最后,第三组用于外部测试,让您的数据集不受训练过程的影响。

      【讨论】:

      • 澄清一下:验证集一般用于比较神经网络的不同架构或参数。例如,虽然训练集用于训练网络,但验证集将用于确定有多少层/节点。它也可以用来找到一个好的正则化参数。测试集不能用于此的原因是因为架构可以过拟合验证集,就像学习算法可以过拟合训练集一样。
      【解决方案3】:

      尽管总数据集 [训练、验证和测试] 是训练算法的输入,但测试数据绝不用于设计(即训练和验证)网络

      总计 = 设计 + 测试

      设计 = 训练 + 验证

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

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

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

      过拟合网络比训练方程具有更多的未知权重和偏差,从而允许无限数量的解决方案。一个使用两个未知数但只有一个方程的过拟合的简单示例:

      已知:a、b、c

      查找:唯一的 x1 和 x2

      使用:a * x1 + b * x2 = c

      希望这会有所帮助。

      格雷格

      【讨论】:

        猜你喜欢
        • 2014-02-24
        • 2015-12-03
        • 2011-08-23
        • 2018-09-19
        • 2018-10-30
        • 2014-01-15
        • 2011-02-14
        • 2010-11-20
        • 2011-07-31
        相关资源
        最近更新 更多