【问题标题】:Neural networks and the XOR function神经网络和 XOR 函数
【发布时间】: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


【解决方案1】:

问题是由于我的实现中的一个错误:在输出单元之前的 NN 的偏置单元没有正确计算。修复代码后,XOR 函数总是正确计算。

【讨论】:

    猜你喜欢
    • 2023-03-23
    • 2014-05-09
    • 2015-07-21
    • 2018-02-11
    • 2015-02-04
    • 2019-03-15
    • 2016-05-13
    • 2012-03-28
    • 1970-01-01
    相关资源
    最近更新 更多