我试图了解实现 XOR 门的最佳神经网络是什么。如果神经网络能够以尽可能低的误差产生所有预期结果,我认为它是好的。
看起来我最初选择的随机权重对训练后的最终结果有很大影响。根据我最初选择的随机权重,我的神经网络的准确度(即误差)变化很大。
我从一个 2 x 2 x 1 的神经网络开始,在输入层和隐藏层中有一个偏差,使用 sigmoid 激活函数,学习率为 0.5。在我的初始设置下方,随机选择权重:
正如人们所期望的那样,最初的性能很差:
Input | Output | Expected | Error
(0,0) 0.8845 0 39.117%
(1,1) 0.1134 0 0.643%
(1,0) 0.7057 1 4.3306%
(0,1) 0.1757 1 33.9735%
然后我继续通过反向传播训练我的网络,输入 XOR 训练集 100,000 次。训练完成后,我的新权重是:
并且性能提高到:
Input | Output | Expected | Error
(0,0) 0.0103 0 0.0053%
(1,1) 0.0151 0 0.0114%
(1,0) 0.9838 1 0.0131%
(0,1) 0.9899 1 0.0051%
所以我的问题是:
有没有人想出具有该配置的 XOR 神经网络的最佳权重(即带有偏差的 2 x 2 x 1)?
为什么我最初选择的随机权重会对我的最终结果产生很大影响?我在上面的例子中很幸运,但是根据我最初选择的随机权重,在训练之后,我得到的错误高达 50%,这非常糟糕。
我做错了什么或做出了错误的假设吗?
下面是一个我无法训练的重量示例,原因不明。我想我的反向传播训练可能不正确。我没有使用批次,我正在更新从我的训练集中解决的每个数据点的权重。
重量:((-9.2782, -.4981, -9.4674, 4.4052, 2.8539, 3.395), (1.2108, -7.934, -2.7631))