2个神经元的ANN能解决XOR问题吗?

我知道一个由2层3个神经元组成的ANN可以解决XOR问题

Input1----Neuron1\       \ /        \       / \         +------->Neuron3      /   \       /Input2----Neuron2/

但是为了简化这个ANN,仅用2个神经元(Neuron1接收2个输入,Neuron2仅接收1个输入)能解决XOR问题吗?

Input1      \       \ Neuron1------->Neuron2       / Input2/

人工神经元接收一个或多个输入… https://en.wikipedia.org/wiki/Artificial_neuron

偏置输入’1’在两个图中都被假定为始终存在。

旁注:

单个神经元可以解决XOR问题,但需要额外的输入x1*x2或x1+x2 https://www.quora.com/Why-cant-the-XOR-problem-be-solved-by-a-one-layer-perceptron/answer/Razvan-Popovici/log

第二张图中的ANN形式可以通过给Neuron1或Neuron2添加上述额外输入来解决XOR问题吗?


回答:

当然这是可能的。但在用两个神经元解决XOR问题之前,我想先讨论一下线性可分性。一个问题如果只需要一个超平面就能划分决策边界,那么它就是线性可分的。(超平面只是用来区分类别的平面。对于一个N维问题,即一个有N个特征作为输入的问题,超平面将是一个N-1维的平面。)因此,对于一个2输入的XOR问题,超平面将是一个一维平面,也就是一条“线”。

现在回到问题,XOR不是线性可分的。因此,我们不能直接用两个神经元解决XOR问题。下面的图片显示了无论我们在二维空间中如何画线,我们都无法区分一侧的输出与另一侧。例如,对于第一个(0,1)和(1,0)两个输入都会使XOR输出1。但是对于输入(1,1),输出是0,但我们无法将其分开,不幸的是它们落在同一侧。

enter image description here

所以我们有两个选项来解决这个问题:

  1. 使用隐藏层。但这将增加神经元的数量,超过两个。
  2. 另一个选项是增加维度

让我们通过一个例子来说明如何通过增加维度来解决这个问题,同时保持神经元数量为2。

我们可以把XOR看作是从OR中减去AND的操作,如下所示,

真值表

这里是图表

如果你注意到上图,第一个神经元将模拟逻辑AND,经过“v=(-1.5)+(x1*1)+(x2*1)”传递给某个激活函数后,输出将根据v是负数还是正数分别被视为0或1(我不会深入细节…希望你明白我的意思)。同样,第二个神经元将模拟逻辑OR。

因此,对于真值表的前三个情况,AND神经元将保持关闭状态。但对于最后一个情况(实际上是OR与XOR不同的地方),AND神经元将被开启,为OR神经元提供一个很大的负值,这将使总和变为负数,因为这个负值足够大以使总和成为负数。因此,第二个神经元的激活函数最终会将其解释为0。

通过这种方式,我们可以用2个神经元实现XOR。

以下两个图也是我收集到的对你问题解答的解决方案:

enter image description hereenter image description here

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注