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

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

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