Sieci neuronowe
Inspiracje biologiczne
Sieci neuronowe można traktować jako nowoczesne systemy obliczeniowe, które przetwarzają informacje wzorując się na zjawiskach zachodzących w mózgu człowieka. Sieci neuronowe wykorzystują cechy biologicznych systemów nerwowych, które mogą być użyteczne technicznie. Główną rolę w tym zagadnieniu odgrywa pojedyncza komórka nerwowa - neuron - zbudowana z synapsy, aksonu i dendrytów.
Każdy z neuronów jest specjalizowaną komórką biologiczną, mogącą przenosić i przetwarzać złożone sygnały elektrochemiczne. Neuron posiada wejścia informacyjne - dendryty, ciało scalające sygnały ze wszystkich tych wejść oraz akson - nośnik informacji wyjściowej. Akson jednej komórki łączy się z dendrytami poprzez biochemiczne złącza - synapsy, modyfikujące sygnały i stanowiące nośnik pamięci. Synapsy są bardzo skomplikowane; w sztucznych sieciach neuronowych sprowadzane są one do operatorów przemnażania wejściowych sygnałów przez współczynniki ustalane w toku uczenia. Gdy wskutek połączonego oddziaływania nadchodzących impulsów, które dotarły do neuronu przez dendryty, osiągnięty zostanie odpowiedni poziom pobudzenia (próg), ciało komórkowe wyzwala swój ładunek elektryczny (ulega depolaryzacji) i przesyła go wzdłuż aksonu do innych komórek nerwowych i dendrytów. Przekazywanie impulsów nerwowych przez synapsę odbywa się za pośrednictwem chemicznych przekaźników - biogenicznych aminów utworzonych z aminokwasów. Synapsy przekazują sygnały do neuronu, których część ma wpływ wzmacniający, a część hamujący. Neuron sumuje impulsy pobudzające i hamujące i jeżeli ich suma przekracza pewną wartość progową, to akson neuronu przekazuje odpowiedni sygnał na wyjściu neuronu.
Model neuronu
Sieć neuronowa (a właściwie sztuczna sieć neuronowa) to uproszczony model niektórych obszarów ludzkiego mózgu składający się z komórek nerwowych zwanych neuronami. Sztuczne neurony nie są dokładnymi kopiami oryginalnych neuronów, są raczej ich bardzo uproszczonymi odpowiednikami matematycznymi, mającymi podobne właściwości i działającymi w zbliżony sposób jak ich pierwowzory. Neuron w SSN charakteryzuje się występowaniem wielu wejść i jednego wyjścia. W modelu sztucznego neuronu, każdemu połączeniu, między neuronami przypisuje się odpowiednią wagę (siłę powiązania między neuronami). Waga (odpowiednik efektywności synapsy w neuronie biologicznym) to pewna stała, przez którą przemnożony jest każdy sygnał przechodzący między dwoma konkretnymi neuronami, dzięki czemu, impulsy od jednych neuronów są ważniejsze od innych. Mocne powiązanie ma większą wagę niż słabe. Waga może mieć charakter pobudzający (dodatnia waga) lub hamujący (ujemna waga). Jeżeli nie ma połączenia między neuronami to waga jest równa zero. W ten sposób „sztuczny mózg” odrzuca nieistotne informacje wejściowe, nadając im wagi bliskie zeru.
W praktyce każdy neuron pobiera sygnały od wszystkich połączonych ze sobą neuronów, każdy przemnaża przez odpowiednią wagę, otrzymane wartości sumuje i to łączne pobudzenie neuronu jest z kolei przekształcane przez ustaloną funkcję aktywacji neuronu (zwaną też funkcją przejścia neuronu) - Rys. 1. Wartość obliczona przez funkcję aktywacji jest ostatecznie wartością wyjściową neuronu. Funkcja aktywacji może być funkcją liniową, skokową, sigmoidalną, tangensoidalną etc.. Wybór funkcji należy do projektanta sieci i zależy od problemu, który ma ona rozwiązywać.
Rys. 1 Model sztucznego neuronu
Zapisując to formalnie: każde wejście i może przesyłać wartość rzeczywistą xi. Wejścia mają przypisane wagi wi. Informacja wchodząca xi jest przemnażana przez odpowiadającą jej wagę wi. Przekazana informacja jest integrowana w neuronie (zwykle przez zsumowanie wszystkich sygnałów) i to tzw. łączne pobudzenie neuronu e jest przekazywane jako argument do funkcji aktywacji f i następnie jest wyliczana wartość sygnału wyjściowego.
Model opisujący działanie neuronu może być zapisany w postaci:
gdzie
x1, ... ,xn - sygnały wejściowe danego neuronu
w1, ... ,wn - wagi synaptyczne
y - sygnał wyjściowy
Przykładowe funkcje aktywacji używane przy konstrukcji sieci:
Progowa funkcja aktywacji stosowana w sieciach liniowych (w podstawowej postaci)
, gdy
, gdy
gdzie v - wartość progowa
Funkcja sigmoidalna
Funkcja tangens hiperboliczny
Sieci wielowarstwowe.
Dotychczasowe rozważania dotyczyły pojedynczych neuronów. Pojemność informacyjna pojedynczego neuronu nie jest duża. Powiększenie pojemności i zwiększenie zdolności przetwarzania uzyskuje się poprzez odpowiednie połączenie wielu neuronów. W zastosowaniach praktycznych spotykamy się z wieloma modelami połączeń pomiędzy jednostkami. Najczęściej wykorzystywanym jest układ warstwowy tzn. taki że neurony podzielone są na kilka podzbiorów, nazywanych warstwami. Połączenia mogą przebiegać jedynie od neuronów danej warstwy do warstwy kolejnej nigdy w przeciwnym kierunku. Czasami dopuszcza się również połączenia pomiędzy neuronami wewnątrz danej warstwy. Wyróżniamy sieci jednowarstwowe i wielowarstwowe.
Sieci jednowarstwowe składają się z neuronów ułożonych w jednej warstwie, zasilanej jedynie z węzłów wejściowych. Węzły wejściowe nie tworzą warstwy neuronowej, ponieważ nie zachodzi w nich proces obliczeniowy.
Sieć wielowarstwowa posiada warstwę wejściową, wyjściową oraz jedną lub więcej warstw ukrytych. Zadaniem elementów w warstwie wejściowej jest wstępne przetwarzanie impulsu wejściowego x=[x1, x2, x3, ..., xn]. Zasadnicze przetwarzanie neuronowe impulsu wejściowego odbywa się w warstwach ukrytych oraz w warstwie wyjściowej. Warstwy te zbudowane są z elementów przetwarzających, które stanowią modele sztucznych neuronów. W jednokierunkowych sieciach wielowarstwowych typu perceptron połączenia pomiędzy poszczególnymi warstwami są zaprojektowane tak, że każdy element warstwy poprzedniej jest połączony z każdym elementem warstwy następnej. Połączeniom tym są przypisane odpowiednie współczynniki wag, które w zależności od zadania, jakie dana sieć powinna rozwiązywać, są wyznaczane dla każdego przypadku z osobna. Na wyjściu sieci generowany jest impuls wyjściowy y=[y1, ..., ym].
Model sieci wielowarstwowej:
Uczenie sieci wielowarstwowej. Reguła uczenia DELTA. Algorytm wstecznej propagacji błędu.
W sieciach wielowarstwowych najistotniejszym problemem jest dobór wag w warstwach ukrytych. Istnieją algorytmy umożliwiające efektywne uczenie takich sieci. W tej pracy zostaną omówione zastosowane w części praktycznej algorytmy uczenia sieci.
Istotnym zagadnieniem w uczeniu wielowarstwowych sieci neuronowych jest też ustalenie początkowych wag. Nie jest korzystne ustalenie wszystkich wag na poziomie zerowym. Także zbyt wysokie lub niskie wartości w konsekwencji prowadzą do bardzo wolnego uczenia się sieci. W praktyce ustawia się losowo wszystkie wartości 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 ma 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: szybkości uczenia i momentum. Wpływają one na stromość funkcji aktywacji i regulują szybkość wpływu zmiany wag na proces uczenia.
Przy pojedynczym współczynniku uczenia η, do uczenia sieci wielowymiarowych stosujemy regułę Delta, przy czym definiujemy sygnał błędu dla każdego neuronu z warstw ukrytych. Doprowadza nas to do następującego wzoru na zmianę wagi między neuronem j w warstwie k a neuronem i w warstwie k-1:
gdzie:
- zmiana wartości wagi połączenia między neuronem j w warstwie k, a neuronem i w warstwie k-1,
η - współczynnik szybkości uczenia,
- błąd neuronu j w warstwie k
f'(ej) - pochodna funkcji aktywacji
xi - sygnał wejściowy pochodzący od neuronu j
Aby przyspieszyć proces uczenia, a jednocześnie uniknąć niebezpieczeństwa oscylacji w sieci (czyli wpadania algorytmu w minima lokalne funkcji błędu) wprowadza się modyfikację do algorytmu, zwaną Uogólnioną Regułą Delty, zawierającą czynnik bezwładności
:
gdzie:
η1 - współczynnik szybkości uczenia
η2 - współczynnik momentum
- poprzednia zmiana wag
Algorytm wstecznej propagacji błędu
W procesie uczenia sieci wielowarstwowej pojawia się problem polegający na tym, że dla warstw ukrytych nie da się określić oczekiwanych wartości sygnałów wyjściowych, a tym samym nie ma możliwości bezpośredniego określenia błędów. Nie można ustalić w jakim stopniu za pojawienie się błędu wyrażonego różnicą oczekiwanych wartości sygnałów wyjściowych i rzeczywiście otrzymanych odpowiedzi odpowiadają neurony warstwy wyjściowej, na których ten błąd się ujawnił, a w jakim stopniu elementy warstw wcześniejszych. Aby zlikwidować ten problem stosuje się tzw. algorytm wstecznej propagacji błędów (backpropagation). Algorytm propagacji wstecznej jest jednym z najskuteczniejszych algorytmów uczenia sieci wielowarstwowej. Jego nazwa pochodzi od sposobu obliczania błędu w poszczególnych warstwach sieci. Najpierw obliczane są błędy w warstwie ostatniej na podstawie porównania aktualnych i wzorcowych sygnałów wyjściowych i na tej podstawie dokonywane są zmiany wag połączeń, następnie w warstwie ją poprzedzającej i tak dalej aż do warstwy wejściowej. W algorytmie propagacji wstecznej można wyróżnić trzy fazy:
podanie na wejście sygnału uczącego x i wyliczenie aktualnych wyjść y.
porównujemy sygnał wyjściowy y z sygnałem wzorcowym d, a następnie wyliczamy lokalne błędy dla wszystkich warstw sieci,
adaptacja wag.
Opisany proces kontynuuje się aż do momentu kiedy sygnały wyjściowe sieci będą dostatecznie bliskie oczekiwanym. Celem algorytmu propagacji wstecznej jest minimalizacja funkcji energetycznej.
Cechy sieci neuronowych
Do najważniejszych cech sieci neuronowych, dzięki którym mają one szerokie zastosowanie praktyczne, należą:
nieliniowość i nieparametryczność - trójwarstwowa sieć złożona z elementów nieliniowych jest w stanie odwzorować dowolną funkcję wielu zmiennych, dodatkowo przy zastosowaniu SSN nie jest konieczne określenie a priori postaci funkcji tworzącej model, jak również postaci rozkładów losowych danych (nieparametryczność) - stąd zastosowanie SSN gdy wiedza na temat danego zjawiska jest niewystarczająca (np. określanie trendu na giełdzie papierów wartościowych);
zdolność do adaptacji - posiadają zdolność do reagowania na zmieniające się charakterystyki zewnętrzne (możliwość wykorzystania w systemach czasu rzeczywistego);
równoległość - przetwarzają informacje w sposób równoległy, przez to działają szybciej, ale i pozwalają na jednoczesne analizowanie kilku wielkości z osobna jak również ich współzależności;
uniwersalność - ta sama pod względem architektury sieć może być stosowana do wielu różnych problemów;
zdolność do samoorganizacji - sieć sama odkrywa związki pomiędzy danymi wejściowymi;
generalizacja - zdolność do generowania nowych przypadków, na podstawie zdobytej wiedzy.
Podział sieci neuronowych
Są różne kryteria podziału sieci neuronowych.
Ze względu na rodzaj połączeń:
sieci z jednokierunkowymi połączeniami (nazywane często feedforward),
sieci ze sprzężeniami zwrotnymi - sieci rekurencyjne.
Ze względu na metodę uczenia:
sieci uczone z nadzorem,
sieci uczone ze wsparciem,
sieci uczone bez nadzoru.
Ze względu na rodzaj funkcji aktywacji:
sieci liniowe,
sieci nieliniowe.
Rodzaj połączeń
Sieci neuronowe ze względu na rodzaj połączeń pomiędzy neuronami dzielimy na:
sieci jednokierunkowe (ang. feedforward),
sieci ze sprzężeniami zwrotnymi - sieci rekurencyjne (ang. feedback, bidirectional)
Sieci jednokierunkowe tworzy się w wyniku grupowania pojedynczych neuronów w warstwy, a następnie łączy się warstwy w ten sposób, że wyjście każdego neuron z danej warstwy jest połączony z wejściem każdego neuronu z warstwy następnej. Nie mogą jednocześnie istnieć połączenia wewnątrz warstwy, jak również połączenia wsteczne, czyli połączenia z warstwą poprzednią. Uczenie takich sieci odbywa się zazwyczaj z wykorzystaniem algorytmu wstecznej propagacji błędów (ang. backpropagation).
Sieci ze sprzężeniem zwrotnym powstają wówczas, gdy wyjście przynajmniej jednego neuronu jest połączone pośrednio lub bezpośrednio z jego wejściem. Znane są różne topologie sieci rekurencyjnych; najbardziej rozpowszechnione są sieci Hopfielda. Sygnał podawany na wejście jest przetwarzany w sieci wielokrotnie, zanim ustalą się stabilne wartości wyjściowe. Po przebiegu sygnały wyjściowe są opóźniane o jeden cykl i ponownie podawane na jej wejście. Sieci takie są trudniejsze do uczenia niż jednokierunkowe i działają wolniej, a w ich analizie nie można pominąć dynamicznych stanów przejściowych stanowiących w tym przypadku istotę działania.
Różne metody uczenia
Jedną z najważniejszych cech sieci neuronowych jest ich zdolność uczenia się, czyli zdolność do samodzielnego dostosowywania współczynników wagowych. Dzięki temu mają one charakter sztucznej inteligencji, potrafią samodzielnie przystosowywać się do zmieniających się warunków. Celem uczenia jest taki dobór wag w poszczególnych neuronach aby sieć mogła rozwiązywać stawiane przed nią problemy. Wagi dobiera się w sposób zapewniający minimalizację błędu działania sieci.
Istnieją trzy zasadnicze klasy uczenia sieci:
uczenie z nadzorem,
uczenie ze wsparciem,
uczenie bez nadzoru.
W uczeniu z nadzorem (uczeniu z nauczycielem) dostępny jest zbiór par uczących składający się z wektora wejściowego i wektora odpowiedzi żądanej (docelowej). Zakłada się wtedy, że z góry wiadomo jak sieć ma się zachowywać i znane są odpowiedzi poprawne na pewne wektory z przestrzeni wejściowej. Na tej podstawie można obliczyć konkretną wartość błędu i w oparciu o nią modyfikować współczynniki wagowe jednostek sieci. Po zakończeniu procesu uczenia sieć poddawana jest testom, podczas których nie posiada już dostępu do informacji o prawidłowych odpowiedziach, a samodzielnie wygenerowane przez nią rozwiązanie jest podstawą do oceny skuteczności procesu uczenia. Taki system nie jest odporny na zmieniające się warunki w jakich przyjdzie mu działać, dlatego wymyślono inną metodę uczenia z nadzorem tzw. uczenie ze wsparciem.
Uczenie ze wsparciem (uczenie ze wzmocnieniem) nie zakłada istnienia nauczyciela, a jedynie krytyka, który nie podaje konkretnej odpowiedzi, ale ocenia jej poprawność. Inspiracją tej metody jest prawo Thorndike'a: jeżeli przedsięwzięta akcja powoduje stan zadowolenia, to tendencja do jej powtórzenia w podobnych okolicznościach wzmacnia się, a w przeciwnym przypadku ulega osłabieniu. Krytyk nie bierze udziału w procesie uczenia, lecz rozstrzyga o wyniku nauczania.
Przy uczeniu bez nadzoru (uczenie bez nauczyciela) nie ma dostępnej żadnej informacji opisującej poprawność udzielanej przez sieć odpowiedzi. W dalszym ciągu sieć ma wejścia i wyjścia, ale nie istnieje sprzężenie zwrotne od środowiska. Jednostki i połączenia muszą zatem okazywać pewien poziom samoorganizacji - sieć sama musi ustalać wartości wag korzystając z zauważonych korelacji pomiędzy sygnałami wejściowymi lub z mechanizmu konkurencji neuronów. Uczenie bez nadzoru jest możliwe tylko wtedy, gdy istnieje powtarzalność wśród danych wejściowych (redundancja), inaczej dane były by nie do odróżnienia od przypadkowego szumu. Uczenie bez nadzoru stosuje się też do już nauczonych sieci np. przy wykorzystaniu uczenia z nauczycielem w celu zwiększenia ich możliwości adaptacyjnych.
Rodzaj funkcji aktywacji
Ze względu na rodzaj funkcji aktywacji wyróżnia się:
sieci liniowe (ang. linear)
sieci nieliniowe (ang. nonlinear).
W sieciach liniowych występuje liniowa funkcja aktywacji neuronu, najczęściej f(x)=x. Każdą wielowarstwową sieć liniową można zastąpić równoważną siecią jednowarstwową, dlatego w praktyce nie buduje się wielowarstwowych sieci liniowych.
W sieciach nieliniowych stosuje się wiele różnych funkcji aktywacji, np. sigmoidalną, tangensoidalną, różne rodzaje funkcji signum. Wybór funkcji należy do projektanta sieci i w dużej mierze zależy od rodzaju rozwiązywanego problemu. Do projektanta należy również określenie liczby warstw sieci. Sieci nieliniowe z trzema warstwami (wejściową, ukrytą i wyjściową) wystarczają do zamodelowania dowolnej funkcji (dowód Tadeusiewicz R., Sieci neuronowe).
Kierunki badań i zastosowania ekonomiczne sieci neuronowych
Trudno wymienić wszystkie aktualnie spotykane zastosowania sieci neuronowych. Ze względu na swoją budowę sieci neuronowe mogą być stosowane tam, gdzie na podstawie pewnych znanych wnioskuje się o pewnych nieznanych informacjach. Uwzględniając metodologię badań można wyróżnić następujące kierunki badań (w każdej klasie zostaną wymienione wybrane zastosowania ekonomiczne):
Predykcja
Poprzez zdolność sieci do wykrywania związków pomiędzy danymi możliwe jest dokonanie prognozy bez znajomości np. parametrów funkcji trendu, Sieć może nauczyć się przewidywania sygnałów wyjściowych bez jawnego definiowania związku między danymi wejściowymi a wyjściowymi, tylko na podstawie obserwacji tzw. ciągu uczącego (tj. określonej liczby sekwencji sygnałów wejściowych i wyjściowych stanowiących materiał empiryczny z przeszłości). Przykładowe zastosowania:
ocena wiarygodności kredytobiorców
prognozy ekonomiczne rozwoju przedsiębiorstw
prognozowanie sprzedaży w przedsiębiorstwie
prognozowanie indeksów giełdowych
prognozy rynków (np. pieniężnych, długów, metali szlachetnych, itd.)
Klasyfikacja i rozpoznawanie
Zadanie polega na przewidywaniu identyfikatora klasy, do której dany obiekt należy. Przykładem zastosowania może być zadanie identyfikacji zakładów danej branży, w których warto inwestować lub regionów zagrożonych bezrobociem. Innym zastosowaniem jest szeroko pojęta klasyfikacja (np. klientów danej firmy).
Kojarzenie danych
Klasyczne systemy komputerowe mogą gromadzić duże zbiory danych, ale mają właściwie żadnych możliwości ich kojarzenia. Sieci neuronowe, dzięki zdolności uczenia się i uogólniania doświadczeń, pozwalają zautomatyzować procesy wnioskowania i pomagają wykrywać istotne powiązania pomiędzy danymi.
Analiza danych
Zadanie polega na znalezieniu związków pomiędzy danymi. Analiza danych przy wykorzystaniu sieci neuronowych pozwala np. na wykrycie rzeczywistych intencji przedsiębiorstw konkurencyjnych, co może stać się podstawą przewagi konkurencyjnej lub też pozwala na ustalenie przyczyn niepowodzeń przeszłych projektów itp.
Filtracja sygnałów
Dane gospodarcze pochodzące z różnych źródeł są zakłócone, ich wykorzystanie wymaga wstępnej obróbki tych danych. Klasyczne metody eliminacji "szumów" pozwalają usunąć zakłócenia o charakterze losowym, lecz nie dają podstaw do eliminacji błędów systematycznych. Łatwo można uzupełniać dane niekompletne przy użyciu SSN. Z tych powodów coraz częściej bada się możliwość zastosowania sieci neuronowych jako filtrów danych gospodarczych.
Optymalizacja
Sieci neuronowe - zwłaszcza sieci Hopfielda - dobrze nadają się do optymalizacji decyzji gospodarczych. Potwierdzone są już możliwości sieci do rozwiązywania zadań optymalizacji statycznej i dynamicznej. Ciekawe jest również zastosowanie sieci do optymalizacji kombinatorycznej i zagadnień złożonych obliczeniowo, które mogą być rozwiązywane w krótkim czasie dzięki współbieżnym obliczeniom przez wiele elementów sieci. Dobrym przykładem jest sieć rozwiązująca klasyczny problem komiwojażera.
W wymienionych zagadnieniach sieci neuronowe często funkcjonują lepiej w porównaniu do powszechnie stosowanych metod statystycznych takich jak korelacja i parametryczna regresja wielowymiarowa. Wiąże się to z faktem, iż sieć realizuje nieliniową funkcję zależności danych wyjściowych od wejściowych, której kształt jest odpowiednio dopasowywany podczas procesu uczenia. Ponadto sieci neuronowe dobrze sprawdzają się do przetwarzania danych, które zawierają szumy lub są niekompletne. Należy też podkreślić ich zdolność do równoległego przetwarzania informacji, oczywiście w specjalnych wykonaniach sprzętowych. Zapewnia to bardzo dużą szybkość przetwarzania informacji, co w efekcie może prowadzić do wykonywania przez sieć szybszych i efektywniejszych analiz niż człowiek-ekspert. Zaznaczyć jednak należy, że warunkiem efektywnego wykorzystania tego typu narzędzi jest posiadanie zbioru wiarygodnych danych z przeszłości, na podstawie których można dokonać uczenia i testowania sieci.
Określenie odpowiedniej architektury sieci, uczenie sieci i jej weryfikacja, zastosowanie sieci
Konstrukcja ciągów: uczącego, walidacyjnego i testującego
Przed realizacją procesu uczenia i testowania SSN konieczne jest określenie okresu czasu, z którego pochodzą dane wykorzystane w tym procesie. Z jednej strony należy uwzględnić fakt, że dane ze zbyt odległych w czasie okresów mogą być nieodpowiednie w stosunku do obecnej, często odmiennej sytuacji. Jeżeli związki, które zachodziły w przeszłości, już nie zachodzą, nawet dobrze nauczona sieć działać będzie niepoprawnie. Z drugiej jednak strony im dłuższy jest ciąg uczący, tym lepsza zdolność nauczonej sieci do generalizacji, efektywnego rozpoznawania wzorców wejściowych i generowania poprawnych odpowiedzi w oparciu o te wzorce.
Istotną rzeczą przy stosowaniu SSN jest podział dostępnych danych (wektorów wejściowych) na zbiory: ciąg uczący, walidacyjny i testowy. Ciąg uczący jest to zbiór takich danych, które w miarę dokładnie charakteryzują dany problem. W jego skład wchodzi wektor wejściowy, czyli dane wejściowe, które podawane są na wejścia sieci i wektor wyjściowy, czyli odpowiedzi jakie sieć powinna wygenerować na swoich wyjściach. Po przetworzeniu wektora wejściowego, porównywane są wartości otrzymane z wartościami oczekiwanymi i sieć jest informowana, czy odpowiedź jest poprawna, a jeżeli nie, to jaki powstał błąd odpowiedzi. W stosowanym w opracowaniu praktycznym algorytmie backpropagation błąd ten jest następnie propagowany do sieci, ale w kolejności odwrotnej niż wektor wejściowy (od warstwy wyjściowej do wejściowej) i na jego podstawie następuje taka korekta 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. Pewna liczba przypadków uczących jest zaliczana do osobnej grupy i tworzy ciąg walidacyjny. Dane należące do tej grupy nie są bezpośrednio stosowane w trakcie uczenia sieci, ale służą do niezależnej kontroli postępów algorytmu uczenia. Na podstawie ciągu walidacyjnego dokonywana jest wstępna ocena funkcjonowania sieci neuronowej i na jej podstawie dokonywana jest korekta sieci.
Jeżeli sieć jest już nauczona, należy zweryfikować jej działanie. W tym momencie ważne jest podanie na wejście sieci wzorców spoza zbioru uczącego i walidacyjnego w celu zbadania czy sieć może efektywnie generalizować zadanie, którego się nauczyła. Do tego używamy ciągu testowego, 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 i walidacji. Przy użyciu ciągu testowego, podobnie jak walidacyjnego, rejestruje się odchylenia, błędy od oczekiwanych odpowiedzi i weryfikuje poprawność działania sieci.
Podział dostępnego zbioru danych na trzy rozłączne podzbiory: ciąg uczący, walidacyjny i testowy, jest skomplikowanym zagadnieniem. Należy m.in. określić liczebność (lub wzajemne proporcje) ciągu uczącego, walidacyjnego i testowego oraz zdefiniować lokalizację każdego z tych ciągów w całym zbiorze danych. Możliwości jest dużo. Można np. dokonać podziału zbioru danych na kilkanaście bloków, a następnie wyodrębnienie w każdym z bloków danych uczących, walidacyjnych i testowych - według tych samych zasad alokacji i z zachowaniem przyjętych proporcji.
Dobór architektury, parametrów sieci
Ważnym etapem jest wybór odpowiedniej sieci. Wybór dotyczy m.in. struktury sieci, funkcji aktywacji, algorytmu uczenia sieci, parametrów algorytmu uczenia i jest najczęściej wykonywany eksperymentalnie.
Wiadomo, że sieć posiadać musi warstwę wejściową złożoną z neuronów odpowiadających ilością liczbie zmiennych objaśniających i warstwę wyjściową złożoną z neuronów odpowiadających ilością liczbie zmiennych objaśnianych. Problem struktury sieci dotyczy więc ilości warstw ukrytych i ilości węzłów na każdej z tych warstw, a także do struktury połączeń między warstwami. Najczęściej wystarcza sieć trzywarstwowa (z jedną warstwą ukrytą). Wielowarstwowa sieć jednokierunkowa z tylko jedną warstwą ukrytą może aproksymować z zadaną dokładnością dowolną funkcję ciągłą (twierdzenie o uniwersalnej aproksymacji). Nie oznacza to, że jest to rozwiązanie optymalne pod względem długości czasu uczenia się sieci.
Przy projektowaniu sieci bardzo ważna jest również ilość składników w warstwie ukrytej sieci. Mogą tu wystąpić dwie możliwe sytuacje: overfitting i underfitting. Overfitting występuje wtedy, gdy zaprojektujemy zbyt dużo neuronów w warstwie ukrytej. Prowadzi to do otrzymywania błędnych wyników dla wektorów testowych. Underfitting występuje wtedy, gdy sieć posiada zbyt mało neuronów w warstwie ukrytej. Efektem tego jest utrzymywanie się wartości błędu na stałym niedopuszczalnym poziomie, pomimo długiego uczenia się danej sieci.
Zastosowanie sieci
Oczekiwanym efektem uczenia jest przystosowanie sieci do prawidłowych reakcji na przedstawiane jej informacje wejściowe. Wagi poszczególnych neuronów są tak „dostrajane”, że sieć jest w stanie poprawnie reagować na wzorce, których się nauczyła i również na wzorce, które nie występowały w procesie uczenia. Np. wiedza zawarta w informacjach z przeszłości jest wykorzystywana do predykcji zachowań w przyszłości.
Literatura:
Rutkowska D., Piliński M., Rutkowski L., Sieci neuronowe, algorytmy genetyczne i systemy rozmyte, Państwowe Wydawnictwa Naukowe, Warszawa, 1997
Tadeusiewicz R., Sieci neuronowe, Akademicka Oficyna Wydawnicza RM, Warszawa 1993
Linki:
Skrypt R. Tadeusiewicz - http://winntbg.bg.agh.edu.pl/skrypty/0001/main.html
Strona Bartłomieja Bartkowskiego - http://nrn.prv.pl/