神经网络:解决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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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