Sieć neuronowa XOR

0

Mam daną sieć:
title
i układ realizujący XOR:
x1 x2 y
1 1 -1
-1 1 1
1 -1 1
-1 -1 -1

chciałbym udowodnić, że dla danych x1 i x2 podstawionych do sieci wyjdzie mi y.
Próbowałem w ten sposób:
Oznaczam h1 i h2
title

h1 = σ(1*x1 + 1*x2 + 0,5)
h2 = σ(1*x1 + 1*x2 - 2*h1 + 0,5)

co dla x1=1, x2=1 daje:

h1 = σ(1*1 + 1*1 + 0,5) = σ(2,5) ≈ 1
h2 = σ(1*1 + 1*1 - 2*1 + 0,5) = σ(0,5) ≈ -1

co się zgadza z y z tabeli. Czy to jest dobrze zrobione?
Dodatkowo przyjąłem, że jeżeli funkcja sigma > 1, to daję 1, a przeciwnym wypadku -1. Czy to jest poprawne?

0

Jakoś to dziwnie Robisz, jak Chcesz bramki z sieci neuronowej to Weź sobie perceptron, którego wyjście:
out = 0 if w*x + b <=0 lub
out = 1 if w*x + b > 0
Bramkę NAND można skonstruować (obrazek w załączniku), wagi -2, bias 3. Teraz używając NAND Logic, Możesz już konstruować inne, w tym XOR, dodawanie, etc...
Co do ostatniego pytania, to chyba wszystko jedno, w perceptronie jest 0 jeśli mniejsze lub równe 0, 1 jeśli większe od 0.

0

Czyli uważasz, że korzystając tylko z mojego rysunku nie da się udowodnić, że to działa? Podobno miały to być tylko 4 proste działania...

0

poczytaj to: http://neuralnetworksanddeeplearning.com/chap1.html
sporo tego jest jak na single page, ale temat jest dobrze opracowany

0

Bardzo fajna lektura, naprawdę.
Czyli mój perceptron h1 dobrze liczyłem:

1*x1 + 1*x2 + 0,5

moim biasem jest 0,5
dla wejścia 11 to będzie

1*1 + 1*1 + 0,5 = 2,5

ponieważ 2,5 > 0, to output=1

dla perceptronu h2:

1*1 + 1*1 - 2*1 + 0,5 = 0,5

Ponieważ 0,5 > 0, to output = 1
Tyle że wg tabeli XOR powinno dać -1

Później jest napisane, że perceptron może przyjmować inputy tylko {0,1}. Skoro u mnie inputami są liczby {-1,1}, więc w takim razie to nie perceptron, a neuron sigmoidalny?

0
Czarny Polityk napisał(a):

Bardzo fajna lektura, naprawdę.
Czyli mój perceptron h1 dobrze liczyłem:

1*x1 + 1*x2 + 0,5

moim biasem jest 0,5
dla wejścia 11 to będzie

1*1 + 1*1 + 0,5 = 2,5

ponieważ 2,5 > 0, to output=1

dla perceptronu h2:

1*1 + 1*1 - 2*1 + 0,5 = 0,5

Ponieważ 0,5 > 0, to output = 1
Tyle że wg tabeli XOR powinno dać -1

Później jest napisane, że perceptron może przyjmować inputy tylko {0,1}. Skoro u mnie inputami są liczby {-1,1}, więc w takim razie to nie perceptron, a neuron sigmoidalny?

Nie, to zalezy od funkcji aktywujacej I wyjscia, perception ma wyjscie 0 , 1, a sigmoid ciagle, przedzial.

0

W takim razie jak udowodnić, że ta sieć jest prawidłowa i realizuje XOR?

0

Twoja siec, przekonuje Sam siebie:), ze jak dla wszystkich kombinacji wejsc 0, 1, zawsze daje poprawny XOR, to jest OK.

0

Chciałbym, żeby to była moja sieć :) To zadanie do wykonania - udowodnić.
Tylko piszesz o 0,1 a ja mam -1,1. To coś zmienia w kontekście sieci i jej udowodnienia?

0

W sumie nie powinno, ale bity zawsze zapodaje sie jako 0, 1.

0

Jeśli wejściami mogą być -1 i 1, to wyjściem też -1 lub 1 tylko?
Czy moje h1 jest źle obliczone (z postu o 8:34)?

0

Tutaj OP.
Aby doprecyzować skąd wzięły się moje h1 i h2 z pierwszego posta, posiłkowałem się tym:

1 użytkowników online, w tym zalogowanych: 0, gości: 1