我创建了一个神经网络,结构如下:
输入1 - 输入2 - 输入层。
N0 - N1 - 隐藏层。每个节点3个权重(一个用于偏差)。
N2 - 输出层。 3个权重(一个用于偏见)。
我正在尝试使用以下测试数据训练XOR函数:
训练后,测试的均方误差(当寻找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 (偏差) - 输出节点
感谢。
答案 0 :(得分:0)
这些步骤有助于解决您的问题:
更改激活功能。这是一个类似的问题,我使用relu作为激活函数回答:Neural network XOR gate not learning
增加纪元数量。
将学习率更改为更合适的值,以便更快地达到收敛。你可以在这里找到更多信息: How to determine the learning rate and the variance in a gradient descent algorithm?