1

XOR не разрешается с использованием одного персептрона со стандартным скалярным продуктом и ступенчатой ​​функцией.Как запустить 2-слойный персептрон для решения XOR

В данной статье предлагается использовать 3 персептрон, чтобы сделать сеть: http://toritris.weebly.com/perceptron-5-xor-how--why-neurons-work-together.html

Я пытаюсь запустить 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) 
    } 
} 

Вышеуказанный персептрон может правильно решить NOT, AND, ИЛИ бит. Это, как я использую 3 персептроны решить XOR:

AND_perceptron = perceptron([ 
    {Input:[0,0],Output:0}, 
    {Input:[0,1],Output:0}, 
    {Input:[1,0],Output:0}, 
    {Input:[1,1],Output:1} 
]) 

OR_perceptron = perceptron([ 
    {Input:[0,0],Output:0}, 
    {Input:[0,1],Output:1}, 
    {Input:[1,0],Output:1}, 
    {Input:[1,1],Output:1} 
]) 

XOR_perceptron = perceptron([ 
    {Input:[0,0],Output:0}, 
    {Input:[0,1],Output:1}, 
    {Input:[1,0],Output:1}, 
    {Input:[1,1],Output:0} 
]) 

test_x1 = 0 
test_x2 = 1 

//first layer of perceptrons 
and_result = AND_perceptron.compute(test_x1,test_x2) 
or_result = OR_perceptron.compute(test_x1,test_x2) 

//second layer 
final_result = XOR_perceptron.compute(and_result,or_result) 

final_result выше не согласуется, иногда 0, иногда 1. Кажется, я бегу в 2 слоя неправильно. Как правильно запустить эти 3 персептрона в 2 слоя?

ответ

2

Если вы хотите построить нейронную сеть с логическими связками (и, или, не), вы должны рассмотреть следующие эквивалентности относительно исключающего:

A XOR B ≡ (A ∨ B) ∧ ¬ (A ∧ B) ≡ (A ∨ B) ∧ (¬A ∨ ¬b) ≡ (A ∧ ¬b) ∨ (¬A ∧ B)

Так что вам нужно, по крайней мере, три или и-либо -перцептроны и одно отрицание, если вы хотите использовать свои персептроны, если я их правильно понимаю. В статье они используют три восприятия со специальными весами для xor. Это не то же самое, что и орто-и-персептроны.

+0

tks, поэтому я могу использовать 2 персептрона, которые могут узнать И, ИЛИ, и сделать результат для XOR на основе этих 2 персептронов – johnlowvale

Смежные вопросы