如何运行2层感知器来解决XOR问题

时间:2016-10-06 22:59:19

标签: neural-network artificial-intelligence layer xor perceptron

使用具有标准标量积和单位阶跃函数的单个感知器无法解决XOR。

本文建议使用3感知器来制作网络: http://toritris.weebly.com/perceptron-5-xor-how--why-neurons-work-together.html

我尝试以这种方式运行3-perceptron网络,但它并没有为XOR产生正确的结果:

display: none;

上述感知器可以正确解决NOT,AND,OR位操作。这就是我使用3个感知器解决XOR的方法:

//pseudocode
class perceptron {

  constructor(training_data) {
    this.training_data = training_data   
  }

  train() {
    iterate multiple times over training data
    to train weights
  }

  unit_step(value) {
    if (value<0) return 0
    else return 1
  }

  compute(input) {
    weights = this.train()
    sum     = scalar_product(input,weights)
    return unit_step(sum)
  }
}

上面的final_result不一致,有时为0,有时为1.看来我错误地运行了2层。如何以正确的方式在2层中运行这3个感知器?

1 个答案:

答案 0 :(得分:2)

如果你想构建一个带有逻辑连接词(和,或者不是)的神经网络,你必须考虑以下关于xor的等价:

  

A xorB≡(A∨B)∧¬(A∧B)≡(A∨B)∧(¬A∨¬B)≡(A∧¬B)∨(¬A∧B)

因此,如果你想要使用你的感知器,如果我正确理解它们,你至少需要三个和/或感知器和一个否定。在文章中,他们使用三个具有特殊权重的感知器来表示xor。这些与and-和or-perceptrons不同。