Sztuczny neuron przetwarza informacje wejściowe xi na pewien sygnał wyjściowy y. Neurony traktować można jako elementarne procesory o następujących właściwościach:
każdy neuron otrzymuje wiele sygnałów wejściowych i wyznacza na ich podstawie jeden sygnał wyjściowy,
z każdym oddzielnym wejściem neuronu związany jest parametr nazywany wagą,
sygnał wchodzący określonym wejściem jest najpierw przemnażany przez wagę danego wejścia, w związku z czym w dalszych obliczeniach uczestniczy już w formie zmodyfikowanej,
sygnały wejściowe (przemnożone przez odpowiednie wagi) są w neuronie sumowane, dając pewien pomocniczy sygnał wewnętrzny nazywany czasem łącznym pobudzeniem neuronu (w literaturze angielskiej net value),
do tak utworzonej sumy sygnałów dodaje niekiedy (nie we wszystkich typach sieci) dodatkowy składnik niezależny od sygnałów wejściowych, nazywany progiem (w literaturze angielskiej bias),
suma przemnożonych przez wagi sygnałów wewnętrznych z dodanym (ewentualnie) progiem może być bezpośrednio traktowana jako sygnał wyjściowy neuronu ( w sieciach o bogatszych możliwościach sygnał wyjściowy neuronu obliczany jest za pomocą zależności nieliniowej między łącznym pobudzeniem a sygnałem wyjściowym).
Każdy neuron dysponuje pewną wewnętrzną pamięcią (reprezentowaną przez aktualne wartości wag i progu) oraz pewnymi możliwościami przetwarzania wejściowych sygnałów w sygnał wyjściowy.
Proces uczenia neuronu sprowadza się do modyfikowania współczynników wagowych neuronu w taki sposób, by neuron działał zgodnie z oczekiwaniami użytkownika. W przykładzie tym wykorzystaliśmy uczenie z nauczycielem.
Uczenie z nauczycielem polega na tym, że neuronowi podaje się przykłady poprawnego działania, które powinien on potem naśladować w swoim bieżącym działaniu. Przykład należy rozumieć w ten sposób, że nauczyciel podaje konkretne sygnały wejściowe i wyjściowe, pokazując, jaka jest wymagana odpowiedź sieci dla pewnej konfiguracji danych wejściowych. W typowym procesie uczenia sieć otrzymuje od nauczyciela ciąg uczący i na jego podstawie uczy się prawidłowego działania, stosując jedną z wielu znanych dziś strategii uczenia
Najbardziej znaną z reguł uczenia z nauczycielem jest reguła delta.
Polega ona na tym, że każdy neuron po otrzymaniu na swoich wejściach określone sygnały (z wejść sieci albo od innych neuronów, stanowiących wcześniejsze warstwy sieci) wyznacza swój sygnał wyjściowy wykorzystując posiadaną wiedzę w postaci wcześniej ustalonych wartości wag, wartości wejść oraz (ewentualnie) progu. Wartość sygnału wyjściowego, wyznaczonego przez neuron na danym kroku procesu uczenia porównywana jest z odpowiedzią wzorcową podaną przez nauczyciela w ciągu uczącym. Jeśli występuje rozbieżność - neuron wyznacza różnicę pomiędzy swoim sygnałem wyjściowym a tą wartością sygnału, która była by - według nauczyciela prawidłowa. Ta różnica oznaczana jest zwykle symbolem greckiej litery (delta) i stąd nazwa opisywanej metody.
Sygnał błędu (delta) wykorzystywany jest przez neuron do korygowania swoich współczynników wagowych (i ewentualnie progu), stosując następujące reguły:
wagi zmieniane są tym silniej, im większy błąd został wykryty,
wagi związane z tymi wejściami, na których występowały duże wartości sygnałów wejściowych, zmieniane są bardziej, niż wagi wejść, na których sygnał wejściowy był niewielki.
W naszym przykładzie o zakończeniu procesu uczenia decyduje użytkownik. Proces uczenia może zostać uznany za zakończony gdy wyliczane po każdym kroku uczenia błędy są małe - powodują one minimalne korekty wag.
Program wczytuje dane z pliku zawierającego ciąg uczący (dane wejściowe i wzorcowe odpowiedzi) klasyfikuje obiekty, których dane są w tym pliku kolejno zapisane.
Podczas symulowanego uczenia użytkownik może śledzić w kolejnych krokach postęp uczenia, obserwując, jak zmieniają się współczynniki wag i błąd.
struktury danych algorytmu:
wyjscie - sygnał wyjściowy, odpowiedź neuronu dla zadanego sygnału wejściowego
wagi - wektor wag neuronu, modyfikowany w trakcie uczenia neuronu,
sygnaly - sygnały wejściowe; sygnały wczytywane są z pliku zewnętrznego – ciągu uczącego,
blad - wartość błędu wyliczana po każdej iteracji uczenia,
prawidlowe - wzorcowa prawidłowa wartość wyjścia (wczytywana z ciągu uczącego),
wspolczynnik - wartość współczynnika uczenia, ustalana przez użytkownika
Neuron ma 5 wejść, początkowe wartości współczynników wagowych są otrzymywane za pomocą generatora liczb pseudolosowych.
wyliczanie sygnału wyjściowego:
wyjscie := 0;
for i := 1 to 5 do
wyjscie := wyjscie + wagi[i] * sygnaly[i];
błąd po każdym kroku:
blad := prawidlowe - wyjscie;
modyfikacja wag, na podstawie wyliczonego błędu:
for i := 1 to 5 do
wagi[i] := wagi[i] + wspolczynnik * blad * sygnaly[i];
Testowanie neuronu polega na podawanie na jego wejścia określonych przez użytkownika sygnałów. Neuron wylicza dla tych wartości wejść sygnał wyjściowy.
Moduł ten ilustruje uczenie neuronu o charakterystyce liniowej, o 5 wejściach.
Użytkownik ma w tym przykładzie do dyspozycji 2 ekrany, znajdujące się pod odpowiednimi zakładkami – ekran wczytywania ciągu uczącego oraz ekran nauki i testowania neuronu. Na pierwszym ekranie użytkownik określa jaki jest ciąg uczący użyty do uczenia sieci.
W tym celu może wykonać jedną z poniższych operacji:
może otworzyć (ikona koperty w górnej części ekranu) jeden z przygotowanych ciągów uczących
może wygenerować własny ciąg uczący (przycisk “Generuj” w górnej części ekranu)
Plik wczytany do edytora może być przez użytkownika dowolnie modyfikowany i zapisywany. Format pliku jest stały, następują w nim po sobie (wielokrotnie powtórzone):
linia komentarza (rozpoczynająca się średnikiem)
5 liczb będących sygnałami wejściowymi
sygnał wyjściowy
Po wczytaniu ciągu uczącego (i ewentualnym naniesieniu na nim poprawek) użytkownik ma możliwość użycia tego ciągu do uczenia i testowania sieci. W tym celu należy wybrać zakładkę “Uczenie i testowanie” w dolnej części ekranu.
Na oknie Uczenia i testowania użytkownik może uczyć neuron (jednorazowe użycie przycisku “Uczenie neuronu” jest równoznaczne z podaniem na wejście sieci jednego elementu wybranego ciągu uczącego “),
a również może w dowolnym momencie przeprowadzić test neuronu (określając poszczególne wejścia i naciskając przycisk “Testowanie neuronu” ).
Wtedy dla określonych przez użytkownika sygnałów wejściowych neuron wyliczy sygnał wyjściowy.
# C_M3
K uczenie pojedynczego neuronu
$ Uczenie pojedynczego neuronu