【问题标题】:Neural networks - why everybody has different approach with XOR神经网络 - 为什么每个人都有不同的 XOR 方法
【发布时间】:2018-03-04 09:46:16
【问题描述】:

目前我正在尝试通过阅读书籍来学习如何使用神经网络,但主要是互联网教程。

我经常看到“XOR 是神经网络的‘Hello World’”。

但这里有一件事:一个教程的作者说,对于计算 XOR 值的神经网络,我们应该使用 1 个隐藏层和 2 个神经元。他还使用带有增量的反向传播来调整权重。

我实现了这个,但即使在 100 万个 epoch 之后,我也遇到了一个问题,即网络被输入数据 1 和 1 卡住了。应该有“0”作为答案,但答案通常是 0.5something。我检查了我的代码,它是正确的。

如果我尝试在隐藏层中再添加 1 个神经元,网络将在约 50 000 个 epoch 后成功计算 XOR。

同时有人说“异或不是一件小事,我们应该使用2-3层或更多层的网络”。为什么?

拜托,如果异或产生了这么多问题,也许我们不应该将它用作神经网络的“hello world”?请解释发生了什么。

【问题讨论】:

  • 引用:“我检查了我的代码,它是正确的。”如果您自己的代码没有按照您的意愿执行,那么根据定义,它是不正确的。很抱歉让您分心。继续... :-)
  • 看有很多关于异或神经网络应该是什么样子的意见。其中之一是我们应该使用 3 个神经元——就像我一样。如果您有一些建设性的想法 - 请分享。

标签: machine-learning neural-network


【解决方案1】:

所以神经网络真的很有趣。有证据表明,只要有足够的时间,单个感知器就可以学习任何线性函数。更令人印象深刻的是,具有一个隐藏层的神经网络显然可以学习任何功能,尽管我还没有看到关于那个功能的证明。

XOR 是一种很好的神经网络教学功能,因为作为 CS 学生,班上的学生可能已经熟悉它。此外,从单个感知器可以学习它的意义上说,这并不是微不足道的。它不是线性的。请看我整理的这张图。

没有分隔这些值的线。然而,人类理解起来很简单,更重要的是,人类可以理解可以解决它的神经网络。 NN 非常黑盒,很难说为什么它们工作得非常快。见鬼,这是另一个可以解决异或的网络配置。

您的更复杂网络示例可以更快地解决它,这显示了组合更多神经元和更多层所带来的力量。绝对没有必要使用 2-3 个隐藏层来解决它,但它确实有助于加快处理速度。

关键是它是一个足够简单的问题,可以由人类在课堂黑板上解决,同时也比给定的线性函数更具挑战性。

编辑:另一个实际教授 NN 的绝妙例子是 MNIST 手绘数字分类数据集。我发现它很容易显示一个问题,同时对人类来说非常容易理解,很难为其编写非学习程序,并且是机器学习的一个非常实用的用例。问题是网络结构不可能在黑板上画出来并以对班级实用的方式来追踪正在发生的事情。 XOR 实现了这一点。

编辑 2:此外,如果没有代码,可能很难诊断它为什么不收敛。你自己写神经元吗?优化函数等呢?

编辑 3:如果函数最后一个节点的输出为 0.5,请尝试使用步进压缩函数,使 0.5 以下的所有值变为 0,并将 0.5 以上的所有值变为 1。反正你只有二进制输出,所以为什么要打扰在最后一个节点上连续激活?

【讨论】:

    猜你喜欢
    • 2017-10-11
    • 2018-06-10
    • 2018-03-23
    • 2023-03-23
    • 2014-05-09
    • 2015-02-04
    • 2019-03-15
    • 2016-05-13
    • 2023-03-24
    相关资源
    最近更新 更多