神经网络:解决 XOR
Neural Network: Solving XOR
谁能给我一个正确的数学解释,为什么多层感知器可以解决 XOR 问题?
我对感知机的解读如下:
具有两个输入的感知器 and 具有以下线性函数,因此能够解决线性可分离问题,例如 AND 和 OR。
是基本的步进函数。
我的想法是将 separated by the + sign as and and I get 中的两部分替换为一行。
通过应用阶跃函数,我得到了与输入有关的集群之一。我将其解释为由该行分隔的空格之一。
因为 MLP 的函数仍然是线性的,我该如何用数学的方式来解释这一点,更重要的是:为什么它在仍然是线性的情况下能够解决 XOR 问题?是不是插多项式的缘故?
感知器真正做的是将输入 space(在 XOR 的情况下 - 实平面)分成两部分,由较低维度的仿射子 space 分开(在 XOR 的情况下) - 一行)并将不同的 类 分配给不同的部分。不存在以点 (0,0)、(1,1) 与 (1,0)、(0,1) 分开的方式划分平面的直线。
多层感知器也将输入 space 分成两部分,但这种划分不仅限于仿射分离,因此可以分离 XOR 类.
尝试绘制两个变量 x1 和 x 的 XOR 函数的样本 space 2。分隔正例(y=1)和负例(y=0)的决策边界显然不是一条直线而是一条non-linear 决策边界如下:
因为,无法通过仅由输入层和输出层组成的简单神经网络对 non-linear 决策边界进行建模。因此,需要一个隐藏层来对所需的 non-linear 决策边界进行建模。另一方面,像 AND、OR、NOT 这样的函数没有线性决策边界,因此可以通过简单的 input-output 神经网络建模。
您正在寻找数学解释,那么让我们先了解一下感知器的工作原理:
输入被加权并相加。如果超过阈值 theta,则返回 1,否则返回 0。
在异或情况下 x1 和 x2 可以是 1 或 0 并且您正在搜索权重 w1和 w2 以及阈值 theta 这样在 x1 XOR x2:[=13 的情况下=]
w1*x1 + w2*x2 >= θ
或
w1*x1 + w2*x2 - θ >= 0
首先,你可以看到函数是线性的。这意味着它定义了一条线。但是当你查看样本 space 时,没有一条线可以将正例与负例分开。
其次,你可以试试看。取一个任意的 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 的情况你需要两行:
对于每一行,您需要一个隐藏节点,然后将它们组合在一起,同时考虑否定。
您可以在此处查看解决方案:
How to solve XOR problem with MLP neural network?
所以诀窍不是得到 non-linear 而是将 XOR 重写成类似这样的东西:
x1 XOR x2 == NOT (x1 AND x2 ) 和 (x1 或 x2)
谁能给我一个正确的数学解释,为什么多层感知器可以解决 XOR 问题?
我对感知机的解读如下:
具有两个输入的感知器
我的想法是将
因为 MLP 的函数仍然是线性的,我该如何用数学的方式来解释这一点,更重要的是:为什么它在仍然是线性的情况下能够解决 XOR 问题?是不是插多项式的缘故?
感知器真正做的是将输入 space(在 XOR 的情况下 - 实平面)分成两部分,由较低维度的仿射子 space 分开(在 XOR 的情况下) - 一行)并将不同的 类 分配给不同的部分。不存在以点 (0,0)、(1,1) 与 (1,0)、(0,1) 分开的方式划分平面的直线。
多层感知器也将输入 space 分成两部分,但这种划分不仅限于仿射分离,因此可以分离 XOR 类.
尝试绘制两个变量 x1 和 x 的 XOR 函数的样本 space 2。分隔正例(y=1)和负例(y=0)的决策边界显然不是一条直线而是一条non-linear 决策边界如下:
因为,无法通过仅由输入层和输出层组成的简单神经网络对 non-linear 决策边界进行建模。因此,需要一个隐藏层来对所需的 non-linear 决策边界进行建模。另一方面,像 AND、OR、NOT 这样的函数没有线性决策边界,因此可以通过简单的 input-output 神经网络建模。
您正在寻找数学解释,那么让我们先了解一下感知器的工作原理:
输入被加权并相加。如果超过阈值 theta,则返回 1,否则返回 0。 在异或情况下 x1 和 x2 可以是 1 或 0 并且您正在搜索权重 w1和 w2 以及阈值 theta 这样在 x1 XOR x2:[=13 的情况下=]
w1*x1 + w2*x2 >= θ
或
w1*x1 + w2*x2 - θ >= 0
首先,你可以看到函数是线性的。这意味着它定义了一条线。但是当你查看样本 space 时,没有一条线可以将正例与负例分开。
其次,你可以试试看。取一个任意的 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 的情况你需要两行:
对于每一行,您需要一个隐藏节点,然后将它们组合在一起,同时考虑否定。
您可以在此处查看解决方案:
How to solve XOR problem with MLP neural network?
所以诀窍不是得到 non-linear 而是将 XOR 重写成类似这样的东西:
x1 XOR x2 == NOT (x1 AND x2 ) 和 (x1 或 x2)