algoryt

 

Algorytm wstecznej propagacji błędów

Jest to uczenie z nadzorem lub inaczej – z nauczycielem.

Pierwszą czynnością w procesie uczenia jest przygotowanie dwóch ciągów danych: uczącego i weryfikującego. Ciąg uczący jest to zbiór takich danych, które w miarę dokładnie charakteryzują dany problem. Jednorazowa porcja danych nazywana jest wektorem uczącym. W jego skład wchodzi wektor wejściowy czyli te dane wejściowe, które podawane są na wejścia sieci i wektor wyjściowy czyli takie dane oczekiwane, jakie sieć powinna wygenerować na swoich wyjściach. Po przetworzeniu wektora wejściowego, nauczyciel porównuje wartości otrzymane z wartościami oczekiwanymi i informuje sieć czy odpowiedź jest poprawna, a jeżeli nie, to jaki powstał błąd odpowiedzi. Błąd ten jest następnie propagowany do sieci ale w odwrotnej niż wektor wejściowy kolejności (od warstwy wyjściowej do wejściowej) i na jego podstawie następuje taka korekcja wag w każdym neuronie, aby ponowne przetworzenie tego samego wektora wejściowego spowodowało zmniejszenie błędu odpowiedzi. Procedurę taką powtarza się do momentu wygenerowania przez sieć błędu mniejszego niż założony. Wtedy na wejście sieci podaje się kolejny wektor wejściowy i powtarza te czynności. Po przetworzeniu całego ciągu uczącego (proces ten nazywany jest epoką) oblicza się błąd dla epoki i cały cykl powtarzany jest do momentu, aż błąd ten spadnie poniżej dopuszczalnego. Jak to już było zasygnalizowane wcześniej, SSN wykazują tolerancję na nieciągłości, przypadkowe zaburzenia lub wręcz niewielkie braki w zbiorze uczącym. Jest to wynikiem właśnie zdolności do uogólniania wiedzy.

 

Jeżeli mamy już nauczoną sieć, musimy zweryfikować jej działanie. W tym momencie ważne jest podanie na wejście sieci wzorców z poza zbioru treningowego w celu zbadania czy sieć może efektywnie generalizować zadanie, którego się nauczyła. Do tego używamy ciągu weryfikującego, który ma te same cechy co ciąg uczący tzn dane dokładnie charakteryzują problem i znamy dokładne odpowiedzi. Ważne jest jednak, aby dane te nie były używane uprzednio do uczenia. Dokonujemy zatem prezentacji ciągu weryfikującego z tą różnicą, że w tym procesie nie rzutujemy błędów wstecz a jedynie rejestrujemy ilość odpowiedzi poprawnych i na tej podstawie orzekamy, czy sieć spełnia nasze wymagania czyli jak została nauczona.

Wagi początkowe, z którymi sieć rozpoczyna naukę z reguły stanowią liczby wygenerowane przypadkowo. Po nauczeniu sieci zawsze warto dla sprawdzenia otrzymanych wyników powtórzyć całą procedurę od wygenerowania wag początkowych.

 

Dla dużych sieci i ciągów uczących składających się z wielu tysięcy wektorów uczących ilość obliczeń wykonywanych podczas całego cyklu uczenia jest gigantyczna a więc i czasochłonna. Nie zdarza się także aby sieć została dobrze zbudowana od razu. Zawsze jest ona efektem wielu prób i błędów. Ponadto nigdy nie mamy gwarancji, że nawet prawidłowa sieć nie utknie w minimum lokalnym podczas gdy interesuje nas znalezienie minimum globalnego. Dlatego algorytmy realizujące SSN wyposaża się mechanizmy dające nauczycielowi możliwość regulacji szybkości i jakości uczenia. Są to tzw współczynniki: uczenia i momentum. Wpływają one na stromość funkcji aktywacji i regulują szybkość wpływu zmiany wag na proces uczenia.

Jednak zawsze istotnym jest zoptymalizowanie algorytmu przetwarzającego lub posiadanie szybkiego komputera, a najlepiej jest mieć te obie rzeczy na raz.

 

 

Algorytmy genetyczne

 

