请问有人能给我一个数学上正确的解释,说明为什么多层感知器可以解决XOR问题吗?
我对感知器的理解如下:
具有两个输入的感知器和
具有以下线性函数,因此能够解决线性可分的问题,如AND和OR。
我的理解是,我将中由加号分隔的两部分替换为
和
,得到
,这是一条线。通过应用阶跃函数,我得到相对于输入的一个聚类。我将其解释为由那条线分隔的空间之一。
因为多层感知器的函数仍然是线性的,我该如何从数学上解释这一点,更重要的是:为什么它能够解决XOR问题,尽管它仍然是线性的?这是因为它在插值多项式吗?
回答:
你正在寻找一个数学上的解释,所以我们首先来看一下感知器是如何工作的:
输入被加权并求和。如果它超过阈值theta,则返回1,否则返回0。在XOR的情况下,x1和x2可以是1或0,你正在寻找权重w1和w2以及阈值theta,使得在x1 XOR x2的情况下:
w1*x1 + w2*x2 >= theta
或者
w1*x1 + w2*x2 – theta >= 0
首先,你可以看到这个函数是线性的。这意味着它定义了一条线。但当你查看样本空间时,没有一条线可以将正例和负例分开。
其次,你可以尝试一下。假设一个任意的theta,比如0.5。
情况1:x1 = 1,x2 = 0 => w1需要大于0.5
情况2:x1 = 0,x2 = 1 => w2需要大于0.5
情况3:x1 = 1,x2 = 1 => w1+w2需要小于0.5 => 由于前两个情况,这是不可能的
一般来说,使用感知器你只能定义线性可分的函数,即线、平面、超平面等。
但对于XOR情况,你需要两条线:
对于每条线,你需要一个隐藏节点,然后在考虑到否定操作的情况下将它们组合在一起。
你可以在这里看到一个解决方案:
所以诀窍不在于获得非线性,而是将XOR重写成类似于以下形式:
x1 XOR x2 == NOT (x1 AND x2) AND (x1 OR x2)