我对学习神经网络感兴趣,例如,我尝试了以下通过实验得出的数据集。
我在神经网络中使用以下输入向量;
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)
例如,我们正在建立一种算法来检查一个人是否“有一定机会变得富有”。这是您制作和验证神经网络的方法。
这是您如何构建可靠的神经网络的方法(请记住,两个主要问题是不检查最终结果和过度拟合)。
过度拟合是一个关键概念。我将尝试对其进行一些定义并举一个例子。过度拟合使得算法能够建立非常接近的近似值,但是却无法预测任何东西(我称之为“虚拟算法”)。
让我们比较一下例如线性插值器和多项式(第1000000次,非常高的次数)。我们的多项式算法可能很好地拟合了数据(极端的过度拟合正好拟合了我们所有的数据)。但是,它根本无法预测任何东西。
对于下面的示例,如果在验证集中(从真实世界数据中提取)在(2,-2)和(-1,2)中有一个点,则可以假定多项式插值显然过拟合,因为它建议值例如(-1,10)和(2,20)。线性的应该更接近。
希望对您有所帮助。(请注意,我不是该领域的专家,但我尝试做出一个非常易读和简单的答案,因此,如果有任何错误,请随时发表评论:))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句