Algorytmy genetyczne ( podobnie jak sieci neuronowe) stworzone zostały na wzór procesów zachodzących w świecie organizmów żywych. Naśladują one proces ewolucji w której następuje naturalna selekcja organizmów żywych.
Algorytmy genetyczne korzystają z określeń zapożyczonych z genetyki.

Klasyczny algorytm genetyczny

Na podstawowy (klasyczny) algorytm genetyczny składają się poszczególne kroki :
1)
inicjacja - wybór początkowej populacji chromosomów; jest to losowy wybór żądanej ilości chromosomów reprezentowanych przez ciągi binarne o określonej długości.
2)
Ocena przystosowania chromosomów - obliczenie dla każdego z chromosomów wartości funkcji przystosowania. Im większa jej wartość, tym lepsza jakość chromosomu. Postać funkcji przystosowania zależy od rodzaju rozwiązywanego problemu.
3) Sprawdzenie warunku zatrzymania - warunek ten zależy od konkretnego zastosowania algorytmu. W zagadnieniach optymalizacji, zatrzymanie algorytmu może nastąpić po uzyskaniu żądanej wartości optymalnej. Może zostać również zatrzymany jeśli dalsze jego działanie nie poprawia już uzyskanej najlepszej wartości.
4) Selekcja chromosomów - polega na wybraniu "najlepszych" chromosomów (w/g ich wartości funkcji przystosowania), które będą brały udział w tworzeniu potomków do następnego pokolenia.
5) Zastosowanie operatorów genetycznych - prowadzi do utworzenia nowej populacji z chromosomów wcześniej wybranych drogą selekcji. W klasycznym algorytmie genetycznym stosuje się dwa podstawowe operatory: krzyżowanie i mutacja   
6) Utworzenie nowej populacji - tworzą ją chromosomy uzyskane w wyniku zastosowania operatorów genetycznych. Nowa populacja staje się bieżącą dla danej iteracji algorytmu genetycznego.
7)
Wyprowadzenie najlepszego chromosomu - następuje wtedy, gdy spełniony jest warunek zatrzymania algorytmu. Najlepszy chromosom jest rozwiązaniem problemu, posiada on największą wartość funkcji przystosowania.

Schemat działania algorytmu genetycznego:

 

Algorytmy genetyczne do wspomagania sieci neuronowych

Przy wspomaganiu sieci neuronowych przez algorytmy genetyczne można wyróżnić  nastę­pujące kategorie zagadnień :

1)  zastosowanie algorytmu genetycznego do wyboru cech lub transfor­macji przestrzeni cech wykorzystywanych przez sieć neuronową do klasyfi­kacji,

2)  zastosowanie algorytmu genetycznego do wyboru reguły uczenia lub parametrów sterujących uczeniem w sieci neuronowej,

3)  zastosowanie algorytmu genetycznego do analizy sieci neuronowej.

Pierwsze dwie dziedziny zastosowań algorytmów genetycznych w sieciach neuronowych prowadzą, ogólnie mówiąc, do uzyskania lepszych (lepiej działających) sieci, podczas gdy trzecia z nich służy do wyjaśnienia działania lub analizy sieci.

Połączenie wspomagające algorytmu genetycznego z siecią neuronową

 Algorytmy genetyczne do uczenia sieci neuronowych

Zwykle problem polega na optymalizacji wag w sieci neuronowej z ustaloną wcześniej topologią. Wagi kodowane są w postaci ciągu binarnego (chromosomu). Każdy osobnik populacji jest określony przez całkowity zbiór wag sieci neuronowej. Ocena przystosowania osobników dokonywa­na jest na podstawie funkcji przystosowania zdefiniowanej jako suma kwadratów błędów, czyli różnic między zadaną (wzorcową) a otrzymaną warto­ścią na wyjściu sieci dla różnych danych wejściowych.

Dwa najważniejsze argumenty przemawiające za stosowaniem algorytmów genetycznych do problemów optymalizacji wag sieci neuronowej:

Przede wszystkim algorytmy genetyczne pozwalają na globalne prze­szukiwanie przestrzeni wag i unikanie minimów lokalnych. Poza tym mogą być wykorzystywane w problemach, w których informacja dotycząca gradientów jest trudna lub kosztowana do uzyskania.