Sieci neuronowe #1 - Tworzenie bramek logicznych używając neuronu McCulloch-Pittsa

in #pl-artykuly7 years ago (edited)

Wstęp

W tym artykule chciałbym przedstawić wam, jak za pomocą neuronu McCulloch-Pittsa, stworzyć popularne bramki logiczne takie jak NOT (negacja), AND (oraz), NAND (negacja oraz) i OR (lub).

Na czym polega działanie neuronu McCulloch-Pittsa?

Używając prostych słów - neuron M-P (pewna funkcja) bierze argumenty liczbowe, dodaje jeden dodatkowy argument, a następnie wstawia dla każdego argumentu odpowiednią wagę. Po wymnożeniu każdego argumentu z przydzieloną wagą, wyniki zostają ze sobą sumowane, a na końcu funkcja decydująca(aktywacji) sprawdza wartość sumy. Jeżeli suma większa od zera, to zwróć 1, a w przeciwnym wypadku zwróć zero.

Powyższy opis można opisać tak
neuron.jpg

W powyższym opisie widać, że zawsze gdy mamy n argumentów, to zawsze jest ten dodatkowy argument, który jest równy 1.

Jak wykorzystać neuron do utworzenia bramek?

Na przykładzie bramki not, która została pokazana na zdjęciu, możemy wywnioskować, że jeżeli wstawimy jako pierwszy argument pewną liczbę 1 lub zero, to mamy uzyskać jej odwrotność. Dlatego też jeżeli pomnożymy 1 przez jakąś liczbę ujemną, to dorzucimy do sumy liczbę ujemną. Następnie algorytm przedzie do drugiego argumentu, który jest równy 1 i pomnoży go o jakąś wartość dodatnią. jeżeli chcemy na wejściu mieć 1 a na wyjściu zero, to suma mnożeń musi wyjść mniejsza od zera. Mnożąc argument 1 z wagą -0.5 otrzymamy sumę -0.5, mnożąc drugi argument 1 z wagą 0.3 otrzymamy -0.5 + 0.3 = -0.2 Suma jest ujemna, więc wynik otrzymamy ujemny czyli funkcja decydująca zwróci 0. Natomiast gdy chcemy zanegować argument 0 i pomnożymy przez -0.5, to suma wciąż jest 0. Po wymnożeniu drugiego argumentu i jego wagi, suma wynosi 0.3. Funkcja decydująca zwróci liczbę 1. Jak widać, po odpowiednim wybraniu wag, nasz neuron jest w stanie zdecydować, jaka wartość jest ostateczna.
Na takiej zasadzie możemy tworzyć inne bramki logiczne. Z tego co wiem, to nie można tym sposobem stworzyć bramki logicznej XOR.

Jak zaimplementować ten algorytm używając języka programowania?


Przedstawię wam teraz implementację w języku javascript jak stworzyć różne bramki manipulując wagami w naszym neuronie.
Algorytm wygląda następująco

algorytm.PNG

Natomiast wywołanie tego algorymu wygląda tak

bramki.PNG

Przykład został wystawiony na tej stronie. Aby podejrzeć co zwraca konsola kliknij F12 na klawiaturze i wejdź po prawej stronie do zakładki console.
Aby zobaczyć kod na gihubie, kliknij tutaj

Więcej informacji uzyskasz na wikipedii

Sort:  

Dlaczego nie można XOR? Ano dlatego:

Czyli w skrócie - na jednym neuronie jest nierozwiązywalny.

I just upvoted You! (Reply "STOP" to stop automatic upvotes)

Coin Marketplace

STEEM 0.19
TRX 0.15
JST 0.029
BTC 63098.06
ETH 2563.30
USDT 1.00
SBD 2.83