【发布时间】:2017-01-30 16:48:41
【问题描述】:
我正在玩我自己实现的神经网络:它是一个简单的前向网络,使用 RPROP 作为学习算法,作为与基本设计相比的唯一“加分项”。
当我针对 MNIST 进行测试或尝试图像压缩时,网络得分不错,但是当我尝试对像 XOR 函数这样简单的东西进行建模时,有时在学习过程中它会陷入局部最小值,并输出以下内容真值表:
0 XOR 0 = 1.4598413968251171e-171
1 XOR 0 = 0.9999999999999998
0 XOR 1 = 0.9999999999999998
1 XOR 1 = 0.5
通常训练后的结果是正确的,但有时 1 XOR 1 输出 0.5 而不是应有的 1。 XOR(1,1) 并不总是会发生这种情况,但其他输入也会发生这种情况。作为反向传播文献中的“经典” XOR 函数,我想知道这里发生了什么,特别是考虑到我的网络似乎可以学习更复杂(但可能非线性)的任务就好了。
我的疯狂猜测是偏见有问题。
有什么提示吗?
注1:上面的网络布局是2|3|1,但是当我使用更多隐藏单元时变化不大,某些学习尝试仍然出错。
注 2:我将实现放入 Gist:https://gist.github.com/antirez/e45939b918868b91ec6fea1d1938db0d
【问题讨论】:
-
你用的是什么功能?可以分享一下吗?
-
我只是在这里简要介绍了整个实现:gist.github.com/antirez/e45939b918868b91ec6fea1d1938db0d 这是非常基本的东西。编辑:刚刚添加了头文件。
-
实际测试更多我发现不只是XOR(1,1)失败了,其他的可能输出0.5。
标签: neural-network xor backpropagation