Sfera sztucznych sieci neuronowych opiera się na formalnych definicjach modeli neuronu (następnie ich układów - sieci) oraz ich późniejszej implementacji w postacie sprzętowej – np. układy VLSI lub oprogramowania – wszelkiego rodzaju symulacje.
Pierwszą formalną definicję neuronu opartą na uproszczonym modelu rzeczywistym podali McCulloch i Pitts (1943). [5]
Sygnały wejściowe xi, i=1,2,...,n maja wartości 1 lub 0 w zależności od tego czy w danej chwili k impuls wejściowy pojawił się, czy też nie. Reguła aktywacji neuronu ma dla tego modelu postać:
gdzie k=0,1,2,... oznacza kolejne momenty czasu, wi zaś jest multiplikatywną wagą przypisaną połączeniu wejścia i z błoną neuronu.
Mimo swej prostoty, model ten wykazuje duże potencjalne możliwości . Przy odpowiednim doborze wag i progów można z jego pomocą zrealizować funkcje logiczne NOT, OR oraz AND bądź NOR lub NAND. Wprowadzając sprzężenie zwrotne można jednak budować także układy sekwencyjne. W przypadku sygnałów binarnych neuron z jednym wejściem pobudzającym i jednostkowym progiem wytwarza sygnał yk+1 = xk. Otrzymany prosty obwód zachowujący się jak jednobitowy rejestr jest zdolny zapamiętać stan wejścia pomiędzy dwoma momentami czasu. Zamykając pętlę sprzężenia zwrotnego powstaje komórka pamięci.
Ze względu na to, że model McCullocha-Pittsa zawiera szereg istotnych uproszczeń (obsługa jedynie stanów binarnych 0 i 1, założenie dyskretnego czasu pracy, synchronizm działania wszystkich neuronów w sieci, wagi i progi są niezmienne) wprowadza się ogólny opis sztucznego neuronu.
Ogólny model neuronu zakłada, że każdy neuron składa się z elementu przetwarzającego połączonego z wejściami synaptycznymi oraz jednym wyjściem. Przepływ sygnałów jest jednokierunkowy.
Sygnał wyjściowy neuronu dany jest zależnością:
gdzie w jest wektorem wag zdefiniowanym jako
x jest wektorem wejściowym:
Funkcja
określana jest zwykle nazwą funkcji aktywacji.
Jej dziedziną jest zbiór łącznych pobudzeń neuronu. W
literaturze często łączne pobudzenie określane jest symbolem net.
W związku z czym funkcję aktywacji można zapisać jako
Łączne pobudzenie net jest odpowiednikiem potencjału pobudzającego w neuronie biologicznym.
Typowymi funkcjami aktywacji, najczęściej stosowanymi przy konstruowaniu zarówno programowych jak i sprzętowych realizacji sztucznych sieci neuronowych są
oraz
Powyższe funkcje aktywacji zwane są odpowiednio bipolarną funkcją ciągłą i bipolarną funkcją binarną (dyskretną). Odpowiednio skalując powyższe funkcje możemy otrzymać odpowiednio unipolarną funkcję ciągłą oraz unipolarną funkcję binarną dane wzorami:
oraz
Pierwsze z tych funkcji nazywane są funkcjami sigmoidalnymi.
Istotnymi z punktu widzenia projektowego parametrami opisującymi neuron są moc śladu pamięciowego (wektor wag), moc sygnału wejściowego.
W naszym programie zaprezentujemy model sztucznego neuronu umożliwiające zmianę wartości wektora wag oraz sygnału wejściowego. Oraz automatyczne obliczenie mocy sygnału wejściowego, mocy śladu pamięciowego jak i łącznego pobudzenia neuronu. Pokazane też zostaną wartości dwóch funkcje aktywacji: ciągłej sigmoidalnej oraz bipolarnej dla wyznaczonego łącznego pobudzenia neuronu.
Poniżej przedstawiamy algorytmy obliczające wyjście neuronu (dwie funkcje) przy zadanych wagach oraz sygnale wejściowym oraz parametry: moc śladu pamięciowego i moc sygnału wejściowego oraz łączne pobudzenie.
struktury danych algorytmu:
sygnały [5] - wektor sygnałów wejściowych (5 sygnałów wejściowych),
wagi [5] - wektor wag dla wejść (5 wartości wektora wag),
moc_sladu - moc śladu pamięciowego,
moc_sygnalu - moc sygnału wejściowego,
net - łączne pobudzenie neuronu obliczone z zadanych wektorów wag oraz sygnału wejściowego,
lambda - parametr ciągłej sigmoidalnej funkcji aktywacji neuronu,
c_funkcja -
wartość ciągłej funkcji aktywacji
dla
obliczonego łącznego pobudzenia neuronu,
d_funkcja -
wartość dyskretnej, unipolarnej funkcji aktywacji
dla
obliczonego łącznego pobudzenia neuronu,
moc sygnału wejściowego:
moc_sygnalu := 0;
for i := 1 to 5 do
moc_sygnalu := moc_sygnalu + sygnaly[i] * sygnaly[i];
moc śladu pamięciowego:
moc_sladu := 0;
for i := 1 to 5 do
moc_sladu := moc_sladu + wagi[i] * wagi[i];
łączne pobudzenie neuronu:
net := 0;
for i := 1 to 5 do
net := net + wagi[i] * sygnaly[i];
ciągła funkcja aktywacji:
c_funkcja := -1.0 + 2.0/(1+exp(-lambda*net));
dyskretne, unipolarna funkcja aktywacji:
d_funkcja := -1.0;
if net >= 0 then
d_funkcja := 1.0;
Jak widać z przedstawionego algorytmu neuron w przykładzie jest jedne (jeden zestaw wejść i wag) ale posiada, dla potrzeb prezentacji, trzy rodzaje odpowiedzi: Łączne pobudzenie, Ciągłą funkcję aktywacji oraz Binarną funkcję aktywacji przez co reprezentuje dwa rodzaje neuronów: zarówno liniowe jak i nieliniowe.
Przykład zaimplementowany w module pierwszym pozwala zrozumieć procesy które zachodzą w sztucznym neuronie. Taki neuron charakteryzuje się następującymi cechami:
wektorem wag – w programie jest udostępniony do modyfikacji przez użytkownika pięcioelementowy zbiór pól edycyjnych zgrupowanych w sekcję Wagi neuronu widoczną na poniższym rysunku:
wektor sygnałów wejściowych – jest to zestaw sygnałów jakie będą podawane na wejście neuronu w przykładzie zestaw ów zgrupowany jest w sekcję Sygnały wejściowe – udostępnione są tam pola do zadawania wartości – obszar jest widoczny na poniższym rysunku:
parametry pracy neuronu – zestaw danych informujący w jaki sposób neuron przetworzył wektor sygnałów wejściowych przez wektor wag aż do wyliczenia odpowiedzi jako wartości funkcji aktywacji. Neuron posiada możliwość (modelowo) odpowiedzi w wartościach dwóch funkcji aktywacyjnych: ciągłej funkcji sigmoidalnej oraz dyskretnej, unipolarnej funkcji binarnej. Dla funkcji sigmoidalnej użytkownik może określić parametr przez wprowadzenie odpowiedniej wartości w pole Lambda. Wyliczane przez program wartości: moc sygnału wejściowego, moc śladu pamięciowego (wagi neuronu), łączne pobudzenie, wartości ciągłej funkcji aktywacji, wartość binarnej funkcji aktywacji są zgrupowane w sekcję Parametry pracy neuronu. Opisane informacje można zobaczyć na załączonych poniżej rysunkach:
Wszystkie powyższe sekcje są umieszczone na oknie stworzonym do prezentacji oraz symulacji działania pojedynczego, sztucznego neuronu który w swej definicji prezentacyjnej posiada odpowiedzi właściwe zarówno dla neuronów liniowych (Łączne pobudzenie) jak i neuronów z nieliniową funkcją aktywacji (Ciągła funkcja aktywacji, Binarna funkcja aktywacji). Czyli użytkownik może zaobserwować działanie jakby trzech różnych neuronów, które mając takie same wejście oraz wagi ale różne elementy odpowiadające za “jakość” pracy, odpowiedzi.
Ekran zawierający główne okno modułu Prezentacja pojedynczego neuronu załączony został na poniższym rysunku:
Na powyższym oknie są umieszczone dwa przyciski operacyjne: Przelicz oraz Zeruj. Po wprowadzeniu wartości w sekcjach Sygnały wejściowe, Wagi neuronu oraz Lambda należy użyć przycisku Przelicz w celu obliczenia odpowiedzi neuronu zgrupowanej w sekcji Parametry pracy neuronu. Zadaniem przycisku Zeruj jest ustawienie prezentacji w jej stanie początkowym.
# C_M1
K pojedynczy neuron
$ Prezentacja pojedynczego neuronu