神经网络:求解XOR

时间:2016-06-09 19:29:09

标签: machine-learning neural-network artificial-intelligence perceptron

有人可以给我一个数学正确的解释,为什么多层感知器可以解决XOR问题?

我对感知器的解释如下:

具有两个输入enter image description hereenter image description here的感知器具有以下线性函数,因此能够解决线性可分离问题,例如AND和OR。

enter image description here

enter image description here是基本步骤功能。

我想到的方法是,我将enter image description here中用+号分隔的两个部分替换为enter image description hereenter image description here,然后我得到enter image description here这是一个线。 通过应用步进函数,我得到关于输入的一个聚类。我将其解释为由该行分隔的空格之一。

因为MLP的功能仍然是线性的,我如何以数学的方式解释这一点,更重要的是:为什么它仍然是线性的时能够解决XOR问题?是因为它插入多项式?

3 个答案:

答案 0 :(得分:6)

尝试绘制两个变量 x 1 x 2 的XOR函数的样本空间。分离正( y = 1)和负示例( y = 0)的决策边界显然不是直线而是非线性决策边界如下:< / p>

enter image description here

因为,非线性决策边界的建模不能通过仅由输入和输出层组成的简单神经网络来完成。因此,需要隐藏层来模拟所需的非线性决策边界。另一方面,AND,OR,NOT等函数具有线性决策边界,因此可以通过简单的输入输出神经网络建模。

答案 1 :(得分:6)

您正在寻找数学解释,所以让我们首先看一下感知器的工作原理:

Simple perceptron with two-dim input

输入被加权并总结。如果它超过阈值θ,则返回1,否则返回0。 在XOR情况下, x1 x2 可以是1或0,而您正在搜索权重 w1 w2 以及阈值theta,以便在 x1 XOR x2 的情况下:

w1 * x1 + w2 * x2 &gt; = theta

OR

w1 * x1 + w2 * x2 - theta&gt; = 0

首先,您可以看到该函数是线性的。这意味着它定义了一条线。但是当您查看样本空间时,没有可以将正面与负面情况分开的线。

其次,你可以尝试一下。采取任意的θ,让我们说0.5。

案例1: x1 = 1, x2 = 0 =&gt; w1 需要&gt; 0.5

案例2: x1 = 0, x2 = 1 =&gt; w2 需要&gt; 0.5

案例3: x1 = 1, x2 = 1 =&gt; w1 + w2 需要&lt; 0.5 =&gt;由于前两个案例不可能

通常,使用感知器,您只能定义线性可分离的函数,即线,平面,超平面等。

但对于XOR案例,您需要两行:

enter image description here

对于每一行,您需要一个隐藏节点,然后将所有内容组合在一起,同时考虑到否定。

您可以在此处查看解决方案:

How to solve XOR problem with MLP neural network?

所以诀窍不是获得非线性,而是将XOR重写为:

x1 XOR x2 == NOT( x1 AND x2 )AND( x1 OR x2

答案 2 :(得分:3)

感知器真正做的是将输入空间(在XOR的情况下 - 实际平面)划分为由较低维度的仿射子空间分隔的两个部分(在XOR的情况下 - 一条线)并为不同的部分分配不同的类别。没有这样的线以这样的方式划分平面,即点(0,0),(1,1)与(1,0),(0,1)分开。

多层感知器还将输入空间分为两部分,但这种划分不仅限于仿射分离,因此可以将XOR类别分开。