用单层感知器解决XOR问题

时间:2015-05-23 12:02:39

标签: neural-network xor perceptron

我一直听说单层感知器(不使用隐藏层)无法解决XOR问题,因为它不是线性可分的。我知道没有可以分离类的线性函数。

然而,如果我们使用像sin()或cos()这样的非单调激活函数,情况仍然如此?我想这些类型的函数可能能够将它们分开。

2 个答案:

答案 0 :(得分:4)

不,不是没有" hacks"

当以图形方式说明xor问题时,我们需要隐藏层的原因是直观明显的。

enter image description here

您无法绘制单个正弦或余弦函数来分隔两种颜色。您需要一个额外的行(隐藏层),如下图所示:

enter image description here

答案 1 :(得分:4)

,具有非单调激活功能的单层神经网络可以解决XOR问题。更具体地,周期函数将不止一次地切割XY平面。即使是AbsGaussian激活功能也会将其削减两次。

自己尝试:W1 = W2 = 100,Wb = -100,激活= exp( - (Wx)^ 2)

  • exp( - (100 * 0 + 100 * 0 - 100 * 1)^ 2)=〜0
  • exp( - (100 * 0 + 100 * 1 - 100 * 1)^ 2)= 1
  • exp( - (100 * 1 + 100 * 0 - 100 * 1)^ 2)= 1
  • exp( - (100 * 1 + 100 * 1 - 100 * 1)^ 2)=〜0

或者使用abs激活:W1 = -1,W2 = 1,Wb = 0(是的,即使没有偏见也可以解决)

  • abs(-1 * 0 + 1 * 0)= 0
  • abs(-1 * 0 + 1 * 1)= 1
  • abs(-1 * 1 + 1 * 0)= 1
  • abs(-1 * 1 + 1 * 1)= 0

或者正弦:W1 = W2 = -PI / 2,Wb = -PI

  • sin(-PI / 2 * 0-PI / 2 * 0-PI * 1)= 0
  • sin(-PI / 2 * 0-PI / 2 * 1-PI * 1)= 1
  • sin(-PI / 2 * 1-PI / 2 * 0-PI * 1)= 1
  • sin(-PI / 2 * 1-PI / 2 * 1-PI * 1)= 0