神经网络:解决XOR问题

请问有人能给我一个数学上正确的解释,说明为什么多层感知器可以解决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,这是一条线。通过应用阶跃函数,我得到相对于输入的一个聚类。我将其解释为由那条线分隔的空间之一。

因为多层感知器的函数仍然是线性的,我该如何从数学上解释这一点,更重要的是:为什么它能够解决XOR问题,尽管它仍然是线性的?这是因为它在插值多项式吗?


回答:

你正在寻找一个数学上的解释,所以我们首先来看一下感知器是如何工作的:

Simple perceptron with two-dim input

输入被加权并求和。如果它超过阈值theta,则返回1,否则返回0。在XOR的情况下,x1x2可以是1或0,你正在寻找权重w1w2以及阈值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情况,你需要两条线:

enter image description here

对于每条线,你需要一个隐藏节点,然后在考虑到否定操作的情况下将它们组合在一起。

你可以在这里看到一个解决方案:

如何用MLP神经网络解决XOR问题?

所以诀窍不在于获得非线性,而是将XOR重写成类似于以下形式:

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

Related Posts

L1-L2正则化的不同系数

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

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

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

f1_score metric in lightgbm

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

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

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

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

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

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

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

发表回复

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