使用具有真假输出的神经网络

Xit*_*rum 2 neural-network encog

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

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

我的训练数据:

1,2,3,4 Pattern1
6,7,8,9 Pattern1
Run Code Online (Sandbox Code Playgroud)

我的测试数据:

4,3,2,1 Pattern2
Run Code Online (Sandbox Code Playgroud)

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

0.0,0.0, actual=-0.05972914453206861,ideal=1.0
Run Code Online (Sandbox Code Playgroud)

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

Dam*_*ack 5

如果你只需要一个真/假响应,你的输出层应该只有一个神经元。如果那个神经元处于活动状态,则将其视为正确。如果它不活动,则将其视为错误。

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

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

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

1,2,3,4 is true; 6,7,8,9 is true. Is 4,3,2,1 true?
Run Code Online (Sandbox Code Playgroud)

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

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

我不知道哪些是要求,哪些不是。不知道。而你正在制作的神经网络的想法甚至更少。

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

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