Możliwe są dwa warianty procesu (strategii) uczenia sieci neuronowej: z nauczycielem i bez nauczyciela.
Uczenie z nauczycielem polega na tym, że sieci podaje się przykłady poprawnego działania które powinna ona potem naśladować w swoim bieżącym działaniu (w czasie egzaminu). Przykład należy rozumieć jako konkretnych sygnałów wejściowych i odpowiadających im sygnałów wyjściowe. W typowym procesie uczenia sieć otrzymuje od nauczyciela ciąg uczący i na jego podstawie uczy się prawidłowego działania.
Obok opisanego wyżej schematu uczenia z nauczycielem występuje też szereg metod tak zwanego uczenia bez nauczyciela (albo samouczenia sieci). Metody te polegają na podawaniu na wejście sieci wyłącznie szeregu przykładowych danych wejściowych, bez podawania informacji dotyczącej oczekiwanych sygnałów wyjściowych. Odpowiednio zaprojektowana sieć potrafi zinterpretować sygnały wejsciowe i zbudować na ich podstawie sensowny algorytm swojego działania - najczęściej polegający na tym, że automatycznie wykrywane są klasy powtarzających się sygnałów wejściowych i sieć uczy się (spontanicznie, bez jawnego nauczania) rozpoznawać te typowe wzorce sygnałów.
Uczenie może odbywać się zgodnie z jedną z wielu reguł uczenia. Do najbardziej znanych należą:
W tej regule przyrost wag łączących węzeł [i] i węzeł [j] jest proporcjonalny do współczynnika uczenia, do wartości aktywacji wyjścia yj z neuronu [j] oraz agregacji wejść do neuronu [i], tj. xi.
Reguły należy do reguł uczenia bez nadzoru.
Jest to reguła uczenia z nauczycielem. Można zapisać ja w postaci:
Inne znane reguły uczenia to reguła LMS oraz reguła Widrow-Hoffa.
Przygotowany przez nas 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 .
Sieć składa się z 3 neuronów, z których każdy ma 5 wejść, początkowe wartości współczynników wagowych są otrzymywane za pomocą generatora liczb pseudolosowych.
struktury danych algorytmu:
wyjscie - wektor sygnałów wyjściowych,
wagi - tablica zawierająca wagi wszystkich neuronów,
sygnaly - wektor sygnałów wejściowych; sygnały wczytywane są z pliku zewnętrznego – ciągu uczącego,
blad - wektor wartość błędu wyjść sieci wyliczany po każdej iteracji uczenia,
prawidlowe - wzorcowa prawidłowa wartość wyjścia j (wczytywana z ciągu uczącego),
wspolczynnik - wartość współczynnika uczenia, ustalana przez użytkownika.
wyliczenie sygnałów wyjściowych:
for j := 1 to 3 do begin
wyjscie[j] := 0;
for i := 1 to 5 do
wyjscie[j] := wyjscie[j] + wagi[j, i] * sygnaly[i];
blad[j] := prawidlowe[j] - wyjscie[j];
end;
błąd po każdym kroku:
blad[j] := prawidlowe[j] – wyjscie[j];
modyfikacja wag, na podstawie wyliczonego błędu:
for i := 1 to 5 do
wagi[j, i] := wagi[j, i] + wspolczynnik * blad[j] * sygnaly[i];
Testowanie odbywa się poprzez podanie na wejścia sieci określonych przez użytkownika sygnałów.
Przykład ten obrazuje proces uczenia prostej liniowej sieci neuronowej.
Zaprojektowaliśmy dla tego przykładu ciąg zawarty w pliku uczący_s.ctg. Struktura sieci jest stała i użytkownik nie może jej zmieniać. Ciąg uczący ma następującą strukturę:
;komentarz
zestaw sygnałów wejściowych
wzorcowy zestaw sygnałów wyjściowych
W zestawie sygnałów wejściowych podawane będą pięcioelementowe wektory (porcje po pięć sygnałów dla pięciu wejść rozważanego neuronu), zaś wzorcowych sygnałów jest 3.
Podobnie jak w poprzednim przykładzie użytkownik programu pracuje na dwóch oknach – na pierwszym wczytuje i modyfikuje ciąg uczący, na drugim uczy i testuje działanie sieci.
Konstrukcja tego przykładu jest bardzo zbliżona do przykładu poprzedniego. Na pierwszym ekranie użytkownik pracuje z ciągiem uczącym (podobnie jak w poprzednim przykładzie może go wczytać z pliku bądź wygenerować i zmodyfikować). Po zakończeniu pracy z ciągiem uczącym użytkownik przechodzi do etapu uczenia i testowania.
Na oknie uczenia i testowania użytkownik może uczyć sieć (jednorazowe użycie przycisku “Uczenie sieci” jest równoznaczne z podaniem na wejście sieci jednego elementu ciągu uczącego), a również może w dowolnym momencie przeprowadzić test sieci (określając poszczególne wejścia i naciskając przycisk “Testowanie sieci” ).
Test sieci polega na tym, że dla określonych przez użytkownika wejść sieci sieć wylicza wszystkie sygnały wyjściowe.
# C_M4
K uczenie sieci neuronowej (prostej)
$ Uczenie prostej sieci