多类神经网络问题

Multiclass Neural Network Issue

我已经尝试实施 back-propagation 神经网络一段时间了,但我一次又一次地遇到问题。到目前为止的进展是我的神经网络在 XOR、AND 和 OR 上运行良好。

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

现在向前推进,我将 XY 平面中的两个区分坐标训练成两个 classes,具有相同结构的 2 个输入神经元和 1 个输出神经元以及具有两个神经元的单个隐藏层:

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

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

如果您从二进制 class 化转变为多重 class class 化,您将必须概括您的反向传播算法以正确处理两个以上 class es.

与二进制 classification 的主要区别在于更新更改为:

与:

是新的分数,其中选择参数 y(输出),产生特征的最高分数乘以权重向量 w。此策略称为 one-vs.-rest. Written as pseudocode (from here):

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

如果您有多个 independent attributes by which you classify. Otherwise, you should consider using a softmax output layer (see here 作为实施示例,您的每个 class 有 1 个二进制输出节点的体系结构是非常好的)。在输出层使用 softmax 激活会将原始值转换为后验概率(与每个 class 的二进制输出相反)。因为这给了你一定程度的确定性,所以它也给了你更多的洞察力。