【发布时间】:2014-05-29 14:07:03
【问题描述】:
我创建了一个神经网络,结构如下:
Input1 - Input2 - 输入层。
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(偏差)-输出节点
谢谢。
【问题讨论】:
-
给你的思考练习:你在网络中有 3x2 + 3 = 9 个权重(如果我理解正确的话)。把它们想象成你正在解决的 9 个未知数。并将您的 4 个训练输入视为可用于求解未知数的 4 个方程。现在,求解具有 9 个未知数的 4 个方程组是否有意义?当你尝试这样做时会发生什么?
-
如果你使用的是 sigmoid 函数,让权重超过 1 并超过 -1,这样 sigmoid 函数的结果可以更精确。为了表现良好,我的一些 NN 需要非常高(数百)或非常低的权重。
标签: neural-network xor backpropagation