2

由于我是神经网络的新手,所以我想问几个问题以更清楚地理解它。

  • Q1:我想测试真假结果(模式识别),这是否意味着我的输出层将有 2 个中子?
  • Q2:继续问题1,如果训练数据中只包含真实数据,那么测试数据中的所有结果都会一直为真?(因为我遇到了这个问题,并且 Encog 库不允许我指定两个输出中子,因为我在训练数据中只有一种类型的输出)。

我的训练数据:

1,2,3,4 Pattern1
6,7,8,9 Pattern1

我的测试数据:

4,3,2,1 Pattern2

这是我从 encog 得到的结果:神经网络结果:

0.0,0.0, actual=-0.05972914453206861,ideal=1.0

有人可以告诉我我哪里错了吗?
非常感谢你。

4

1 回答 1

5

如果你只需要一个真/假响应,你的输出层应该只有一个神经元。如果那个神经元是活跃的,则将其视为真实。如果它不活跃,则将其视为错误。

如果您的训练数据只有真实值,那么它就是不好的数据,并且不会真正有帮助。您将最终训练您的网络以始终以真实的方式响应。也许您应该找出一些会导致错误结果的数据并将其添加到训练数据中。

如果您的训练数据只有两种情况,并且它们都是正确的,那么您的网络真的不会学到任何东西。您需要更多数据才能使模式清晰。

去问一个聪明的人(我们拥有的最好的神经网络)以下问题:

1,2,3,4 is true; 6,7,8,9 is true. Is 4,3,2,1 true?

他们不知道。我不知道。没人知道。我不知道标准是什么。可以是任意数量的事物来确定序列是否为真。包含:

  • 数字在上升
  • 他们朝同一个方向移动
  • 他们总是分开的
  • 所有的数字都在 10 以内

我不知道其中哪些是要求,哪些不是。不知道。而你正在制作的神经网络将更没有想法。

主要问题是您需要更多数据。

最后一点。人们常说神经网络擅长“模式匹配”。这是真的。然而,数字序列通常不是“模式匹配”的意思。任何需要算术的东西都不会被神经网络很好地服务。它们对于算术来说不够精确。因此,您将永远无法特别好地训练神经网络,例如识别一系列倍数。

于 2014-03-10T16:29:22.037 回答