神经网络无法学习异或

时间:2014-04-15 09:42:09

标签: neural-network xor backpropagation

我创建了一个神经网络,结构如下:

输入1 - 输入2 - 输入层。

N0 - N1 - 隐藏层。每个节点3个权重(一个用于偏差)。

N2 - 输出层。 3个权重(一个用于偏见)。

我正在尝试使用以下测试数据训练XOR函数:

  • 0 1 - 期望的结果:1
  • 1 0 - 期望的结果:1
  • 0 0 - 期望的结果:0
  • 1 1 - 期望的结果:0

训练后,测试的均方误差(当寻找1个结果时){0,1} = 0 ,这是我认为的好。然而,测试的均方误差(当寻找0结果时){1,1} = 0.5 ,肯定需要为零。在学习阶段,我注意到真实结果的MSE在前几个时期内降至零,而虚假结果的MSE在0.5附近徘徊。

我正在使用反向传播来训练网络,具有sigmoid功能。问题是,当我在训练后测试任何组合时,我总是得到 1.0结果输出。 - 即使学习率极低,网络似乎学得很快。

如果有帮助,这里是产生的权重:

N0-W0 = 0.5 ,N0-W1 = -0.999 ,N0-W2 = 0.304 (偏差) - 隐藏层

N1-W0 = 0.674 ,N1-W1 = -0.893 ,N1-W2 = 0.516 (偏差) - 隐藏层

N2-W0 = -0.243 ,N2-W1 = 0.955 ,N3-W2 = 0.369 (偏差) - 输出节点

感谢。

1 个答案:

答案 0 :(得分:0)

这些步骤有助于解决您的问题:

  1. 更改激活功能。这是一个类似的问题,我使用relu作为激活函数回答:Neural network XOR gate not learning

  2. 增加纪元数量。

  3. 将学习率更改为更合适的值,以便更快地达到收敛。你可以在这里找到更多信息: How to determine the learning rate and the variance in a gradient descent algorithm?