machine-learning - 神经网络 - 为什么每个人都有不同的 XOR 方法

标签 machine-learning neural-network

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

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

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

enter image description here

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

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

enter image description here

同时有人说“XOR 不是一个简单的任务,我们应该使用 2-3 层或更多层的网络”。为什么?

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

最佳答案

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

XOR 是教授神经网络的一个很好的函数,因为作为计算机科学的学生,类的人可能已经熟悉它了。此外,从单个感知器可以学习它的意义上来说,这并不是微不足道的。它不是线性的。请参阅我整理的这张图。

enter image description here

没有任何线分隔这些值。然而,它对于人类来说足够简单理解,更重要的是,人类可以理解可以解决它的神经网络。神经网络非常黑盒化,很难说出为什么它们工作得非常快。天哪,这是另一个可以解决异或问题的网络配置。

enter image description here

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

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

编辑:实际教授神经网络的另一个绝佳示例是 MNIST 手绘数字分类数据集。我发现它很容易地展示了一个对于人类来说非常简单理解、很难编写非学习程序的问题,同时也是一个非常实用的机器学习用例。问题在于,网络结构不可能以类实用的方式在黑板上画出来并跟踪正在发生的事情。 XOR 实现了这一点。

编辑2:另外,如果没有代码,可能很难诊断它不收敛的原因。神经元是你自己写的吗?优化功能等等怎么样?

编辑 3:如果函数最后一个节点的输出是 0.5,请尝试使用步进压缩函数,将所有低于 0.5 的值变为 0,将所有高于 0.5 的值变为 1。无论如何,您只有二进制输出,所以为什么要费心呢?在最后一个节点上连续激活?

关于machine-learning - 神经网络 - 为什么每个人都有不同的 XOR 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49090962/

相关文章:

neural-network - 神经网络中的成本函数是什么?

machine-learning - 如何提高 Apache Spark 多层感知器分类器的准确性?

python - 在keras中创建一个神经网络来乘以两个输入整数

python-3.x - 如何根据提供的输入从训练有素的随机森林模型中获取单个房价

r - `h2o.cbind` 仅接受 H2OFrame 对象 - R

tensorflow - 类似 MNIST 的问题。卷积神经网络

neural-network - Word2Vec 有隐藏层吗?

machine-learning - 从描述中查找初创公司的行业

machine-learning - weka 是否在交叉验证中平衡跨类的训练/测试集?

algorithm - Q 学习的收敛标准