如何在MATLAB中验证概率神经网络给出的输出?

rcty

我对学习神经网络感兴趣,例如,我尝试了以下通过实验得出的数据集。

我在神经网络中使用以下输入向量;

X = [1 1; 1 2; 1 3; 1 4; 4 1; 4 2; 4 3; 4 4; 7 1;7 2; 7 3; 7 4]';
Tc = [1 1 2 3 1 1 2 2 1 1 2 2];

我想将输入数据分为三类,分别由输入向量Tc描述。然后,我将目标类别索引Tc转换为向量T,而我使用的扩展值是1。

使用MATLAB中的newpnn函数,我得到了这三个类的决策边界。

我对验证决策边界是否合适感到怀疑。我正在使用X =[2;3.55]属于第2类的单个数据验证输出。它在输出图中以黑点表​​示。蓝色是1类。黄色是2类区域。红色是3类。

如该图所示,发现神经网络的预测为类别2,与该集合的实际类别一致。

那么,这是否意味着我的神经网络是正确且经过验证的?

PS我对神经网络有基本的了解。此外,我了解拥有更多培训示例和验证集的概念。我希望能找到适合于可用细节的答案,因为我无法通过实验获得更多数据。

在此处输入图片说明

亚历克西斯·克莱兰博

嗯,我认为您不太了解验证是指神经网络。无法仅使用一个样本来检查网络因此,我将尝试教您有关验证神经网络的知识。这是一个漫长的统计过程,涉及对“现实世界的数据”,“预期的行为”等的反思。...您无法使用10-20个数据和一个验证点来验证某些东西。

通常,当您教一个神经网络时,您应该有3套

  • 第一个是训练集,它是算法的输入,用于设置不同网络的权重这只是一种用于运行算法的强制性数据。
  • 第二套验证集用于为您的问题选择正确的算法并减少过拟合它比较了不同产品的性能并选择了最好的产品(过拟合的产品根本不会有很好的性能)。
  • 测试仪:这是最后阶段。选择算法及其参数后,您将使用一组新数据(取自现实世界),并检查其是否执行了应做的工作(就像一个一致性测试)。

(来源:https : //stats.stackexchange.com/questions/19048/what-is-the-difference-between-test-set-and-validation-set

例如,我们正在建立一种算法来检查一个人是否“有一定机会变得富有”。这是您制作和验证神经网络的方法。

  1. 首先,我们问1万个人是否有钱,然后检查一些参数(年龄,位置等)。它构成了“原始数据集”。
  2. 我们将10000人的清单分为3组(6000 2000和2000):训练集,验证集和测试集(注意:比例可以根据验证程序而变化)。
  3. 我们应用学习集(第一个6000个数据),并将其应用到不同的神经网络中进行教学(我们将其命名为A,B,C和D)
  4. 我们使用验证集(下一个2000个数据)来检查四个网络的性能。这是避免过度拟合的方法。假设网络A根本不是一个网络,它只是一个记录器。它记录了不同的数据及其类,但根本无法预测任何内容。如果我们用6000第一人称进行验证测试,那么“虚拟算法”将给出100%的结果,但是在该测试上将完全失败。因此,在测试之后,您可以选择“最佳算法”。让我们选择C。
  5. 现在,我们使用其余的数据(测试集或新数据,如果可以的话,它总是更好)运行C。如果我们发现C具有非常奇怪且不可预测的行为(它可能是由某些人为错误引起的,例如创建的集并非真正独立或仍然正确,例如,如果数据来自1996年),我们选择另一种算法或我们尝试检查数据或算法有什么问题。

这是您如何构建可靠的神经网络的方法(请记住,两个主要问题是不检查最终结果和过度拟合)。

过度拟合是一个关键概念。我将尝试对其进行一些定义并举一个例子。过度拟合使得算法能够建立非常接近的近似值,但是却无法预测任何东西(我称之为“虚拟算法”)。

让我们比较一下例如线性插值器和多项式(第1000000次,非常高的次数)。我们的多项式算法可能很好地拟合了数据(极端的过度拟合正好拟合了我们所有的数据)。但是,它根本无法预测任何东西。

对于下面的示例,如果在验证集中(从真实世界数据中提取)在(2,-2)和(-1,2)中有一个点,则可以假定多项式插值显然过拟合,因为它建议值例如(-1,10)和(2,20)。线性的应该更接近。

在此处输入图片说明

希望对您有所帮助。(请注意,我不是该领域的专家,但我尝试做出一个非常易读和简单的答案,因此,如果有任何错误,请随时发表评论:))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在神经网络(MATLAB)中对输出进行归一化?

如何在Matlab中以最佳验证精度将卷积神经网络还原为迭代

Matlab:如何在神经网络中禁用验证和测试数据集

如何在keras模型中验证神经网络的结构?

如何在Matlab中实现多层神经网络?

Matlab:如何在神经网络中使用.dat文件?

如何在keras中可视化卷积神经网络中间层的输出?

如何在神经网络中赋予某些输出更多的权重?

如何在Matlab中逐步训练神经网络?并反复组合它们

如何在Matlab的神经网络中改善数字识别预测?

如何在Matlab中在大样本集上训练神经网络?

MATLAB神经网络:它是如何工作的?

如何在python中修改神经网络的代价函数

如何在PyTorch中更新神经网络的参数?

如何在keras中同时训练多个神经网络?

如何在神经网络中删除整个隐藏层?

如何在神经网络中添加“其他”类?

如何在神经网络中应用权重?

如何在神经网络中测试实时预测?

Matlab中的神经网络拟合

如何从自定义神经网络模型中获取对数和概率

如何计算神经网络隐藏层中神经元的目标输出?

如何在DL4J中配置神经网络以产生多个二进制输出

从神经网络导出输出

操纵神经网络的输出

如何在神经网络的输出层计算二阶导数?

如何在Python,Keras中将神经网络的输出限制为正数

如何在神经网络中使用k折交叉验证

如何在MATLAB中将训练神经网络编译为独立应用程序?