【问题标题】:Multiclass Neural Network Issue多类神经网络问题
【发布时间】:2015-04-18 20:29:48
【问题描述】:

我一直在尝试实施反向传播神经网络一段时间,但我一次又一次地面临问题。到目前为止的进展是我的神经网络可以很好地处理 XOR、AND 和 OR。

下图显示了我的神经网络对超过 100000 次迭代的 XOR 训练,它似乎收敛得很好。为此,我有 2 个输入神经元和一个带有隐藏层的输出神经元和 2 个神经元 [虽然 1 就足够了]

现在继续前进,我训练了相同的网络,将 XY 平面上的两个坐标区分为具有相同结构的两个类,即 2 个输入神经元和 1 个输出神经元以及具有两个神经元的单个隐藏层:

接下来我只训练了两个类,但有 2 个输出神经元并保持结构的其余部分相同,这次收敛确实需要很长时间,但确实如此。 但现在我增加到了三个班级; A 类为 100,B 类为 010,C 类为 001,但现在当我训练它时,它永远不会收敛,并为我提供以下数据的以下结果:

它似乎永远不会收敛。而且我已经观察到这种模式,如果我增加输出层中的神经元数量,错误率会像任何东西一样增加?谁能告诉我哪里出错了?

【问题讨论】:

  • 什么是逻辑输出神经元级别?绿色0-0.3,蓝色0.3-0.7,红色0.7-1.0?
  • 不!实际上我的输出层有 3 个神经元,所以如果它被归类为 A 类,那么应该触发输出层的第一个神经元,并且该层的完整输出将为 100,同样,如果 B 类则完整输出将为 010,依此类推
  • 这些输出的总和是多少?
  • 输出的总和??.. 我只将上述那个作为我的最终输出.. 就像我的输出将是 [1.0,0.0,0.0] 或 [0.0,1.0,0.0 ] 或 [0.0,0.0,1.0] 在理想情况下.. 我希望这让我的问题更清楚
  • 只是出于兴趣,我注意到了 Java 标记。您为此使用了什么 NN 库?

标签: java neural-network backpropagation


【解决方案1】:

如果您从二元分类转向多类分类,则必须泛化您的反向传播算法以正确处理两个以上的类。

与二元分类的主要区别在于更新变为:

与:

是选择参数 y(输出)的新分数,它产生特征的最高分数乘以权重向量 w。此策略称为one-vs.-rest。写成伪代码(from here):

请记住,根据您自己的特定代码,您可能需要对当前代码执行额外的更改(例如,将实际值输出映射到 每个输出单元的二进制输出)。

如果您有多个用于分类的independent 属性,那么每个类有1 个二进制输出节点的架构非常好。否则,您应该考虑使用softmax 输出层(有关实现示例,请参见here)。在输出层使用 softmax 激活会将您的原始值转换为后验概率(而不是每类的二进制输出)。由于这为您提供了确定性的衡量标准,因此也为您提供了更多洞察力。

【讨论】:

  • 我对神经网络一无所知,但这是一个很酷的答案。
  • 感谢您的回答!但是我会进行大量研究以了解您在这里提出的观点,然后实施您建议的那些更改..但非常感谢您提供的所有资源:)
猜你喜欢
  • 2019-03-28
  • 2011-02-22
  • 2011-03-29
  • 2017-05-27
  • 2013-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-15
相关资源
最近更新 更多