我知道一个由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,但我们无法将其分开,不幸的是它们落在同一侧。
所以我们有两个选项来解决这个问题:
- 使用隐藏层。但这将增加神经元的数量,超过两个。
- 另一个选项是增加维度。
让我们通过一个例子来说明如何通过增加维度来解决这个问题,同时保持神经元数量为2。
我们可以把XOR看作是从OR中减去AND的操作,如下所示,
如果你注意到上图,第一个神经元将模拟逻辑AND,经过“v=(-1.5)+(x1*1)+(x2*1)”传递给某个激活函数后,输出将根据v是负数还是正数分别被视为0或1(我不会深入细节…希望你明白我的意思)。同样,第二个神经元将模拟逻辑OR。
因此,对于真值表的前三个情况,AND神经元将保持关闭状态。但对于最后一个情况(实际上是OR与XOR不同的地方),AND神经元将被开启,为OR神经元提供一个很大的负值,这将使总和变为负数,因为这个负值足够大以使总和成为负数。因此,第二个神经元的激活函数最终会将其解释为0。
通过这种方式,我们可以用2个神经元实现XOR。
以下两个图也是我收集到的对你问题解答的解决方案: