【问题标题】:Using neural network with true and false outputs使用具有真假输出的神经网络
【发布时间】:2014-04-13 21:11:18
【问题描述】:

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

  • 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

谁能告诉我我哪里错了?
非常感谢。

【问题讨论】:

  • 在您的输出字段中,将 Pattern1 转换为 0,将 Pattern2 转换为 1。然后确保在训练和测试数据中都有 0 和 1 个样本,正如@Damien Black 所提到的那样。

标签: neural-network encog


【解决方案1】:

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

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

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

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

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

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

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

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

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

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

【讨论】:

  • 只是这么说,我认为 1,2,3,4 只是@Xitrium 给出的一个例子。据推测,真实数据的几何形状较少
  • 非常感谢您的回答,还有一点我要说清楚的是,既然神经网络需要真假数据进行运算,这是否也适用于一类分类支持向量机?
猜你喜欢
  • 2018-02-28
  • 2016-08-03
  • 1970-01-01
  • 2015-02-23
  • 2020-03-15
  • 2017-11-16
  • 2014-01-02
  • 1970-01-01
相关资源
最近更新 更多