StatSoft Wprowadzenie do sieci neuronowych


StatSoft
www.statsoft.pl

Wprowadzenie do sieci neuronowych

Kraków 2001
ISBN 83-88724-04-5
Tytuł: "Wprowadzenie do sieci neuronowych".
Copyright 2001 by StatSoft Polska Sp. z o.o.
StatSoft Polska Sp. z o.o.
30-110 Kraków, ul. Kraszewskiego 36
Telefon (012) 4284300, (0601) 414151, Faks (012) 4284301
E-mail: info@statsoft.pl
Web: www.statsoft.pl
All rights reserved. Wszelkie prawa zastrzeżone.
Przekład z języka angielskiego i opracowanie dla StatSoft Polska: Paweł Lula, Ryszard Tadeusiewicz.
Współpraca techniczna Piotr Wójtowicz.
Kierownik projektu Jacek Jakubowski.
StatSoft Polska bardzo dziękuje panu profesorowi Ryszardowi Tadeusiewiczowi za rozbudowanie i opracowanie dokumentacji polskiej wersji STATISTICA Neural Networks.

Kopiowanie, powielanie lub przenoszenie w elektroniczny, mechaniczny, magnetyczny, optyczny, metodą fotokopii lub inny sposób jakiejkolwiek części tej publikacji bez pisemnej zgody StatSoft Polska Sp. z o.o. jest zabronione.
Wszelkie wymienione nazwy produktów mogą być znakami towarowymi ich producentów.

Copyright StatSoft, 2001
Copyright for the Polish edition StatSoft Polska, 2001


Szczegółowy spis treści

SIECI NEURONOWE / 3
Wstęp / 3
Inspiracje biologiczne / 4
Model podstawowy / 6
Korzystanie z sieci neuronowej / 11
Gromadzenie danych dla sieci neuronowych / 13
Streszczenie / 16
Pre- i postprocessing / 16
Perceptrony wielowarstwowe / 19
- Uczenie perceptronu wielowarstwowego / 19
- Algorytm wstecznej propagacji błędów / 22
- Przeuczenie i generalizacja / 23
- Wybór danych / 27
- Intuicyjne przedstawienie sposobu uczenia perceptronu wielowarstwowego / 28
- Inne algorytmy uczenia perceptronów wielowarstwowych / 32
Sieci o radialnych funkcjach bazowych / 39
Probabilistyczne sieci neuronowe / 43
Sieci neuronowe realizujące regresję uogólnioną / 46
Sieci liniowe / 47
Sieci Kohonena / 48
Klasyfikacja w ST Neural Networks / 52
- Statystyki klasyfikacyjne / 57
Problemy regresyjne w ST Neural Networks / 57
Prognozowanie szeregów czasowych w ST Neural Networks / 63
Wybór zmiennych oraz redukcja liczby wymiarów / 66
Zakończenie / 71
INDEKS / 75


$Wstęp

W ostatnich latach bardzo gwałtownie wzrosło zainteresowanie sieciami neuronowymi. Są one z powodzeniem stosowane w rozwiązywaniu niezwykle szerokiego zakresu problemów, w tak różniących się od siebie dziedzinach jak finanse, medycyna, zastosowania inżynierskie, geologia czy fizyka. W rzeczywistości sieci neuronowe mogą być zastosowane wszędzie tam, gdzie pojawiają się problemy związane z predykcją, klasyfikacją czy sterowaniem. Ten olbrzymi sukces sieci neuronowych jest związany z kilkoma czynnikami:
Moc. Sieci neuronowe są bardzo wyrafinowaną techniką modelowania, zdolną do odwzorowywania nadzwyczaj złożonych funkcji. W szczególności sieci neuronowe mają charakter nieliniowy (termin ten zostanie szczegółowo omówiony w dalszej części tego rozdziału), co istotnie wzbogaca możliwości ich zastosowań. Rozwiniemy nieco ten temat, żeby wskazać na wagę formułowanych tu wniosków.
Przez wiele lat powszechnie stosowaną techniką matematycznego opisywania różnych obiektów i procesów było modelowanie liniowe. Takie postępowanie jest z powodzeniem stosowane także obecnie, przynosząc pomyślne rezultaty, głównie z uwagi na dobrze znaną strategię optymalizacji stosowaną przy konstrukcji modeli tego typu. Jednak wszędzie tam, gdzie nie ma podstaw do aproksymacji liniowej występujących zjawisk i procesów (a przypadki takie są w praktyce dość częste), modele liniowe nie sprawdzały się, prowadząc niekiedy do formułowania niesłusznych opinii o całkowitym braku możliwości matematycznego opisywania takich czy innych systemów. W takich przypadkach, przy rozwiązywaniu tych trudnych i kłopotliwych zagadnień odwołanie się do modeli tworzonych z wykorzystaniem sieci neuronowych (a więc
modeli, które bez trudu mogą odwzorować zależności nieliniowe) może być najszybszym i najwygodniejszym rozwiązaniem problemu.
Zalety sieci neuronowych nie ograniczają się jedynie do tego, że umożliwiają one swobodne i łatwe (bez konieczności samodzielnego formułowania przez użytkownika skomplikowanych hipotez) tworzenie modeli nieliniowych. Sieci umożliwiają także kontrolę nad złożonym problemem wielowymiarowości, który przy stosowaniu innych metod znacznie utrudnia próby modelowania funkcji nieliniowych z dużą liczbą zmiennych niezależnych (tzw. funkcji wektorowych).
Łatwość użycia. Sieci neuronowe w praktyce same konstruują potrzebne użytkownikowi modele, ponieważ automatycznie uczą się na podanych przez niego przykładach. Odbywa się to w taki sposób, że użytkownik sieci gromadzi reprezentatywne dane pokazujące, jak manifestuje się interesująca go zależność, a następnie uruchamia algorytm uczenia, który ma na celu automatyczne wytworzenie w pamięci sieci potrzebnej struktury danych. Opierając się na tej samodzielnie stworzonej strukturze danych, sieć realizuje potem wszystkie funkcje związane z eksploatacją utworzonego modelu.
Chociaż zatem użytkownik potrzebuje pewnej, w głównej mierze empirycznej wiedzy dotyczącej sposobu wyboru i przygotowania danych stanowiących przykłady, a także wyboru właściwego rodzaju sieci neuronowej oraz sposobu interpretacji rezultatów, to jednak poziom wymaganej od użytkownika wiedzy teoretycznej, niezbędnej do skutecznego zbudowania modelu, przy stosowaniu sieci neuronowych jest znacznie niższy niż w przypadku stosowania tradycyjnych metod statystycznych.
Pociągająca jest również taka właściwość sieci neuronowych, że stanowią one (w jakimś zakresie) naśladownictwo działania ludzkiego umysłu. Wprawdzie sieci oparte są na bardzo prostym modelu, przedstawiającym wyłącznie najbardziej podstawową istotę działania biologicznego
#3
systemu nerwowego, jednak ich działanie wzbudza ciekawość jako jedna z prób przeniknięcia istoty działania ludzkiego mózgu. Niektórzy w związku z tym sądzą, że w przyszłości rozwój modelowania neuro-biologicznego może doprowadzić do powstania prawdziwych komputerów inteligentnych. Tak będzie jednak dopiero w przyszłości - być może dość odległej. Tymczasem już dziś, "proste" modele sieci neuronowych, na przykład te tworzone w ST Neural Networks, stanowią godne uwagi, bardzo użyteczne narzędzie. Są tacy, którzy przypuszczają, że będzie to prawdziwie "cudowny oręż" oddany do dyspozycji osób zajmujących się statystyką stosowaną.

$Inspiracje biologiczne

Sieci neuronowe powstały w wyniku badań prowadzonych w dziedzinie sztucznej inteligencji; szczególne znaczenie miały tutaj te prace, które dotyczyły budowy modeli podstawowych struktur występujących w mózgu. Prace te miały na celu naśladowanie zwłaszcza tych cech charakterystycznych dla biologicznych systemów nerwowych, które mogą być szczególnie użyteczne technicznie. Do cech tych w pierwszym rzędzie zalicza się odporność systemów biologicznych na uszkodzenia nawet znacznej części ich elementów oraz ich nadzwyczajną zdolność do uczenia się (Patterson, 1996). Główne badania przeprowadzone na polu tak zwanej symbolicznej sztucznej inteligencji w latach 1960 -1980 doprowadziły do powstania systemów ekspertowych. Systemy te oparte są na ogólnym modelu procesu sformalizowanego wnioskowania (w szczególności na koncepcji głoszącej, że procesy wnioskowania u człowieka oparte są na manipulowaniu symbolami). Bardzo szybko stało się oczywiste, że systemy te, chociaż bardzo użyteczne w pewnych dziedzinach, nie są w stanie wyjaśnić kluczowych aspektów inteligencji ludzkiej. Zgodnie z jednym z kierunków rozważań, powodem niepowodzenia systemów tego typu była ich niezdolność do naśladowania elementarnych struktur występujących w mózgu. Zrodziło to przekonanie, iż podejmując prace mające na celu skonstruowanie systemu, który można by było określić mianem w pełni inteligentny, należy wzorować się na strukturze obdarzonych inteligencją systemów rzeczywistych, czyli na strukturze mózgu.
Jak wynika z badań anatomicznych i histologicznych, na mózg człowieka składa się przede wszystkim bardzo duża liczba elementarnych komórek nerwowych, czyli neuronów. Szacuje się, że jest ich około 10 miliardów, w większości połączonych ze sobą w formie skomplikowanej sieci. Ustalono, że średnio na jeden neuron przypada kilka tysięcy połączeń, ale dla poszczególnych komórek wartości te mogą się znacznie różnić.
Każdy z neuronów jest specjalizowaną komórką biologiczną, mogącą przenosić i przetwarzać złożone sygnały elektrochemiczne. Neuron na ogół posiada rozgałęzioną strukturę wielu wejść informacyjnych (dendryty), scalające sygnały ze wszystkich tych wejść ciało (perikarion) oraz opuszczający komórkę jako pojedyncze włókno nośnik informacji wyjściowej (akson), powielający potem przewodzony przez siebie wynik pracy neuronu i rozsyłający go do różnych neuronów odbiorczych poprzez rozgałęzioną strukturę wyjściową (telodendrori).
Akson jednej komórki łączy się z dendrytami innych komórek poprzez biochemiczne złącza, modyfikujące sygnały i stanowiące nośnik pamięci. Są to tak zwane synapsy, w oryginale biologicznym bardzo skomplikowane, ale w sztucznych sieciach neuronowych sprowadzane jedynie do operatorów przemnażania wejściowych sygnałów przez współczynniki ustalane w toku procesu uczenia.
Pobudzony przez synapsy neuron przechodzi do stanu aktywnego, co objawia się tym, że wysyła on poprzez swój akson wyjściowy sygnał elektrochemiczny o charakterystycznym kształcie, amplitudzie i czasie trwania. Ogólna forma sygnału pobudzonego neuronu jest identyczna dla
#4
wszystkich żywych organizmów, chociaż jego czas trwania jest różny dla różnych organizmów. Najkrótszy jest on u ssaków i dlatego mówi się często, że pobudzony neuron ssaka (w szczególności człowieka) wysyła impuls czynnościowy (iglicę, spike). Przejście od stanu bezczynności do stanu generacji impulsów zachodzi w typowych neuronach bardzo gwałtownie, dlatego mówi się często o "zapłonie" neuronu, który zaczyna generować na swoim wyjściu odpowiedni sygnał. Sygnał ten za pośrednictwem kolejnych synaps dociera do innych neuronów, które pod jego wpływem mogą również zostać postawione w stan zapłonu.
Neuron przechodzi w stan zapłonu tylko wówczas, gdy łączny sygnał, który dotarł do ciała komórki poprzez dendryty, przekroczy pewien poziom progowy (poziom zapłonu).
Siła otrzymanego przez neuron sygnału (i związana z tym szansa na zapłon) zależy w największym stopniu od efektywności (współczynnika wagi) synapsy, do której dociera impuls. Ponieważ waga ta ma zasadnicze znaczenie z punktu widzenia objaśnienia działania sieci neuronowych - zarówno tych naturalnych (biologicznych), jak i ze względu na funkcjonowanie sztucznych sieci, takich jak tworzone i eksploatowane w ST Neural Networks -przyjrzymy się trochę dokładniej temu, co się dzieje w synapsach.
W każdej synapsie występuje szczelina wypełniona specjalną substancją, tak zwanym neurotransmiterem albo neuromediatorem. Mechanizm funkcjonowania neurotransmitera ma duże znaczenie w biologii układu nerwowego: niedobór niektórych neurotransmiterów powoduje groźne choroby (na przykład brak neurotransmitera dopaminy powoduje tzw. chorobę Parkinsona), wpływając zaś na chemiczne przemiany neurotransmitera można sztucznie wpływać na zachowanie człowieka (tak działa wiele leków i niektóre narkotyki). Stąd badania neurotransmiterów mają ogromne znaczenie dla farmakologii, ale dla nas tutaj wystarczy świadomość, że neurotransmiter jest substancją chemiczną posiadającą zdolność do przesłania sygnału przez występującą w każdej synapsie lukę między neuronem nadającym sygnał i neuronem, który ten sygnał odbiera.
Jeden z najbardziej znaczących badaczy systemów neurologicznych (Donald Hebb) głosił pogląd, że na proces uczenia składają się głównie zmiany "siły" połączeń synaptycznych. Na przykład, w klasycznym eksperymencie Pawiowa, dotyczącym odruchów warunkowych, w którym dźwięk dzwonka rozlega się przed podaniem psu obiadu, pies bardzo szybko uczy się łączyć dźwięk dzwonka z jedzeniem (czemu towarzyszy wydzielanie śliny). Odbywa się to w ten sposób, że połączenia synaptyczne pomiędzy właściwą częścią kory słuchowej a gruczołami ślinowymi są wzmacniane w kolejnych doświadczeniach, w których dźwięk dzwonka towarzyszy karmieniu, co w końcu powoduje, że kiedy kora słuchowa jest stymulowana przez dźwięk dzwonka, pies zaczyna się ślinić.
Obecnie sądzi się, że korzystając z bardzo dużej liczby takich prostych mechanizmów uczenia oraz używając licznych, ale wyjątkowo prostych elementów przetwarzających informacje, jakimi są neurony, mózg jest zdolny do realizacji wszystkich tych wyjątkowo złożonych zadań, jakie na co dzień wykonuje. Oczywiście w rzeczywistym biologicznym mózgu występuje wiele bardziej złożonych mechanizmów przetwarzania informacji, angażujących wiele dodatkowych elementów (na przykład tak zwane komórki glejowe). W związku z tym neurofizjologia opisuje wiele dalszych mechanizmów o bardziej złożonym charakterze - kwestie te jednak w tym miejscu nie będą omawiane.
Jest jednak rzeczą bardzo interesującą, a nawet intrygującą, że sztuczne sieci neuronowe mogą osiągać tak bardzo znaczące rezultaty praktyczne, korzystając z tak niesłychanie uproszczonego modelu neuronu, którego złożoność nie jest wiele większa od schematu polegającego na tym, że neuron jedynie wyznacza ważoną sumę swoich wejść i przechodzi do stanu zapłonu wtedy, gdy łączny sygnał wejściowy przekroczą pewien
#5
ustalony poziom progowy. Działanie tego uproszczonego modelu zostanie nieco dokładniej omówione niżej.

$Model podstawowy

Chcąc odwzorować jedynie podstawową istotę biologicznych systemów nerwowych twórcy sztucznych sieci neuronowych zdecydowali, że sztuczny neuron zostanie zdefiniowany następująco:
Do neuronu dociera pewna liczba sygnałów (wartości) wejściowych. Są to albo wartości danych pierwotnych, podawanych do sieci z zewnątrz jako dane do prowadzonych
w sieci obliczeń, albo sygnały pośrednie (pochodzące z wyjść innych neuronów wchodzących w skład sieci).
Każda wartość wprowadzana jest do neuronu przez połączenie o pewnej sile (wadze); wagi te odpowiadają efektywności synapsy w neuronie biologicznym.
Każdy neuron posiada również pojedynczą wartość progową, określającą jak silne musi być jego pobudzenie, by doszło do zapłonu.
W neuronie obliczana jest ważona suma wejść (to znaczy suma wartości sygnałów wejściowych poprzemnażanych przez odpowiednie współczynniki wagowe), a następnie odejmowana jest od niej wartość progowa. Uzyskana w ten sposób wartość pomocnicza określa pobudzenie neuronu. Z pewnym przybliżeniem można przyjąć, że określana w taki sposób wartość odpowiada biologicznemu pojęciu wypadkowego (sumarycznego) potencjału postsynaptycznego neuronu. Jest to oczywiście daleko idące przybliżenie rzeczywistych zjawisk biologicznych, ponieważ w naturalnej komórce nerwowej w każdej oddzielnej synapsie formowana jest (w następstwie złożonych biochemicznych procesów) tak zwana wartość PSP synapsy (od skrótu PSP -post-synaptic potential). W zależności od tego, czy waga danej synapsy jest dodatnia, czy ujemna - wyróżnia się potencjał postsynaptyczny pobudzający (EPSP) lub hamujący (IPSP). Potencjały postsynaptyczne podlegają złożonym procesom sumowania przestrzennego oraz sumowania czasowego, dając w konsekwencji sygnał łącznego pobudzenia.
Sygnał reprezentujący łączne pobudzenie neuronu przekształcany jest z kolei przez ustaloną funkcję aktywacji neuronu (która określana jest również niekiedy jako funkcja przejścia neuronu). Wartość obliczona przez funkcję aktywacji jest ostatecznie wartością wyjściową (sygnałem wyjściowym) neuronu.
Zachowanie neuronu (i całej sieci neuronowej) jest silnie uzależnione od rodzaju użytej funkcji aktywacji. Jeśli zostanie zastosowana progowa funkcja aktywacji (to jest taka, która generuje na wyjściu neuronu wartość 0 wtedy, gdy wejście jest mniejsze od wartości zerowej, lub też 1, gdy wejście jest większe lub równe zero) - to można przyjąć (przy pewnych założeniach upraszczających), że rozważany neuron sztuczny działa podobnie jak neuron biologiczny opisany wcześniej. W neurofizjologii taka metoda działania komórki nazywana jest tradycyjnie zasadą wszystko albo nic.
Przy tworzeniu matematycznego modelu neuronu stosuje się z reguły kilka zabiegów upraszczających, które pomagają w uzyskaniu wygodnej do eksploatacji formy sztucznego neuronu. Na przykład odjęcie wartości progowej od sumy ważonych wejść jest zabiegiem unifikującym postać funkcji przejścia. W wyniku tego zabiegu generowanie sygnału wyjściowego neuronu zachodzi zawsze w zależności od tego, czy wynik odejmowania jest większy czy mniejszy od zera, a nie w zależności od jakiejś zmiennej (podlegającej także procesom uczenia) wartości progowej. Opisane postępowanie jest w końcowym rezultacie równoznaczne
#6
z porównaniem sumy ważonych wejść neuronu z wartością progową, co sugeruj ą jako naturalny mechanizm wyniki badań neurofizjologicznych, jednak jest wygodniejsze do realizacji obliczeniowej.
W rzeczywistości, mimo silnej "biologicznej legitymacji", progowa funkcja aktywacji jest rzadko stosowana w sztucznych sieciach neuronowych. Przyczyna jest prosta: sieci z taką funkcją aktywacji sprawiają kłopoty podczas uczenia (zostanie to wkrótce dokładniej omówione). Dlatego w sztucznych sieciach neuronowych chętnie sięgamy do funkcji aktywacji dostarczających sygnałów o wartościach zmieniających się w sposób ciągły, chociaż ich biologiczna interpretacja jest nieco bardziej złożona. Interpretacja ta opiera się na fakcie, że działający neuron produkuje zwykle serie impulsów, a nie pojedyncze iglice. Można wykazać, że wielkość pobudzenia (na przykład pochodzącego od bodźca drażniącego receptor) jest kodowana we włóknach nerwowych za pomocą chwilowej częstotliwości impulsów, a nie przy pomocy obecności lub braku pojedynczego impulsu (który wobec przypadkowych szumów występujących w biologicznej tkance nerwowej może być łatwo "zgubiony" lub omyłkowo "wystrzelony"). Przyjmując, że częstotliwość impulsów może przyjmować większe albo mniejsze wartości, znajdujemy w tych obserwacjach pewne (nie do końca ścisłe) uzasadnienie dla zmieniających się w sposób ciągły sygnałów w sztucznych sieciach neuronowych. Wskazana analogia jest jednak dość ułomna, ponieważ częstotliwość impulsów może być wartością dodatnią (lub zerem, gdy nie ma żadnych impulsów), natomiast taka interpretacja nie uzasadnia możliwości posługiwania się sygnałami o wartościach ujemnych, dość chętnie stosowanych w sztucznych sieciach neuronowych.
Rozważając biologiczne uwarunkowania technicznego modelu neuronu, należy również zauważyć, że w modelu wagi mogą być zarówno wartościami dodatnimi, jak i wartościami ujemnymi, co więcej, ta sama synapsa może zmienić w trakcie uczenia znak swojej wagi. Oznacza to, że w modelu pewien sygnał wejściowy może w trakcie uczenia zamienić swój wpływ na zachowanie neuronu - przy dodatniej wartości wagi ten sygnał może pobudzać neuron do zapłonu, podczas gdy po zamianie znaku wagi ten sam sygnał będzie oddziaływał raczej hamująco niż pobudzająco na rozważany neuron. Tymczasem w biologicznym mózgu drogi pobudzania i drogi hamowania są rozdzielone i wyróżnia się nawet specjalne, oddzielne neurony hamujące, które występują dość obficie w mózgu jako elementy jego naturalnej sieci. W sztucznych sieciach neuronowych upraszcza się tę strukturę i wprowadza się synapsy "znakozmienne", poświęcając - nie po raz pierwszy i nie po raz ostatni - wierność biologii na rzecz praktycznego działania.
Powyższe uwagi dotyczyły pojedynczego neuronu. Następny problem dotyczy sposobu łączenia ze sobą neuronów.
Jeżeli sieć ma mieć wartość użytkową, to musi posiadać wejścia (służące do wprowadzania wartości zmiennych obserwowanych na zewnątrz) oraz wyjścia (które wyznaczają wynik obliczeń -na przykład prognozowaną wartość akcji lub sygnał sterujący dla robota).
Wejścia i wyjścia odpowiadają w mózgu wybranym nerwom: sensorycznym dla wejść i motorycznym dla wyjść. Nerwy sensoryczne są to takie pęczki włókien nerwowych, które wychodzą od receptorów (na przykład od siatkówek oczu) i prowadzą do odpowiednich centrów przetwarzających w mózgu informacje rejestrowane przez receptory (w przypadku systemu wzrokowego jest to struktura nazywana ciałem kolankowatym bocznym - corpus geniculatis laterale). Z kolei nerwy motoryczne są to wiązki odpowiednio wzmocnionych wypustek nerwowych, prowadzących od odpowiednich struktur w centralnym systemie nerwowym (najczęściej od tzw. motoneuronów alfa i gamma w rogach przednich rdzenia kręgowego) do efektorów (na przykład do mięśni dłoni). Występować mogą również neurony spełniające
#7
wewnętrzne funkcje w sieci, które pośredniczą w analizie informacji dostarczanych przez nerwy sensoryczne i biorą udział w przetwarzaniu sygnałów sensorycznych na decyzje aktywizujące określone elementy wykonawcze - najczęściej uruchamiających określone mięśnie. Ponieważ w tych pośredniczących neuronach zewnętrzny obserwator nie ma dostępu ani do ich wejść, ani do wyjść - neurony takie zwykło się opisywać jako tak zwane neurony ukryte, co brzmi nieco tajemniczo i budzi wątpliwości w rodzaju "co jest ukryte w neuronach ukrytych?" (jest to wolny przekład tytułu jednej z bardziej popularnych prac na temat sieci neuronowych). Jednak prawda jest znacznie mniej tajemnicza i znacznie prostsza, niż można by było sądzić: neurony ukryte (czy też całe warstwy ukryte) to po prostu te elementy sieci, których nie daje się bezpośrednio obserwować ani od strony wejścia, ani od strony wyjścia. Tyle i tylko tyle.
Neurony wejściowe, ukryte i wyjściowe muszą zostać wzajemnie połączone, co stawia przed twórcą sieci problem wyboru jej struktury. Kluczową kwestią przy wyborze struktury sieci jest występowanie lub brak w tej strukturze sprzężenia zwrotnego (Haykin, 1994). Proste sieci mają strukturą jednokierunkową (tzw. feedforward): sygnał przepływa w nich tylko w jednym kierunku - od wejść, poprzez kolejne neurony ukryte, osiągając ostatecznie neurony wyjściowe. Strukturę taką charakteryzuje zawsze stabilne zachowanie, co jest jej zaletą. Jednak jeśli sieć ma wbudowane sprzężenie zwrotne (tzn. zawiera połączenia powrotne od późniejszych do wcześniejszych neuronów), to wówczas może wykonywać bardziej skomplikowane obliczenia, w szczególności takie, które mają charakter rekurencyjny. Są też badania, z których wynika, że sieć o mniejszej liczbie neuronów, która zawiera jednak sprzężenia zwrotne, może dzięki nim wykonywać równie złożone obliczenia, jak sieć bez tych sprzężeń, zawierająca znacznie większą liczbę neuronów. Jednak nie odbywa się to tak całkiem "bezboleśnie" - na skutek krążenia sygnałów w sieci ze sprzężeniem zwrotnym (z wejścia do wyjścia i przez sprzężenie zwrotne z powrotem na wejście) może ona zachowywać się niestabilnie i mieć bardzo złożoną dynamikę, w ramach której można oczekiwać najbardziej skomplikowanych form zachowania - na przykład w formie chaosu deterministycznego. Sieci rekurencyjne są w związku z tym obiektem zainteresowania i skomplikowanych badań dla naukowców studiujących zachowania i możliwości sieci neuronowych, ale wśród praktyków, korzystających z sieci neuronowych jako ze zwykłych narzędzi obliczeniowych - jak dotąd panuje przekonanie, że do rozwiązywania rzeczywistych problemów bardziej przydatne są sieci o strukturze jednokierunkowej. Dlatego właśnie wyłącznie sieci tego typu (tzn. sieci feedforward) mogą być modelowane za pomocą ST Neural Networks.
Typowa jednokierunkowa sieć neuronowa została przedstawiona na poniższym rysunku. Warto jeszcze raz odnotować, że neurony tworzą w tej sieci wyraźną strukturę warstwową. Warstwa wejściowa służy do wprowadzenia do sieci wartości zmiennych wejściowych. Warstwy ukryte przetwarzają sygnały w ten sposób, że wypracowują pewne dane pośrednie (pomocnicze), stanowiące potem podstawę dla procesu wyznaczania ostatecznego rozwiązania. Natomiast samo to końcowe rozwiązanie, będące rezultatem pracy całej sieci, wyznaczane jest przez warstwę wyjściową. W ten sposób każda warstwa ma w sieci swoje określone miejsce i spełnia określone zadania.
Warto tu dodać jedną uwagę odnoszącą się do wiarygodności biologicznej takiej właśnie budowy sieci. Otóż łatwo wykazać, że warstwowa budowa powszechnie używanych sieci neuronowych nie wynika bynajmniej z biologicznych przesłanek. Wprawdzie w biologicznych strukturach neuronowych występują niekiedy neurony tworzące warstwy (na przykład w niektórych obszarach kory mózgowej, a także w siatkówce oka, która jest - embriologicznie rzecz ujmując -przeobrażoną częścią mózgu). Jednak w naturalnych biologicznych sieciach neuronowych równie często spotyka się inne
#8
organizacje i inne struktury połączeń współpracujących ze sobą neuronów (na przykład "gniazdowa" architektura struktury sieci neuronowej występującej w korze móżdżku w powiązaniu z systemami tzw. komórek Purkiniego, włókien kiciastych i włókien pnących). Dlatego wybór struktury warstwowej jako standardowo i rutynowo stosowanej w sztucznych sieciach neuronowych podyktowany jest głównie wygodną prostotą takiego rozwiązania.
Sieć o budowie warstwowej daje się łatwo zdefiniować i szczegółowo opisać nawet w tym przypadku, gdy liczba neuronów wchodzących w skład takiej sieci jest bardzo duża. Dla pełnego zdefiniowania sieci warstwowej wystarczy bowiem podać liczbę warstw i liczbę neuronów w każdej warstwie. Przy innej, w szczególności tzw. dowolnej architekturze sieci - wysiłek związany z definicją jej topologii może być nieakceptowalnie duży. Po drugie, organizacja i kontrola obliczeń w sieci warstwowej jest szczególnie efektywna i szczególnie łatwa. Wystarczy stworzyć algorytm opisujący działanie pojedynczego neuronu i potem wykonywać go w podwójnej pętli - jednej "chodzącej" po kolejnych warstwach i drugiej przebiegającej pozycje kolejnych neuronów w danej warstwie. Powoduje to, że symulacja sieci neuronowej warstwowej przy pomocy programu komputerowego (a tak właśnie pracuje ST Neural Networks) może być bardzo sprawna obliczeniowo, a przez to w miarę szybka i wygodna dla użytkownika. Przy innej organizacji sieci nadzór nad przebiegiem obliczeń mógłby być znacznie bardziej kosztowny.
Kolejnym problemem wymagającym wyjaśnienia jest kwestia, jak neurony sieci mają być ze sobą łączone. Jak wiadomo, struktura połączeń ma wpływ na działanie sieci, więc jej racjonalny wybór może znacznie przyspieszyć proces jej uczenia. Jaką jednak strukturę wybrać?
Żeby odpowiedzieć na to pytanie, można odwołać się do następującego rozumowania. Jednym z ważnych powodów stosowania sieci neuronowych jest fakt, że dla zadań, które chcemy powierzyć do rozwiązania budowanej sieci, - nie znamy dostatecznie dobrej algorytmicznej metody ich rozwiązywania. Jednak skoro nie wiemy, jak postawione zadanie trzeba rozwiązywać (chcemy, żeby sieć sama to ustaliła na podstawie przykładów podawanych w trakcie uczenia), to zwykle nie wiemy również z góry, jakie drogi przesyłania sygnałów będą przy tym rozwiązywaniu potrzebne, a jakie nie. Nie potrafimy zatem a priori powiedzieć, które połączenia w sieci są potrzebne, a które nie. Zresztą gdybyśmy nawet znali takie pożądane drogi połączeń, to zaprogramowanie ich przy definiowaniu struktury dużej sieci może być bardzo czasochłonne, a przez to nie akceptowane przez użytkownika. Uświadommy sobie, że przy sieci mającej n neuronów trzeba by było rozważyć i potencjalnie nA2 możliwych połączeń i o każdym z nich zadecydować - czy ma ono w budowanej sieci występować, czy nie? Takie "ręczne" j
definiowanie struktury sieci byłoby więc bardzo kłopotliwe (skąd wziąć pewność, że to właśnie połączenie wolno pominąć?) i bardzo czasochłonne. Użytkownik tego z reguły nie lubi, zatem potrzebne jest inne rozwiązanie: proste, szybkie i nie wymagające bolesnego myślenia.
Takim rozwiązaniem jest połączenie typu "każdy z każdym". Przy przyjęciu tej zasady każdy neuron ukryty i każdy neuron wyjściowy połączony jest z każdym neuronem z warstwy poprzedniej. Taka reguła łączenia jest obliczeniowo raczej kosztowna - przy n łączonych neuronach mamy w tym przypadku (n-1) n/2 aktywnych połączeń, co powoduje, że symulujący sieć neuronową komputer musi mieć duży zapas pamięci w celu zapisania wartości wszystkich występujących w tych połączeniach współczynników wagowych.
Jednak jest to cena, którą warto zapłacić, gdyż dzięki zdefiniowaniu połączeń według zasady "każdy z każdym" niczego się z góry nie wyklucza i dopiero proces uczenia formuje ostateczną strukturę sieci, ustalając niezerowe wartości współczynników wagowych tylko na niektórych (na ogół relatywnie nielicznych) drogach
#9
przepływu sygnałów. Te połączenia, dla których proces uczenia ustali zerowe (lub ogólniej - bardzo małe) bezwzględne wartości współczynników wag, traktować można jako nieistniejące w sieci. Połączenia takie można potem z sieci całkowicie usunąć, bo sygnały przesyłane na tych drogach, przemnażane przez przyporządkowane im zerowe (lub bardzo małe) współczynniki wagowe - i tak nie mają praktycznie żadnego znaczenia w procesie przetwarzania informacji i "nie liczą się" przy ustalaniu wyjściowego sygnału przez całą sieć.
Zastanówmy się teraz przez chwilę, jak działa sieć neuronowa modelowana przez komputer. W rzeczywistej, biologicznej sieci neuronowej (będącej po prostu fragmentem mózgu człowieka) wszystkie neurony pracują równocześnie, tworząc kolektywnie ostateczny wynik przetwarzania informacji. O takim sposobie pracy mówimy, że odpowiednie jednostki przetwarzające informację działają współbieżnie.
Dzięki współbieżnej pracy setek i tysięcy neuronów mózg jest zdolny do wypracowania "wyniku obliczeń" (w postaci reakcji na określone wrażenia zmysłowe) w bardzo krótkim czasie -mimo obiektywnie bardzo powolnej pracy białkowych "procesorów" składających się na jego biologiczną strukturę.
W sztucznych sieciach neuronowych, realizowanych jako specjalizowane układy elektroniczne, także mamy do czynienia z podobnym, współbieżnym przetwarzaniem informacji, ale ze względu na specyfikę elektroniki - na ogół znacznie szybszym. "Znacznie szybszy" oznacza w tym przypadku rzeczywiście dużą różnicę szybkości, ponieważ łatwo obliczyć, że elektroniczny model neuronu jest około milion razy szybszy od swojego biologicznego odpowiednika! W związku z tym sztuczne sieci neuronowe, budowane jako specjalizowane procesory (tak zwane neurokomputery), są obecnie jednymi z najszybszych układów obliczeniowych, jakie w ogóle istnieją.
Elektroniczne sztuczne sieci neuronowe mimo swoich zalet są jednak nadal kosztowną rzadkością - mimo uruchomienia przez większość firm produkujących podzespoły elektroniczne seryjnej produkcji układów scalonych, będących ich podstawowym tworzywem. W związku z tym typowe zastosowanie sieci neuronowej polega na tym, że na zwykłym komputerze (wcale nie działającym współbieżnie) uruchamiany jest program (taki, jak właśnie STNeural Networks) symulujący funkcjonowanie sieci. Przyjrzyjmy się teraz, jak taka symulacja przebiega.
W trakcie roboczego uruchamiania sieci wartości wszystkich zmiennych wejściowych, stanowiące dane dla procesu obliczeniowego, są najpierw wprowadzane do neuronów wejściowych sieci. Następnie program symulacyjny dokonuje procesu przesyłania sygnałów i uruchamia algorytm modelujący pracę pojedynczego neuronu po kolei wszystkich neuronów ukrytych i wyjściowych. Każdy z nich wyznacza najpierw wartość swojego pobudzenia, poprzez obliczenie sumy ważonych wyjść neuronów znajdujących się w warstwie poprzedniej i pomniejszenie jej o wartość progową. Wyznaczony poziom pobudzenia wprowadzany jest do funkcji aktywacji w celu wyznaczenia wartości wyjściowej neuronu. Kiedy cała sieć zostanie już w ten sposób przeliczona, wartości wyjściowe neuronów warstwy wyjściowej stają się wartościami wyjściowymi całej sieci (czyli rozwiązaniami postawionego sieci zadania).
Opisany wyżej przebieg procesu symulacji dotyczy jednorazowego uruchomienia sieci w celu jej praktycznego użycia i wykorzystania zawartej w niej wiedzy (zgromadzonej wcześniej w toku procesu uczenia). Znacznie bardziej złożone
#10
procesy obliczeniowe muszą zachodzić w symulatorze sieci, gdy poddawana jest ona procesowi uczenia i nabywa (na podstawie pokazywanych jej przykładów) wiedzy o naturze i właściwościach rozwiązywanego zadania. Co więcej, w procesie uczenia wymagamy od sieci także praktycznych zdolności rozwiązywania zadań, podobnych do tych, jakie były w zbiorze uczącym - chociaż nie koniecznie identycznych (ucząca się sieć potrafi uogólniać zdobytą wiedzę!). Wiąże się to z raczej skomplikowanymi wyliczeniami, jakie muszą być wykonywane w symulacyjnym modelu sieci.

$Korzystanie z sieci neuronowej

W poprzedniej sekcji opisano, stosując uproszczoną terminologię, w jaki sposób sieć neuronowa przekształca wartości wejściowe w wyjściowe. Kolejne ważne pytanie, na które spróbujemy odpowiedzieć, dotyczy sposobu postępowania, jaki należy zachować w celu znalezienia całościowego rozwiązania zastosowania sieci neuronowej dla rozwiązania konkretnego praktycznego problemu.
Najpierw zastanówmy się, jaki to może być problem.
Zakres problemów rozwiązywanych przez sieci neuronowe jest wyznaczony przez sposób działania sieci oraz zastosowaną metodę uczenia. Jak już wiemy, do sieci neuronowych wprowadza się pewne zmienne wejściowe (czyli dane), jej wyjścia zaś definiują zmienne wyjściowe (czyli rozwiązania). Nic więcej sieci nie potrafią. Dlatego też mogą one być stosowane wszędzie tam, gdzie na podstawie pewnych znanych informacji wnioskuje się o pewnych nieznanych informacjach (Patterson, 1996; Fausett, 1994). Za przykłady zadań opisanego typu mogą posłużyć:
Predykcja na rynku akcji. Znane są wtedy na przykład ceny akcji pochodzące z ubiegłego tygodnia i bieżąca wartość indeksu FTSE. Sieć powinna określić jutrzejszą (prawdopodobną) cenę akcji.
Udzielanie kredytu. Sieć musi określić ryzyko związane z udzieleniem pożyczki osobie, która złożyła odpowiedni wniosek. Znane są dane dotyczące kredytobiorcy, na przykład dochody tej osoby, informacja dotycząca spłat wcześniej udzielonych kredytów, dane dotyczące biznesplanu itd. To są w rozważanym przypadku dane wejściowe, natomiast daną wyjściową może być zmienna klasyfikująca o wartościach: "bardzo wiarygodny", "mało wiarygodny" itd.
Sterowanie. Sieć musi odpowiedzieć na pytanie, jak sterować pewnym systemem, na przykład musi ustalić, czy poruszający się w sztucznym środowisku (labiryncie) robot powinien skręcić w lewo, czy w prawo, czy też iść prosto, aby osiągnąć zadany punkt przeznaczenia. W chwili podejmowania decyzji znany jest jedynie obraz rejestrowany aktualnie przez kamerę robota, natomiast nie jest dostępny plan labiryntu.
Takie i podobne zadania rozwiązuje się z wykorzystaniem sieci neuronowych, przy czym bardzo często okazuje się, że rozwiązania uzyskane za pomocą sieci są znacznie lepsze, niż rozwiązania uzyskiwane za pomocą innych technik i innych metod.
Jest jednak sprawą oczywistą, że nie każdy problem może być rozwiązany za pomocą sieci neuronowych. Na przykład, jeśli ktoś chciałby znać wyniki losowania Totolotka, które odbędzie się w przyszłym tygodniu, a znałby jako daną wejściowa tylko numer własnego buta, to ani sieć neuronowa, ani żadna inna technika nie jest w stanie mu dostarczyć wymaganej procedury obliczeniowej. Po prostu nie istnieje reguła (ani neuronowa, ani żadna inna), która na podstawie dostępnej danej (numer buta) pozwoliłaby wyznaczyć wartość potrzebnej zmiennej wyjściowej (numery "szczęśliwych" liczb podczas losowania loterii).
W rozważanym tu przypadku sprawa jest w miarę prosta, ponieważ jest rzeczą z góry wiadomą, że
#11
nie istnieje żaden związek pomiędzy rozważanymi wartościami. W rzeczywistości, jeśli losowanie Totolotka przeprowadzane jest prawidłowo, to w ogóle nie istnieją fakty, których znajomość pozwoliłaby wnioskować o przyszłotygodniowych wynikach, zatem nikt rozsądny nie będzie wymagał, żeby sieć neuronowa przeprowadziła w tej sprawie skuteczną prognozę.
Wiele mówi się jednak w różnych okolicznościach o możliwościach prognozowania procesów gospodarczych za pomocą sieci neuronowych. Tutaj sytuacja na pozór jest racjonalnie dobrze postawiona: określone procesy z przeszłości (na przykład wcześniejsze zmiany notowań giełdowych) mają wpływ na przyszłe zdarzenia (na przykład na ceny akcji podczas kolejnej sesji). Z tego powodu oczekiwanie, że sieci neuronowe mogą dostarczyć użytecznych prognoz giełdowych nie jest tak całkiem pozbawione racjonalnych podstaw. Pogląd na temat użyteczności prognoz gospodarczych tworzonych przez sieci neuronowe utrwalił się też w następstwie publikowania przez pierwszych badaczy tego zagadnienia bardzo optymistycznych wyników, uzyskiwanych w oparciu o rzeczywiste dane giełdowe, ale drogą symulacji zakupów, a nie rzeczywistej gry na giełdzie. Przystępując do problemu wykorzystania sieci neuronowych do prognozowania procesów gospodarczych w obecnej sytuacji rynkowej, trzeba jednak uwzględnić jeden dodatkowy, bardzo istotny czynnik.
Otóż obecnie bardzo wiele instytucji finansowych używa już rutynowo sieci neuronowych do prognozowania cen akcji (lub prowadzi badania w tym zakresie). Z tego powodu najprawdopodobniej trendy przewidywalne przy użyciu techniki neuronowej są już "zdyskontowane" przez rynek i jest mało prawdopodobne, aby początkujący badacz, stosując tę technikę, mógł osiągnąć sukces finansowy na tym polu. Warto to wyraźnie zasygnalizować wszystkim, którzy dopiero teraz "odkryli" sieci neuronowe i pokładają w nich nadmiernie duże nadzieje.
Dlatego też, rekomendując korzystanie z sieci neuronowych w wielu dziedzinach, sformułować można kolejny ważny wymóg związany z ich użyciem: badacz sieci neuronowych musi wiedzieć (lub przynajmniej musi mieć mocne podejrzenia), że istnieje zależność pomiędzy proponowanymi, znanymi sygnałami (traktowanymi jako wejścia sieci) a nieznanymi wartościami wynikowymi, które chciałby związać z jej wyjściami. Zależność ta może być nieznana co do swojego charakteru (to ustali sama sieć w trakcie procesu ucznia) a także w konkretnych przykładach zgromadzonych w formie zbioru uczącego może być mało czytelna, ponieważ w każdym konkretnym przypadku ogólna (nieznana, ale istniejąca) prawidłowość może być zniekształcona przez szumy - jednak dla sensownego zastosowania sieci Konieczne jest, żeby ta konkretna zależność ( istniała i miała charakter regularny i powtarzalny. Warto dodać, że problem szumu w danych wejściowych generalnie w technice sieci neuronowych nie jest problemem krytycznym. Odpowiednio nauczona sieć neuronowa potrafi bowiem dość skutecznie "odfiltrować" szum i prowadzić obliczenia w oparciu o wypadkowe (uśrednione) tendencje i trendy, jakkolwiek na skutek tego również na etapie eksploatacji sieci drobne subtelności w danych wejściowych nie będą miały wpływu na uzyskiwane odpowiedzi sieci, co z pewnością obniża trafność i precyzję neuronowych prognoz. Wiedząc o tym, z pewnością nikt rozsądny nie będzie oczekiwał, że czynniki znane w trakcie prognozowania na rynku akcji umożliwią określenie dokładnej prognozy ceny akcji. Jest to niemożliwe także i z tego powodu, że na ceny mają również wpływ inne czynniki, które nie zostały uwzględnione w zbiorze wejściowym, podawanym sieci jako zbiór uczący lub zbiór testowy. Niepowodzenie przy próbach prognozowania (czegokolwiek - cen, kursów, pogody, stanu wody w rzekach itp.) przy stosowaniu sieci neuronowych może się pojawić również dlatego, że na przebieg modelowanego zjawiska może dominująco wpływać składnik czysto losowy, trzeba więc zawsze zachować dużą ostrożność wobec oczekiwanych wyników.
#12
Ogólnie mówiąc, opisany wyżej stan niepewności jest dosyć częstą cechą obliczeń neuronowych. Wynika to z faktu, że osoba korzystająca z sieci neuronowych z reguły nie zna dokładnej natury związku pomiędzy wejściami a wyjściami. Jeśli znałaby tę zależność, to mogłaby zdefiniować bezpośrednio jej model bez odwoływania się do sieci i ryzykownego mechanizmu uczenia. Zajmiemy się teraz nieco dokładniej tym mechanizmem.
Jak wiadomo, szczególnie istotną cechą sieci neuronowych jest to, że nabywają one umiejętności opisu zależności wejścia - wyjścia właśnie w trakcie procesu uczenia. Istnieją dwa typy algorytmów stosowanych do uczenia sieci neuronowych, które stosowane są w zależności od rodzaju używanej sieci. Występuje uczenie z nauczycielem oraz uczenie bez nauczyciela. Znacznie częściej stosowany jest pierwszy rodzaj uczenia i to on zostanie omówiony w bieżącej sekcji. Uczenie bez nauczyciela (nazywane też samouczeniem) zostanie opisane i bliżej scharakteryzowane w późniejszych sekcjach.
Chcąc zastosować uczenie z nauczycielem, użytkownik sieci musi najpierw zgromadzić zbiór danych uczących. Dane te zawierają przykłady wejść oraz odpowiadających im wartości wyjściowych. Można powiedzieć, że są to przykłady zadań wraz z rozwiązaniami: zbiór przykładowych danych wejściowych definiuje pewne zadanie, zaś skojarzona z tym zbiorem wartość danej wyjściowej (jednej lub kilku) -stanowi rozwiązanie tego przykładowego zadania. Sieć uczy się wnioskować na temat sposobu rozwiązywania stawianych jej zadań, dokonując analizy przykładowych danych wejściowych i wyjściowych, zmierzającej do ujawnienia natury występującej pomiędzy nimi zależności.
Dane uczące pochodzą najczęściej z zapisów historycznych. W powyżej przytoczonych przykładach mogłyby one zawierać wcześniejsze ceny akcji i wartości indeksu FTSE powiązane z informacją o kierunku zmian przyszłych notowań albo informacje obejmujące dane zawarte we wcześniejszych, pozytywnie rozpatrzonych wnioskach kredytowych, powiązane z informacją o ewentualnym wystąpieniu późniejszych zaniedbań w spłatach. W podobny sposób można rozpatrywać dane dotyczące przykładowych pozycji robota i właściwego sposobu reakcji na zarejestrowane sygnały sensoryczne, a także wiele innych danych gromadzonych i udostępnianych różnym sieciom neuronowym w charakterze ich zbiorów uczących.
Po zgromadzeniu odpowiedniej liczby danych uczących można je zacząć wykorzystywać do uczenia sieci. Sieć neuronowa jest uczona w ten sposób, że jej parametry (współczynniki wag i progi neuronów) są w celowy sposób zmieniane przy użyciu wybranego algorytmu uczenia
z nauczycielem. Najbardziej znanym przykładem takiego algorytmu jest algorytm wstecznej propagacji błędów (tzw. backpropagation), zaproponowany przez Rumelharta (Rumelhart i in., 1986). Algorytm ten w oparciu o zgromadzone dane modyfikuje wagi i wartości progowe sieci w sposób zapewniający minimalizację błędu popełnianego przez sieć podczas wykonywania postawionych jej zadań (na przykład błędu predykcji) dla wszystkich danych wchodzących w skład zbioru uczącego.
Poprawnie nauczona sieć potrafi modelować zadaną funkcję (a priori nieznaną użytkownikowi, więc niemożliwą do bezpośredniego zaprogramowania), także w przypadku, gdy funkcja ta ma nieoczekiwanie złożoną, na przykład silnie nieliniową, postać. Taka samodzielnie "odkryta" przez sieć w trakcie uczenia skomplikowana funkcja, która wiąże zmienne wejściowe ze zmiennymi wyjściowymi, może zostać użyta do różnych celów, między innymi do predykcji nieznanych wartości wyjściowych.

$Gromadzenie danych dla sieci neuronowych

Po podjęciu decyzji dotyczącej zastosowania sieci neuronowych do rozwiązania określonego problemu należy zebrać dane niezbędne w procesie uczenia. Jak już powiedziano wyżej, zbiór danych
#13
uczących zawiera pewną liczbę przypadków, z których każdy zawiera wartości dostępnych zmiennych wejściowych i wyjściowych. Pierwsze z podejmowanych przy budowie sieci strategicznych decyzji muszą określać, które zmienne powinny zostać uwzględnione i ile a także jakie przypadki należy zgromadzić.
Wybierając zmienne (przynajmniej początkowy ich zestaw), użytkownik kieruje się intuicją. Posiadana przez niego znajomość specyfiki badanych zagadnień jest podstawą do pewnych wyobrażeń dotyczących wyboru sygnałów oddziaływających na wyjścia sieci, którym zamierzamy nadać status zmiennych wejściowych. W ST Neural Networks można samodzielnie uwzględnić lub wykluczyć zmienne, ale dostępna jest też wygodna opcja wyboru automatycznego, polegająca na tym, że program może na drodze przeprowadzonych eksperymentów sam określić przydatny zestaw zmiennych. Przy pierwszej próbie tworzenia sieci dla rozwiązania określonego zadania użytkownik powinien uwzględnić wszystkie zmienne, które, według niego, mogą mieć znaczenie, gdyż potem, na etapie projektowania, zbiór ten będzie redukowany.
Sieci neuronowe przetwarzają wyłącznie dane numeryczne należące do ściśle określonego przedziału. Stwarza to problemy w tych sytuacjach, gdy dane należą do innego przedziału, jeśli występują braki w danych, lub też, gdy dane mają charakter nienumeryczny. Na szczęście w ST Neural Networks znajdują się mechanizmy pozwalające na rozwiązanie każdego z tych problemów.
Dane numeryczne są przeskalowywane do właściwego dla sieci przedziału, przy czym może to być wykonywane automatycznie lub sterowane przez użytkownika. Z kolei wartości brakujące są zastępowane wartościami średnimi (lub innymi statystykami), obliczanymi na podstawie wartości zmiennych dostępnych w ciągu uczącym (Bishop, 1995).
Operowanie na wartościach nienumerycznych jest trochę bardziej skomplikowane. Najczęściej
występujący typ danych nienumerycznych składa się z wartości nominalnych, takich jak Pleć = {Mężczyzna, Kobieta}. Zmienne o wartościach nominalnych mogą być reprezentowane w sposób numeryczny i takie rozwiązanie jest dostępne w ST Neural Networks. Jednakże sieci neuronowe nie sprawdzają się zbyt dobrze w trakcie działań na zmiennych nominalnych posiadających znaczną liczbę możliwych wartości.
Jako przykład rozważyć można sieć uczoną w celu szacowania wartości domów. Cena domu zależy w dużej mierze od obszaru miasta, w którym jest on zlokalizowany. Rozpatrywane miasto może być podzielone na bardzo dużą liczbę dzielnic, z których każda posiada swoją nazwę. Wydaje się, iż w takim przypadku naturalnym rozwiązaniem będzie użycie zmiennej o wartościach nominalnych, która reprezentować będzie możliwe lokalizacje. Niestety, przeprowadzenie w takich warunkach procesu uczenia sieci będzie bardzo trudne, bo związek pomiędzy nazwą dzielnicy (lub przypisaną tej nazwie wartością numeryczną, która może być traktowana jako jej numer) a wyceną nieruchomości z pewnością będzie mało czytelny, a przez to trudny do formalnego odwzorowania -także i przez sieć neuronową. Dlatego bardziej wskazane byłoby przypisanie każdej dzielnicy odpowiednich rang (określonych przy pomocy / ekspertów), wskazujących na stopień "atrakcyjności" danej dzielnicy, a następnie używanie tych właśnie rang jako odpowiedniego sygnału wejściowego dla sieci - zamiast nazw.
Inne rodzaje zmiennych nienumerycznych także muszą zostać przekształcone do postaci numerycznej - lub należy je odrzucić. Informacje dotyczące daty oraz czasu, jeśli są istotne, należy przekształcić na wartości określające różnicę pomiędzy daną wartością a pewną datą lub czasem początkowym. Wartości walut można przekształcić w prosty sposób. Niepowiązane z innymi wartościami pola tekstowe (określające na przykład nazwy), które nie mogą być przetwarzane w opisany sposób, powinny zostać raczej pominięte, bo próba ich uwzględniania w modelu przyniesie więcej szkody niż korzyści.
#14
Określenie rozmiaru zbioru uczącego, czyli właściwej liczby przypadków wymaganych do nauczenia sieci neuronowej, stwarza w ogólności istotne problemy. Istnieją pewne reguły heurystyczne, które uzależniają liczbę wymaganych przypadków od rozmiaru sieci. Najprostsza z nich mówi, że liczba przypadków powinna być dziesięciokrotnie większa od liczby połączeń występujących w sieci. W rzeczywistości liczba potrzebnych przypadków jest również uzależniona od złożoności zależności funkcyjnej poddawanej modelowaniu. Jednak zależność ta ma z reguły nieznaną postać, trudno jest więc podać naprawdę wyczerpujący i trafny przepis, określający, ile elementów ciągu uczącego jest naprawdę nieodzownych.
W trakcie zwiększania liczby zmiennych determinujących poszukiwaną funkcję odtwarzaną przez sieć neuronową liczba wymaganych przypadków rośnie nieliniowo, co powoduje, że nawet przy dość małej liczbie zmiennych (rzędu pięćdziesiąt lub mniej) wymagana (teoretycznie) liczba przypadków wchodzących w skład zbioru uczącego jest naprawdę ogromna. Problem ten określany jest w literaturze jako "przekleństwo wielowymiarowości" i zostanie omówiony w dalszej części tego rozdziału.
W relatywnie prostych zagadnieniach, rozważanych najczęściej w praktyce, liczba wymaganych przypadków budujących zbiór uczący sięga rzędu setek lub tysięcy. W przypadku bardzo złożonych problemów może być wymagana większa ich liczba; bardzo rzadko zaś wystarczająca liczba przypadków jest mniejsza od stu (ma to miejsce wyłącznie przy rozwiązywaniu bardzo prostych problemów). W przypadku posiadania mniejszych zbiorów danych należy zdawać sobie sprawę z faktu, że zmuszeni jesteśmy używać sieci niedostatecznie nauczonej, z powodu braku wymaganej do przeprowadzenia zadowalającego uczenia sieci ilości informacji w zbiorze uczącym. W takiej sytuacji nie należy żądać od sieci, by tworzyła ona skomplikowane i rozbudowane modele, bo takie modele zdecydowanie wymagają dużej liczby danych
uczących zanim zostaną poprawnie "dostrojone" do specyfiki rozwiązywanego zadania. Zazwyczaj w takich przypadkach najlepszym sposobem postępowania będzie dopasowanie modelu liniowego. Najprawdopodobniej błąd, jaki będzie w tych warunkach popełniany na skutek użycia zbyt uproszczonego (wręcz prymitywnego) modelu, będzie mniejszy, niż błąd wynikły z niedostatecznego douczenia sieci tworzącej bardziej złożony (i zapewne bardziej adekwatny model). ST Neural Networks posiada możliwość dopasowywania do danych modeli z założenia liniowych, które nie muszą wtedy być modelami neuronowymi (porównaj opis sieci liniowych oraz opis modułu regresja wielokrotna w STATISTICA).
Rozwiązywanie wielu rzeczywistych problemów bywa także utrudnione z uwagi na niepełnowartościowość danych tworzących zbiór liczący. Ta niepełnowartościowość przejawia się w tym, że odpowiednie dane są w odpowiednim zbiorze, ale nie wnoszą tak wiele informacji, jak powinny. Przyczyny tego mogą być różne. Na przykład wartości pewnych zmiennych mogą być zniekształcone przez występujące szumy albo też niektóre zestawy danych mogą być niekompletne, ponieważ pewnych wartości wejściowych lub wyjściowych może w nich brakować. ST Neural Networks posiada wprawdzie specjalizowane mechanizmy obsługujące braki w danych (wartości brakujące mogą zostać zastąpione wartością średnią lub innymi statystykami), co umożliwia (w przypadku odczuwalnego braku odpowiedniej liczby przypadków uczących) uwzględnienie w trakcie uczenia obserwacji, w których występują braki. Jednak gdy liczba przypadków zgromadzonych w zbiorze uczącym jest wystarczająco duża, to lepiej z tej możliwości nie korzystać, ponieważ uczenie sieci na podstawie obserwacji z oszacowanymi statystycznie brakami danych zdecydowanie nie jest wskazane.
Sądzi się również powszechnie, że sieci neuronowe są odporne na szumy. Oczywiście jest tak w rzeczywistości, jednak odporność ta ma swoje granice. Na przykład, jeśli w ciągu uczącym występują przypadkowe wartości, w znacznym
#15
stopniu odbiegające od typowych wartości zmiennej, może to stać się przyczyną pojawienia się zakłóceń (tak zwanych obciążeń) w procesie uczenia. Za najlepsze podejście w stosunku do takich wartości nietypowych należy uznać przeprowadzenie ich identyfikacji (to znaczy wykrycie, że te właśnie dane można uznać za nietypowe), a następnie ich usunięcie. Wyeliminowanie nietypowych danych ze zbioru uczącego może być dokonane albo poprzez usunięcie ze zbioru całego "obciążonego" przypadku, albo poprzez przekształcenie wartości nietypowej w wartość brakującą. Jeśli na tym etapie przygotowań do uczenia sieci pojawią się problemy z identyfikacją wartości nietypowych, to można skorzystać z dostępnych w STNeural Networks narzędzi zmniejszających wpływ wartości nietypowych na przebieg uczenia. Osiąga się to poprzez użycie funkcji błędu opartej na definicji odległości "miejskiej" (zwanej też uliczną, por. Bishop, 1995), a nie typowej, euklidesowej. Stosując ten zabieg, należy jednak pamiętać, że procedura ucząca odporna na wartości nietypowe charakteryzuje się mniejszą efektywnością w porównaniu z podejściem standardowym.

$Streszczenie

W trakcie prezentowanych wyżej rozważań stwierdzono, że przygotowując się do zbudowania sieci neuronowej, badacz powinien wybierać takie zmienne, które, według jego opinii, mogą wpływać na przebieg modelowanego zjawiska.
Wartości numeryczne i nominalne mogą być wykorzystane bezpośrednio w STNeural Networks. Zmienne innego typu muszą zostać przekształcone do jednej z tych postaci lub należy je odrzucić.
Liczba niezbędnych przypadków jest rzędu setek lub tysięcy; uwzględnienie większej liczby zmiennych zwiększa wymagania co do liczby wymaganych przypadków. STNeural Networks posiada narzędzia ułatwiające identyfikację nieprzydatnych zmiennych, dlatego w początkowej
fazie badań można uwzględnić również takie zmienne, co do przydatności których badacz ma pewne wątpliwości.
Jeśli zachodzi taka potrzeba, to można użyć przypadków, w których występują brakujące wartości. Wartości nietypowe mogą być przyczyną problemów. Dlatego, jeśli jest to możliwe, należy wartości nietypowe usunąć. Jeżeli liczba przypadków jest dostatecznie duża, to należy także odrzucić przypadki z brakami w danych.

$Pre- i postprocessing

Niezależnie od typu, każda sieć neuronowa korzysta z numerycznych wartości wejściowych i wyznacza numeryczne wartości wyjściowe. Stosowane typowo funkcje przejścia neuronu nie określają wprawdzie wymagań co do zakresu wartości wejściowych, generują jednak wartości wyjściowe należące do ściśle określonego zakresu. Na granicach tego dopuszczalnego przedziału wartości pojawia się w charakterystyce neuronu efekt "nasycenia". Ze względu na jego występowanie wspomniane wyżej stwierdzenie, że wartości wejściowe mogą należeć do dowolnego przedziału, ma raczej akademicki charakter. W rzeczywistości właśnie z uwagi na występowanie efektu nasycenia neuron jest wrażliwy wyłącznie na wartości wejściowe, należące do ograniczonego przedziału.

FUNKCJA LOGISTYCZNA

Powyższy rysunek przedstawia jedną z najczęściej stosowanych funkcji przejścia - tak zwaną funkcję
#16
logistyczną. Funkcja ta określana jest czasami także mianem funkcji sigmoidalnej; chociaż, ściśle mówiąc, jest to tylko jeden z przykładów funkcji sigmoidalnej (funkcji S - kształtnej). W przypadku użycia funkcji logistycznej wartość wyjściowa neuronu znajduje się zawsze w przedziale (0; 1), natomiast przedział wartości wejściowych, na które funkcja jest wrażliwa jest niewiele większy od przedziału (-1; +1). Funkcja logistyczna jest to funkcja gładka i łatwo różniczkowalna - cechy te umożliwiają działanie algorytmowi uczenia sieci. Warto przypomnieć, że niespełnienie tych warunków (tzn. wymagania, by funkcja była gładka i łatwo różniczkowalna) w przypadku omawianej wcześniej funkcji progowej sprawia, że nie jest ona w praktyce stosowana.
Ograniczony zakres możliwych odpowiedzi sieci w powiązaniu z wymogiem korzystania wyłącznie z informacji w postaci numerycznej pociąga za sobą konieczność stosowania w aplikacjach neuronowych etapu wstępnego przetwarzania danych wejściowych przed ich podaniem na wejścia sieci (tzw. preprocessingu) i procesu algorytmicznego przekształcenia i odpowiedniej interpretacji danych wyjściowych otrzymywanych z sieci (tzw.postprocessingu) (Bishop, 1995). Możliwości wykonywania wspomnianych przekształceń danych wejściowych i danych wyjściowych dostępne są w STNeural Networks w postaci całego zestawu różnych opcji. Nie będziemy ich tu teraz wszystkich analizować, należy jednak w tym miejscu zwrócić uwagę na dwa rodzaje najbardziej typowo występujących przekształceń:
Skalowanie. Wartości numeryczne podawane z zewnątrz muszą zostać przeskalowane do przedziału odpowiedniego dla sieci. W typowych przypadkach dane surowe skalowane są w sposób' liniowy. STNeural Networks udostępnia procedurę skalowania typu minimax oraz skalowanie typu średnia - odchylenie standardowe, które automatycznie wyznaczają współczynniki skalowania przekształcające wartości numeryczne do zadanego przedziału.
W pewnych okolicznościach wskazane jest skalowanie nieliniowe (na przykład w przypadku zmiennej o rozkładzie wykładniczym wskazane być może wykonanie logarytmowania). Skalowanie nieliniowe nie jest realizowane przez STNeural Networks. Ale przed transferem danych do STNeural Networks można zrealizować wspomniany sposób skalowania zmiennej, korzystając z programu STATISTICA.
Wartości nominalne. Zmienne nominalne mogą mieć charakter dwustanowy (na przykład: Pleć = {Mężczyzna, Kobieta}) lub wielostanowy (występują wówczas więcej niż dwa stany). Dwustanowe zmienne nominalne w prosty sposób reprezentowane są w sieci poprzez zastosowanie przekształcenia do postaci numerycznej (na przykład: Mężczyzna = 0, Kobieta = 1). Operowanie na zmiennych wielostanowych jest trudniejsze. Mogą być one reprezentowane za pomocą pojedynczej wartości numerycznej (np. Pies = 0, Papużka falista = 1, Kot = 2), ale powoduje to (prawdopodobnie) fałszywe uporządkowanie wartości nominalnych, które może fałszować ich rzeczywiste znaczenie. W omówionym wyżej przypadku sieć neuronowa,-może zostać zdezinformowana przez system kodowania, sugerujący, że - w pewnym sensie -papużka falista znajduje się pomiędzy psem a kotem.
Lepszym rozwiązaniem, znanym jako kodowanie typu jeden-z-N, jest użycie w sieci kilku zmiennych numerycznych do reprezentacji pojedynczej zmiennej nominalnej. Liczba zmiennych numerycznych jest wtedy równa liczbie możliwych wartości zmiennej nominalnej; jedna z tych N wartości przyjmuje wartość równą 1, zaś pozostałe wartość 0. Przykład takiego kodowania dla podanej wyżej zmiennej nominalnej wskazującej nazwy zwierząt wymagałby użycia zamiast jednej zmiennej nominalnej trzech zmiennych numerycznych i wówczas np. można by użyć kodowania: Pies = {1,0,0}, Papużka falista = {0,1,0}, Kot = {0,0,1}.
ST Neural Networks posiada mechanizmy przekształcające zarówno dwustanowe, jak
#17
i wielostanowe zmienne nominalne do postaci, w której mogły być przetwarzane przez sieć neuronową. Problem pojawia się w przypadku zmiennych nominalnych o dużej liczbie możliwych stanów, ponieważ wówczas liczba zmiennych numerycznych, wymagana do realizacji kodowania typujeden-z-N, jest niemożliwa do zaakceptowania ze względu na bardzo duże rozmiary powstałej sieci, które znacznie utrudniają proces uczenia. W takich okolicznościach można (choć także nie jest to rozwiązanie w pełni zadowalające) użyć do reprezentacji zmiennej nominalnej pojedynczej zmiennej numerycznej przechowującej indeks jednej z możliwych wartości nominalnych. Lepszym rozwiązaniem może być poszukiwanie innego sposobu reprezentacji informacji.
Problemy rozwiązywane przez sieci neuronowe, na przykład problemy prognostyczne, można podzielić na dwie główne kategorie: klasyfikację i regresję.
Celem zagadnień klasyfikacyjnych jest przydzielenie rozpatrywanego przypadku do jednej ze zdefiniowanych wcześniej klas. W charakterze przykładów można podać: rozpatrywanie wniosków kredytowych (udzielić kredytu danej osobie czy też nie), wykrywanie nowotworów (wykrycie lub wykluczenie nowotworu), rozpoznawanie podpisów (fałszywy bądź autentyczny) itp. W każdym z powyższych przypadków na wyjściu wymagana jest pojedyncza zmienna nominalna. Najczęściej rozważane zagadnienia klasyfikacyjne mają charakter dwustanowy (jak w podanych powyżej przykładach), chociaż problemy wielostanowe również są często rozpatrywane.
Celem zagadnień regresyjnych jest prognozowanie wartości (zwykle ciągłej) określonej zmiennej: na przykład jutrzejszej ceny akcji, zużycia paliwa przez samochód, wysokości przyszłorocznych zysków itp. W tym przypadku na wyjściu sieci wymagana jest pojedyncza zmienna numeryczna.
W rzeczywistości sieci neuronowe mogą realizować jednocześnie kilka zagadnień
regresyjnych i/lub klasyfikacyjnych, ale zwykle każda z sieci realizuje tylko jedno zadanie. Dlatego też w dominującej liczbie przypadków sieć posiada pojedynczą zmienną wyjściową, chociaż w przypadku wielostanowych problemów klasyfikacyjnych, zmiennej tej może odpowiadać kilka neuronów wyjściowych (w trakcie postprocessingu wartości uzyskane na wyjściach tych neuronów przekształcane są w wartości odpowiedniej pojedynczej zmiennej wyjściowej -najczęściej typu nominalnego).
ST Neural Networks do rozwiązania każdego ze wspomnianych zagadnień stosuje specjalizowane narzędzia do pre- i postprocessingu. Mechanizmy te przekształcają dane surowe do postaci numerycznej dogodnej do przetwarzania przez sieć oraz przekształcają wartości wyjściowe z sieci neuronowej do postaci zgodnej z wymaganą postacią danych surowych. Sieć jest umieszczona pomiędzy warstwami realizującymi pre- oraz postprocessing, a dane zasilające ją na wejściu oraz wyniki jej działania są prezentowane w wymaganej formie. Dzięki temu sieć działa zawsze na danych reprezentowanych w takiej postaci, że są one maksymalnie dogodne do przetwarzania przez neurony, natomiast sygnały na wejściu sieci są akceptowane w takiej formie, w jakiej produkują je źródła odpowiednich danych, natomiast sygnały na wyjściu sieci (rozwiązania stawianych zadań) są optymalnie dostosowane do ich łatwej interpretacji przez użytkownika. To ostatnie dostosowanie sieci może iść tak daleko, że na przykład informacja o klasie, do której należy obiekt prezentowany na wejściu sieci może być przedstawiona poprzez podanie (po odpowiednim postprocessingu) bezpośrednio nazwy klasy. Jednakże, jeśli użytkownik sobie tego życzy, to ST Neural Networks może również dostarczyć informacji na temat wartości aktywacji neuronów wchodzących w skład sieci, co może sprzyjać dokładniejszej ocenie stopnia pewności wypracowanego przez sieć wyniku (na przykład wiarygodności podanego rozpoznania).
#18
$Perceptrony wielowarstwowe

Istnieje wiele typów i rodzajów sieci neuronowych, różniących się między sobą strukturą i zasadami działania, ale chyba najpopularniejsza obecnie architektura sieciowa związana jest z koncepcją wielowarstwowego perceptronu (MLP). Koncepcja ta została po raz pierwszy opisana przez Rumelharta oraz McClellanda (1986), a jej dokładne omówienia znajdują się w większości książek z dziedziny sieci neuronowych (np.: Tadeusiewicz, 1993; Bishop, 1995). W sposób skrótowy ten właśnie rodzaj sieci został przedstawiony (bez podawania nazwy) w poprzedniej sekcji.
Przypomnijmy: sieć składa się z wielu neuronów ułożonych w warstwy. Każdy z neuronów oblicza ważoną sumę swoich wejść, a wyznaczony w ten sposób poziom pobudzenia staje się argumentem funkcji przejścia (funkcji aktywacji), która oblicza wartość wyjściową neuronu. Neurony tworzą strukturę jednokierunkową, to znaczy przesyłanie sygnałów odbywa się w kierunku od wejścia do wyjścia - bez sprzężeń zwrotnych. Sieć można interpretować jako model typu wejście-wyjście, którego parametrami są wagi oraz wartości progowe. Sieć taka może modelować - przy odpowiedniej liczbie warstw i neuronów - funkcję o prawie dowolnej złożoności.
Określenie prawidłowej liczby warstw i neuronów w kolejnych warstwach jest bardzo ważnym etapem procesu konstrukcji perceptronu wielowarstwowego (Haykin, 1994; Bishop, 1995).
Liczba neuronów wejściowych i wyjściowych jest zdeterminowana przez rozwiązywany problem. Mogą pojawić się pewne wątpliwości związane z dokładnym określeniem wejść, ale problem ten zostanie omówiony w dalszej części. Obecnie przyjmiemy, że zmienne wejściowe zostały już wybrane (na podstawie istotnych przesłanek merytorycznych albo w sposób intuicyjny) i założymy, że nie zachodzi potrzeba ich selekcjonowania, czyli przyjmujemy, że wszystkie dostępne zmienne wejściowe są istotne. Określenie liczby warstw ukrytych i liczby neuronów znajdujących się w tych warstwach nie jest już tak proste. Jako punkt wyjścia (który jest równie dobry, jak każde inne rozwiązanie) można przyjąć sieć z jedną warstwą ukrytą, zawierającą taką liczbę neuronów, która jest równa połowie sumy liczby neuronów wejściowych i liczby neuronów wyjściowych. Problem mniej arbitralnego (ale również nie zawsze pewnego) doboru właściwej liczby warstw i liczby neuronów w warstwach zostanie dodatkowo omówiony w dalszej części podręcznika, trzeba jednak wyraźnie i jednoznacznie stwierdzić, że na ogół najlepsze wyniki otrzymuje się, wybierając te liczebności w sposób empiryczny.

$Uczenie perceptronu wielowarstwowego

Po określeniu liczby warstw oraz liczby neuronów w każdej warstwie należy dobrać wartości wag oraz wartości progowe wszystkich neuronów. Parametry te wybiera się w sposób zapewniający minimalizację błędu działania sieci (co na przykład może wiązać się z najlepszym sposobem predykcji nieznanych danych za pomocą sieci). Zadanie to jest realizowane przez algorytm uczenia.
Podstawą do automatycznej modyfikacji wag i progów, zapewniającej minimalizację wspomnianego błędu, są zebrane przykłady, czyli dane wejściowe wraz z podanymi dla nich prawidłowymi rozwiązaniami (dla zadania predykcji źródłem takich przykładów są głównie przypadki historyczne). Proces uczenia jest równoważny dopasowywaniu parametrów modelu reprezentowanego przez sieć do dostępnych danych uczących.
Aby określić błąd sieci o określonej konfiguracji optymalizowanych parametrów (wag i progów), należy uruchomić sieć dla wszystkich przypadków uczących i porównać wartości otrzymywane na wyjściu sieci z wartościami zadanymi jako wzorce poprawnych rozwiązań. Sumaryczny błąd sieci wyznaczany jest za pomocą wybranej przez badacza funkcji błędu, która dokonuje agregacji
#19
wyznaczonych różnic dla poszczególnych rozpatrywanych przykładów. Najczęściej stosowaną funkcją błędu jest suma kwadratów, przy stosowaniu której wyznaczone dla poszczególnych przykładów różnice (wartości wyliczonej przez sieć i wartości poprawnej, zawartej w ciągu uczącym jako wzorzec) są podnoszone do kwadratu, a następnie sumowane. ST Neural Networks wyznacza tak zwany błąd RMS. Jest to błąd wyznaczony w powyżej opisany sposób, który następnie zostaje znormalizowany ze względu na liczbę przypadków (uśredniony po wszystkich rozpatrywanych przykładach i po wszystkich zmiennych). W celu określenia wartości RMS z uzyskanej w ten sposób wartości błędu średniokwadratowego wyznaczony jest pierwiastek kwadratowy. Parametr RMS jest prostym i wygodnym obliczeniowo wskaźnikiem, który w dogodny sposób opisuje sumaryczny błąd dla całego zbioru uczącego i całego zbioru zmiennych wyjściowych.
W tradycyjnym podejściu do modelowania matematycznego różnych złożonych systemów (np. w modelowaniu liniowym wykorzystującym podejście statystyczne) stosowane są algorytmy określające taką konfigurację modelu, która zapewnia osiągnięcie minimum globalnego przez funkcję błędu. Oznacza to, że stworzony (na przykład za pomocą metody regresji) model matematyczny liniowy jest najlepszym możliwym odwzorowaniem posiadanego zbioru danych - ale najlepszym w klasie modeli liniowych. Nie da się zbudować modelu liniowego, który by lepiej pasował do posiadanych danych niż model uzyskany za pomocą metod regresji - ale nie jest wykluczone, że istnieje model nieliniowy, który będzie opisywał dane nieporównanie lepiej. Prawdę powiedziawszy, prawie wszystkie złożone systemy, których modele chcemy budować, są w rzeczywistości w mniejszym albo większym stopniu nieliniowe. Decydujemy się jednak często na opisywanie ich przy pomocy formuł (modeli) liniowych, ponieważ zarówno opisane wyżej wyznaczenie modelu liniowego, jak i jego wykorzystywanie, jest szczególnie łatwe, a przez to szczególnie wygodne. Czasem jednak niedokładność wnoszona przez model liniowy, nawet taki optymalnie wyznaczony, jest niedopuszczalnie duża. W takim przypadku musimy próbować stworzyć dla modelowanego obiektu lub rozważanego procesu model nieliniowy - i tu się zaczynają problemy. Pojęcie "model liniowy" jest pojęciem jednoznacznym. Dla danego zbioru danych istnieje tylko jeden optymalny model liniowy i zadanie jego wyznaczenia (poprzez minimalizację błędu) jest zadaniem dobrze określonym, stąd można je łatwo rozwiązać. Natomiast pojęcie modelu nieliniowego jest pojęciem wysoce wieloznacznym. "Nieliniowy" w istocie oznacza każdy, który nie jest liniowy - a takich jest nieskończenie dużo. W związku z tym znalezienie modelu nieliniowego oznacza w istocie wykonanie dwóch czynności: wyboru kształtu modelu (jego ogólnego wzoru matematycznego) oraz doboru takich parametrów tego modelu, żeby odwzorowywał on posiadane dane w optymalny sposób. Druga część zadania daje się zautomatyzować, to znaczny można zastosować odpowiednie metody statystyczne (technikę regresji nieliniowej) do wyznaczenia optymalnych parametrów modelu nieliniowego o uprzednio wybranym kształcie. Natomiast trudniejsze jest zadanie wyboru (wymyślenia) kształtu formuły matematycznej, która będzie mogła pełnić rolę modelu określonego zjawiska (lub określonego procesu). Tu nie ma żadnych ułatwień ani żadnych ogólnych reguł. Twórca modelu musi po prostu odgadnąć jego kształt. Jeśli odgadnie dobrze - uzyska dobre działanie modelu. Jeśli odgadnie źle, to nie pomoże żadna, nawet najbardziej wyrafinowana optymalizacja parametrów modelu - jego działanie będzie stale niezadowalające.
Sieci neuronowe wnoszą do modelowania nową jakość. Sieć w trakcie procesu uczenia może samodzielnie znaleźć nieliniowy model rozważanego systemu, przy czym twórca sieci nie musi jej podawać żadnych założeń dotyczących kształtu modelu. Stosowanie modeli opartych na sieciach neuronowych, a zwłaszcza opartych na tej technice modeli nieliniowych, zwiększa zatem istotnie możliwości modelowania. Jednak ceną
#20
płaconą za tę wygodę jest brak pewności, że osiągnięty w trakcie uczenia sieci poziom błędu osiągnął swój poziom minimalny, co oznacza, że uzyskany model może być odległy od modelu optymalnego i użytkownik nigdy nie wie, jak bardzo uzyskany model "odstaje" od modelu optymalnego, jaki mógłby być uzyskany w tych samych warunkach. Dodatkowa wada modelu neuronowego polega na tym, że uzyskany w trakcie uczenia sieci model nie podlega dalszemu doskonaleniu, więc błąd modelowania nie może być w dalszym zakresie zmniejszany - na przykład przez dodawanie dodatkowych informacji.
Dla zrozumienia istoty trudności, na jakie natrafia się przy modelowaniu nieliniowych zależności przy użyciu sieci neuronowych, pomocna może być koncepcja powierzchni błędu. Każda z N wag i wartości progowych sieci (tzn. wszystkie wolne parametry modelu) traktowana jest jako jeden z wymiarów przestrzeni. W ten sposób każdy stan sieci, wyznaczony przez aktualne wartości jej N parametrów, może być traktowany jako punkt na N-wymiarowej hiperpłaszczyźnie. N+1 wymiarem (zaznaczanym jako wysokość ponad wspomnianą wyżej hiperpowierzchnią) jest błąd, jaki popełnia sieć. Dla każdego możliwego zestawu wag i progów może więc zostać narysowany punkt w przestrzeni N+1 wymiarowej, w taki sposób, że stan sieci wynikający z aktualnego zestawu jej parametrów lokuje ten punkt na wspomnianej wyżej N-wymiarowej hiperpłaszczyźnie, wartość błędu zaś, jaki popełnia sieć dla tych właśnie wartości parametrów, stanowi wysokość umieszczenia punktu ponad tą płaszczyzną. Gdybyśmy opisaną procedurę powtórzyli dla wszystkich możliwych wartości kombinacji wag i progów sieci, wówczas otrzymalibyśmy "chmurę" punktów rozciągających się ponad wszystkimi punktami N-wymiarowej hiperpłaszczyzny parametrów sieci, tworzącą właśnie rozważaną powierzchnię błędu. Celem uczenia sieci jest znalezienie na tej wielowymiarowej powierzchni punktu o najmniejszej wysokości, czyli ustalenie takiego zestawu wag i progów, który odpowiada najmniejszej wartości błędu.
Przy stosowaniu modeli liniowych z funkcją błędu opartą na sumie kwadratów powierzchnia błędu ma kształt paraboloidy (funkcji kwadratowej), ma więc kształt kielicha o gładkich powierzchniach bocznych i o jednym wyraźnym minimum. Z tego powodu wyznaczenie w tym przypadku wartości minimalnej nie stwarza większych problemów.
Powierzchnia błędu dla sieci neuronowej budującej model nieliniowy jest niestety o wiele bardziej złożona. Posiada ona pewne cechy mogące być źródłem wielu problemów: minima lokalne (punkty położone niżej niż otaczający "teren", ale powyżej minimum globalnego), płaskie powierzchnie, czyli tzw. obszary plateau, punkty siodłowe i długie, wąskie wąwozy.
Określenie minimum globalnego powierzchni błędu w sposób analityczny nie jest możliwe, i dlatego uczenie sieci neuronowej można uznać zasadniczo za eksploracyjne badanie powierzchni błędu. Począwszy od początkowego, losowego układu wag i wartości progowych (układ ten reprezentowany jest przez pewien punkt położony w losowo wybranym miejscu na powierzchni błędu), algorytm uczenia realizuje kolejne kroki w taki sposób, by zmierzać ku odnalezieniu minimum globalnego. W typowych przypadkach jest to realizowane poprzez obliczenie gradientu (nachylenia) powierzchni błędu w aktualnym punkcie. Wykorzystanie informacji o kierunku spadku funkcji błędu pozwala na wykonanie kroku (tzn. na zmianę wartości wag neuronów w sieci) w taki sposób, by przemieścić się po powierzchni błędu w kierunku jej spadku. Ostatecznie algorytm uczenia zatrzymuje się w jakimś minimum (gdy gradient wskazuje, że we wszystkich kierunkach dookoła możliwe jest tylko pogorszenie funkcji błędu). Osiągnięte przez proces uczenia minimum może mieć charakter lokalny lub (w sprzyjających okolicznościach) może być minimum globalnym.
#21
$Algorytm wstecznej propagacji błędów

Najlepiej znanym przykładem algorytmu uczenia sieci neuronowej jest metoda wstecznej propagacji błędów (Patterson, 1996; Haykin, 1994,; Fausett, 1994). Nowoczesne algorytmy drugiego rzędu, takie jak: metoda gradientów sprzężonych i metoda Levenberga-Marquardta (Bishop, 1995; Shepherd, 1997) (oba dostępne w STNeural Networks) są w większości zastosowań istotnie szybsze, co mogłoby skłaniać do ich częstszego stosowania. Istotnie szybsze, to znaczy dużo szybsze - na przykład o rząd wielkości! Jednak klasyczna metoda wstecznej propagacji błędów (oznaczana dalej skrótowo jako BP, od powszechnie używanego angielskiego określenia backpropagation) też ma wiele istotnych zalet, co powoduje, że jest zdecydowanie najchętniej stosowana przez większość użytkowników sieci neuronowych. Jest wiele powodów tego, że BP jest najchętniej stosowanym algorytmem uczenia sieci. Po pierwsze, BP jest bezspornie algorytmem najprostszym do zrozumienia, co jest nie bez znaczenia, gdy idzie o zdobycie zaufania użytkownika. Po drugie, mimo rozwoju metod i algorytmów alternatywnych BP ciągle posiada przewagę w pewnych okolicznościach. Dotyczy to głównie sytuacji, kiedy założenia dotyczące innych algorytmów i innych metod są trudne do dotrzymania lub trudne do sprawdzenia. Po trzecie wreszcie, BP jest wprawdzie metodą powolną, ale dość pewną - to znaczy za pomocą tej metody można wyjątkowo łatwo (chociaż niestety niekoniecznie wyjątkowo sprawnie) rozwiązywać praktycznie każde zadanie, podczas gdy metody alternatywne w niektórych przypadkach gwarantują bardzo dużą sprawność przetwarzania, w innych jednak zawodzą całkowicie.
Obecnie zostanie bliżej scharakteryzowany algorytm BP, natomiast opis metod bardziej zaawansowanych zamieszczony jest w dalszej części dokumentacji STNeural Networks. Warto może dodać, że istnieją również pewne wypracowane na drodze empirycznej modyfikacje algorytmu wstecznej propagacji błędów, do których można zaliczyć metodę szybkiej propagacji (Fahlman, 1988) oraz metodę Delta-Bar-Delta (Jacobs, 1988). Jakkolwiek algorytmy te są również dostępne w STNeural Networks, to jednak nie będą tu dyskutowane.
W metodzie wstecznej propagacji błędów (BP) na początku obliczany jest wektor gradientu wyżej opisanej powierzchni błędu. Wektor ten określa linię przechodzącą przez bieżący punkt i wyznaczającą kierunek, w którym spadek wartości błędu jest najszybszy. Dokładniej -gradient wyznacza kierunek najszybszego wzrostu funkcji błędu, w związku z czym kierunek zmiany wag w sieci jest dokładnie przeciwny do kierunku wyznaczanego przez gradient. Jeśli wykonany zostanie niewielki krok w wyznaczonym kierunku, to w osiągniętym w ten sposób punkcie wartość błędu będzie (zazwyczaj) mniejsza. Sekwencja takich przesunięć (o wielkości zmniejszającej się wraz z przybliżaniem się do dna "doliny" wyznaczającej minimum funkcji błędu) ostatecznie prowadzi do osiągnięcia pewnego minimum. Niestety nie zawsze jest to minimum globalne, ale tym problemem zajmiemy się oddzielnie.
Istotnym problemem związanym ze stosowaniem opisanej metody jest określenie wielkości wykonywanych kroków.
Stosowanie dużych kroków zapewnia szybszą zbieżność algorytmu, ale może również powodować przeskoczenie ponad punktem stanowiącym rozwiązanie lub też (w przypadku bardzo urozmaiconych powierzchni błędu) powodować gwałtowny krok w niewłaściwym kierunku. Klasycznym przykładem takiego zachowania się algorytmu uczenia jest sytuacja, w której obserwowany jest bardzo powolny spadek wartości błędu w trakcie uczenia, ponieważ algorytm posuwa się wzdłuż stromej, wąskiej doliny, w której nie może osiągnąć dna, tylko z uwagi na wykonywane zbyt duże kroki ciągle następują odbicia pomiędzy jej przeciwległymi zboczami. W przeciwieństwie do wyżej opisanej sytuacji, stosowanie zbyt małych kroków może wprawdzie prowadzić we właściwym kierunku, ale zbyt wolno, ponieważ wymaga stosowania bardzo
#22
dużej liczby iteracji. W praktyce rozwiązuje się zasygnalizowane problemy w taki sposób, że stosuje się wielkość kroku proporcjonalną do nachylenia (dzięki czemu algorytm zatrzymuje się w minimum) i do pewnej stałej, zwanej współczynnikiem uczenia. Właściwe określenie wartości współczynnika uczenia jest różne w różnych aplikacjach i jest najczęściej określane na drodze eksperymentalnej. Można również stosować zmienny w czasie współczynnik uczenia, najczęściej o wartości zmniejszającej się w trakcie pracy.
Również często podstawowa wersja algorytmu modyfikowana jest poprzez włączenie członu tak zwanej bezwładności. Znaczenie członu bezwładności widoczne jest wtedy, gdy kierunek, w którym wykonywane są kolejne kroki przez pewien czas nie zmienia się. Następuje wówczas zwiększanie się prędkości działania algorytmu, co (czasami) stwarza możliwość ucieczki z minimum lokalnego oraz szybkiego przejścia przez obszary płaskie lub obszary plateau. Natomiast w fazach uczenia związanych z pokonywaniem obszarów, w których funkcja błędu ma liczne drobne zafalowania, dodanie składnika bezwładności powoduje uodpornienie algorytmu uczenia na efekty "myszkowania" w poszukiwaniu drogi zmian wag wiodącej najdokładniej wzdłuż linii najszybszego spadku błędu (ciągle zmieniającej kierunek). Od tej ostatniej własności bierze się zresztą nazwa rozważanego tu składnika modyfikującego proces uczenia. Wykonywanie algorytmu BP bez bezwładności przypomina w związku z tym zjazd po stromym i bardzo nierównym zboczu górskim w małych i lekkich saneczkach, miotanych i poniewieranych przez każdą nierówność terenu. Natomiast realizacja algorytmu zawierającego składnik bezwładności przypomina pokonywanie tej samej trasy w ciężkich saniach (np. bobslej) - zjazd jest spokojniejszy i bardziej równomierny, a prawdopodobieństwo utknięcia w byle rozpadlinie (minimum lokalne!) jest znacznie mniejsze.
Jak to zostało pokazane, algorytm wstecznej propagacji błędów działa w sposób iteracyjny, wykonując pewną liczbę kroków. Z punktu widzenia dalszych rozważań wygodne jest wprowadzenie pojęcia epoki. W trakcie każdej epoki wszystkie przypadki wchodzące w skład ciągu uczącego są po kolei prezentowane sieci, wartości wyjściowe porównywane są z wartościami zakładanymi i wyznaczana jest wartość błędu. Błąd ten, wraz z informacją o gradiencie funkcji błędu, stanowi podstawę do modyfikacji wag. Następnie cały proces jest powtarzany. W trakcie kolejnych epok sieci pokazywane są te same dane (ponieważ zbiór uczący jest ograniczony), jednak dla zachowania prawidłowego przebiegu procesu uczenia między jedną a drugą epoką przykłady powinny być mieszane (tzw. randomizacja), żeby nie były pokazywane wielokrotnie w tej samej kolejności.
Początkowe wartości parametrów sieci są określane w sposób losowy, zaś uczenie kończy się po wykonaniu określonej liczby epok lub po osiągnięciu określonego poziomu błędu lub też wtedy, gdy nie następuje już dalsze zmniejszanie się wartości błędu (wyboru odpowiedniego warunku zatrzymania algorytmu uczenia dokonuje użytkownik).

$Przeuczenie i generalizacja

Użytkownik sieci neuronowej największe znaczenie przywiązuje do tego, aby był jak najmniejszy oczekiwany błąd sieci związany z prezentacją nowego przypadku (a więc takiego, który nie był prezentowany w trakcie ucznia). Niestety, zasadniczym problemem związanym z podejściem skrótowo przedstawionym powyżej jest to, że w rzeczywistości w trakcie uczenia nie jest minimalizowany oczekiwany błąd sieci, lecz błąd wyznaczony dla zbioru uczącego. Inaczej mówiąc, najbardziej pożądaną cechą sieci jest jej zdolność do generalizacji swojej wiedzy na nowe przypadki. Tymczasem w rzeczywistości sieć uczona jest w sposób zapewniający minimalizację błędu wyłącznie dla zbioru uczącego, co
#23
(z wyjątkiem sytuacji, w której dostępny byłby doskonały i nieskończenie duży zbiór uczący) nie jest tym samym co minimalizacja błędu na podstawie "rzeczywistej" powierzchni błędu, a więc takiej, do wyznaczenia której niezbędna byłaby znajomość wszystkich możliwych przypadków, a więc w praktyce znajomość postaci tej zależności między sygnałami wejściowymi i wyjściowymi, która występuje w rzeczywistości i którą tworzona sieć neuronowa powinna modelować (Bishop, 1995).
Najistotniejszym przejawem przedstawionego rozróżnienia między tym, czego chcielibyśmy uczyć sieć, a tym, czego ją naprawdę uczymy, jest problem tak zwanego przeuczenia sieci (problem nadmiernego dopasowania). Najprościej można pokazać istotę tego zagadnienia, opisując dopasowanie modelu do danych za pomocą sieci neuronowej w taki sposób, jakbyśmy poszukiwali modelu, dopasowując wielomiany. Pojęciowo jest to w pełni równoważne, gdyż w obu przypadkach zasadniczy problem jest taki sam -jak dopasować postać modelu do zasadniczego kształtu aproksymowanej zależności, ale nie do drobnych szczegółów reprezentowanych przez pojedyncze dane.
Wielomian jest to równanie zawierające człony wyłącznie w postaci stałych współczynników i potęg danej zmiennej. Na przykład:
y = 2x + 3 y = 3x^2 + 4x + 1 itp.
Różne wielomiany mają różne kształty (chodzi oczywiście o kształt wykresu, jaki powstaje w momencie, gdy wykreślimy zależność y jako funkcji x). Wraz ze stosowaniem coraz wyższych potęg (a tym samym większej liczby członów) wielomiany przyjmują coraz bardziej złożone kształty.
Mając pewien konkretny zbiór danych, można dopasować krzywą wielomianową (stanowiącą model) tak, aby opisywała ona te właśnie konkretne dane. Dane te są jednak najprawdopodobniej zniekształcone przez szumy, dlatego też nie należy oczekiwać, aby najlepszy model przechodził dokładnie przez każdy z punktów. Przeciwnie, dobry model to taki, który odwzorowuje ogólną postać poszukiwanej zależności, ale abstrahuje od drobnych, zwykle nieistotnych "zafalowań" wejściowych danych. Wiąże się z tym kwestia stopnia używanego wielomianu: wielomiany niskiego stopnia mogą być zbyt mało elastyczne do tego, aby przejść w pobliżu wszystkich punktów wyznaczanych przez posiadane dane, podczas gdy wielomiany wysokiego stopnia mogą być zbyt elastyczne, co zamanifestują, dopasowując się zbyt dokładnie do konkretnych (być może trochę zakłóconych) danych. Skutek takich nadmiernych dopasowań łatwo zauważyć na wykresie wielomianu: "ściga" on konkretne dane poprzez przyjmowanie bardzo osobliwych kształtów, które nie są w rzeczywistości w żaden sposób powiązane z modelowaną, rzeczywistą funkcją. Ilustruje to poniższy rysunek.

itriNeuial 2.3.STG
Nadmierne dopasowanie

Powyższy problem opisany został na przykładzie aproksymacji funkcji za pomocą wielomianu, jednak w przypadku sieci neuronowych pojawia się dokładnie ten sam problem. Sieć z większą liczbą wag może modelować bardziej złożone funkcje i z tego powodu ma większą skłonność do zbytniego dopasowywania się do danych. Sieć z mniejszą liczbą wag może z kolei nie być dostatecznie mocnym narzędziem do opisu występującej w rzeczywistości zależności. Na przykład, sieć nie posiadająca warstw ukrytych może w rzeczywistości modelować wyłącznie
#24
proste zależności liniowe. Natomiast sieć o zbyt dużej liczbie warstw i zbyt dużej liczbie neuronów w warstwach ukrytych będzie miała skłonność do uczenia się. "na pamięć" całego zbioru uczącego.
W związku z tym pojawia się pytanie dotyczące sposobu wyboru sieci o "właściwej" złożoności. Większe sieci prawie zawsze osiągają ostatecznie mniejszą wartość błędu, ale to może raczej wskazywać na ich przeuczenie niż na dobrą jakość modelu.
Odpowiedzią na powyższe pytanie może być użycie procesu walidacji. Polega on na tym, że pewna liczba przypadków uczących jest zaliczana do oddzielnej grupy. Dane należące do tej wydzielonej grupy nie są bezpośrednio stosowane w trakcie uczenia sieci (na przykład metodą wstecznej propagacji błędów). Natomiast są one wykorzystywane do przeprowadzenia niezależnej kontroli postępów algorytmu uczenia. W każdym przypadku początkowa skuteczność sieci wyznaczona na podstawie ciągu uczącego i ciągu walidacyjnego jest taka sama (jest ona oczywiście bardzo kiepska, ponieważ przed rozpoczęciem uczenia sieć nie umie prawidłowo reagować na żadne dane - ani na te ze zbioru walidacyjnego, ani na dane uczące). Jeśli jakość odpowiedzi sieci na dane uczące i na dane walidacyjne nie jest przynajmniej w przybliżeniu identyczna, to najprawdopodobniej podział przypadków pomiędzy te dwa zbiory był obciążony jakąś ukrytą tendencją - zaleca się w takim przypadku przerwanie uczenia i ponowny (losowy) podział posiadanych danych na część uczącą i część walidacyjną.
W trakcie uczenia błąd popełniany przez sieć oczywiście się zmniejsza i, jeśli tylko proces uczenia minimalizuje prawidłowo zdefiniowaną funkcję błędu, to również zmniejsza się błąd walidacyjny. Na ogół po początkowym szybkim spadku obu rodzajów rozważanych błędów obserwujemy relatywnie szybszy spadek błędu dla zbioru uczącego i wolniejszy dla zbioru walidacyjnego. Jest to zjawisko normalne, ponieważ sieć poprawia swoje działanie wyłącznie w oparciu o dane ze zbioru uczącego, więc dopasowanie jej zachowania do tego właśnie zbioru musi być szybsze i dokładniejsze. Jeśli jednak w trakcie uczenia zaobserwujemy, że spadek błędu walidacyjnego zatrzymał się lub też błąd ten zaczyna rosnąć, to świadczy o tym, że sieć zaczęła zbytnio dopasowywać się do danych uczących i traci zdolność do generalizacji wyników uczenia. W takim przypadku proces uczenia powinien zostać niezwłocznie zatrzymany, a nawet cofnięty do takiego punktu, w którym błąd walidacji miał najmniejszą wartość (istnieje taka możliwość w konfiguracji STNeural Networks, aby uczenie było automatycznie zatrzymywane w chwili pojawienia się pierwszych przejawów przeuczenia). Przeuczenie sieci polega więc na pojawiającym się w trakcie uczenia nadmiernym dopasowaniu się sieci do danych uczących. W takim przypadku wskazane jest, aby zmniejszyć liczbę neuronów ukrytych i/lub liczbę warstw ukrytych, ponieważ pojawienie się przeuczenia sugeruje, że rozwiązując istniejący problem zastosowano sieć o zbyt dużych możliwościach. W sytuacji przeciwnej, gdy sieć nie posiada dostatecznych możliwości do modelowania rzeczywistej funkcji, przeuczenie nie pojawi się, ale wtedy mimo długiego uczenia ani błąd uczenia, ani błąd walidacyjny nie spadnie do satysfakcjonującego poziomu.
Problemy związane z występowaniem minimów lokalnych w funkcji błędu i problemy związane z koniecznością podjęcia decyzji dotyczącej wielkości sieci pociągają za sobą w praktyce konieczność przeprowadzenia szeregu eksperymentów z dużą liczbą sieci, z których każda jest wielokrotnie uczona (aby w ten sposób uniknąć fałszywego zatrzymania uczenia przez minimum lokalne). Każda z tych sieci jest oddzielnie uczona i niezależnie oceniana, celem wyboru tej sieci, która może być uznana za optymalną. Najważniejszą informacją uwzględnianą przy ocenie sieci jest wartość błędu walidacyjnego.
Przy wyborze sieci należy postępować zgodnie ze znaną w nauce regułą głoszącą, że w przypadku, gdy wszystkie inne własności dwóch modeli są
#25
identyczne, to należy wybrać model prostszy, odrzucając model o większej złożoności. To dążenie do prostoty jest w przypadku sieci neuronowych bardzo silnym imperatywem: nawet wówczas, gdy błąd walidacyjny mniejszej sieci jest nieznacznie większy od błędu uzyskanego dla sieci o większych rozmiarach, można wybrać model charakteryzujący się mniejszymi rozmiarami, uzyskując (na ogół) lepsze wyniki podczas eksploatacji sieci.
Z podejściem opartym na powtarzaniu eksperymentów związany jest problem polegający na tym, że zbiór walidacyjny odgrywa kluczową funkcję przy wyborze modelu, co oznacza, że w rzeczywistości - w jakimś sensie - uczestniczy on w procesie uczenia sieci. W ten sposób wiarygodność zbioru walidacyjnego jako niezależnego narzędzia oceny sieci została podważona - gdyż przy dostatecznej liczbie eksperymentów można trafić na sieć, która będzie (przez przypadek) działać prawidłowo na zbiorze walidacyjnym, ale ogólnie nie będzie zadowalająca. Aby zwiększyć poziom zaufania do ostatecznego modelu zwykle (jeśli tylko wielkość zbioru uczącego na to pozwala) praktykuje się następujący sposób postępowania. Ze zbioru uczącego wydziela się dodatkowo trzeci zbiór przypadków - tak zwany zbiór testowy. Ostateczna postać modelu (nauczonego za pomocą zbioru uczącego i sprawdzonego przy pomocy zbioru walidacyjnego) jest dodatkowo testowana za pomocą zbioru testowego. Takie dodatkowe sprawdzenie praktykuje się po to, aby upewnić się, że rezultaty uzyskane dla zbioru uczącego i zbioru walidacyjnego są zgodne z rzeczywistością, a nie są tylko mechanicznym wytworem procedury uczenia. Jest rzeczą oczywistą, że aby zbiór testowy mógł wypełnić tę rolę prawidłowo, powinien być użyty tylko jeden raz -jeśli zostanie on ponownie użyty do uregulowania i ponownego przeprowadzenia procesu uczenia, to zacznie spełniać faktycznie funkcję zbioru walidacyjnego i utracimy możliwość niezależnej weryfikacji uczenia.
Reasumując, można stwierdzić, że projektowanie sieci (przy założeniu, że wcześniej dokonano wyboru zmiennych wejściowych) składa się z następujących etapów:
Wybór początkowej struktury sieci (zwykle jest to sieć z jedną warstwą ukrytą, w której początkowa liczba neuronów ukrytych jest równa połowie sumy liczby neuronów wejściowych i liczby neuronów wyjściowych) Ekspert sieciowy ST Neural Networks automatycznie sugeruje taką właśnie konfigurację, jeśli użytkownik jawnie nie zada innych parametrów.
W sposób iteracyjny przeprowadza się szereg eksperymentów z każdą konfiguracją sieci
i zachowuje się konfigurację najlepszą (w sensie błędu wyznaczonego dla ciągu walidacyjnego) ze znalezionych sieci. Nie trzeba się o to jakoś specjalnie troszczyć -w trakcie wykonywania eksperymentów ST Neural Networks automatycznie zachowuje najlepszą sieć. Eksperymentów potrzebnych do znalezienia najlepszej sieci trzeba wykonać relatywnie dużo - z każdą możliwą strukturą sieci należy przeprowadzić kilka eksperymentów, aby uniknąć błędnych rezultatów spowodowanych zatrzymywaniem się algorytmu w minimum lokalnym.
Jeśli wyniki eksperymentu świadczą o niedouczeniu sieci (sieć nie osiąga zadanego poziomu błędu), to należy podjąć próbę dodania nowych neuronów do warstwy ukrytej (warstw ukrytych). Jeśli to nie pomaga, to należy podjąć próbę dodania całej nowej warstwy ukrytej.
Jeśli pojawi się zjawisko przeuczenia sieci (błąd walidacyjny zacznie znacząco rosnąć przed osiągnięciem zadowalającego poziomu wytrenowania sieci), to należy podjąć próbę usunięcia pewnej liczby neuronów ukrytych (lub całych ich warstw).
Ponieważ "ręczne" powtarzanie prób badawczych jest, łagodnie to określając, nudne, ST Neural
#26
f t Networks zawiera algorytm automatycznego przeszukiwania, realizujący w sposób samodzielny cały ten proces. Automatyczny projektant sieci sam przeprowadza eksperymenty z różną liczbą neuronów ukrytych, wielokrotnie powtarzając proces uczenia dla każdej badanej architektury, i całkowicie sam dokonuje wyboru najlepszych modeli sieci, kierując się wartością błędu walidacyjnego i wielkością sieci. W module tym zaimplementowano wszystkie, nawet dość wyrafinowane algorytmy przeszukujące przestrzeń rozwiązań w poszukiwaniu minimum globalnego -w tym algorytm symulowanego wyżarzania (Kirkpatrick i in., 1983). Algorytmy te mogą automatycznie testować setki kombinacji struktur i parametrów sieci w poszukiwaniu szczególnie obiecującej sieci, która rozwiąże problem , poszukiwania optymalnego modelu dla zgromadzonych danych. Algorytmy te również mogą znaleźć w bardzo krótkim czasie rozwiązanie przybliżone, gdy znalezienie modelu dokładnego jest niewykonalne.

$Wybór danych

Wszystkie opisane powyżej kroki algorytmu poszukiwania optymalnego modelu (optymalnej sieci) opierają się na kluczowym założeniu stwierdzającym, że dane należące do zbioru uczącego, walidacyjnego i testowego są reprezentatywne dla opisywanej zależności. Jest to bardzo ważne i bardzo trudne (w ogólnym przypadku) zadanie, co więcej, elementy każdego z tych zbiorów powinny mieć również charakter w pełni reprezentatywny, co wobec niewielkiej liczby dostępnych danych jest szczególnie trudne i szczególnie kłopotliwe. Znane od lat w informatyce powiedzenie "śmieci na wejściu, śmieci na wyjściu" (tzw. reguła GIGO) nie może już lepiej pasować do żadnej sytuacji, niż do modelowania neuronowego. Jeśli dane uczące nie są reprezentatywne, to wówczas wartość modelu może zostać - w najlepszym przypadku -zakwestionowana przez użytkownika, który wyrazi wątpliwość co do końcowego wyniku i nie uzyska żadnego argumentu, który by przezwyciężał jego
sceptycyzm. W najgorszym przypadku uzyskany model neuronowy może być całkowicie nieużyteczny, co niestety wcale nie jest tak rzadką sytuacją. Wydaje się, że kłopotliwość opisywanego problemu uzasadnia, że warto dokładniej scharakteryzować tu różne typy problemów mogące negatywnie wpływać na zbiór uczący:
Pierwszy dotyczy aktualności danych używanych do uczenia sieci. Wiadomo, że przyszłość nie jest przeszłością. Dane uczące mają zazwyczaj charakter historyczny, a dane dla których chcemy używać sieci (na przykłada do prognoz) są danymi, które się dopiero pojawią. Jeśli zatem pomiędzy okresem, na bazie którego uczono sieć, a okresem, w którym będziemy sieć wykorzystywać, okoliczności uległy zasadniczej zmianie, to związki, które zachodziły w przeszłości, nie muszą nadal istnieć i nawet najlepiej nauczona sieć może nam sprawić zawód.
Zatem wszystkie możliwe istotne zdarzenia muszą być reprezentowane w zbiorach: uczącym, walidacyjnym i testowym. Sieć neuronowa może się bowiem uczyć wyłącznie na podstawie prezentowanych przypadków i jeśli przypadki te pomijają jakiś ważny aspekt rozważanego zagadnienia - to sieć po prostu nie będzie go znała. Na przykład jeżeli z osobami o rocznych dochodach przekraczających 100 000 USD związane jest duże ryzyko kredytowe, w danych uczących zaś nie było żadnego przypadku dotyczącego osoby o dochodach wyższych niż 40 000 USD, to nie można oczekiwać, że sieć potrafi poprawnie podjąć właściwą decyzję w sytuacji, gdy zostanie jej zaprezentowany taki właśnie przypadek.
Trzeba pamiętać, że sieć neuronowa zawsze uczy się najprostszych dla niej cech. Klasyczną (o wątpliwej autentyczności) ilustracją tej prawidłowości jest projekt systemu wizyjnego zaprojektowany z myślą o automatycznym rozpoznawaniu czołgów. Sieć uczona była w oparciu o sto zdjęć, na których znajdowały się czołgi i sto zdjęć, na których ich nie było. Dla ciągu uczącego osiągnięto
#27
stuprocentową poprawność wykrywania czołgów, co zdawało się być dobrą prognozą dla systemu użytkowego. Jednak w trakcie testowania na nowych danych okazało się, że jakość działania sieci jest beznadziejna. Zastanawiano się nad przyczyną takiego stanu rzeczy. Okazało się, że wszystkie zdjęcia czołgów zostały zrobione w ciemny, deszczowy dzień. Zaś zdjęcia, na których nie było czołgów, wykonano w słoneczny dzień. Sieć nauczyła się dostrzegać (co było proste) różnice w łącznej intensywności oświetlenia i nie skupiała się wcale na analizie kształtów rozpoznawanych obiektów. Aby sieć mogła nauczyć się prawidłowego działania, należało ją uczyć w oparciu o przypadki obejmujące wszystkie te rodzaje pogody i oświetlenia zarówno dla obrazów zawierających czołgi, jak tych, na których czołgów nie było. Ogólnie - w ciągu uczącym należy odwzorować wszelkie warunki, które mogą panować w trakcie późniejszego działania sieci, nie mówiąc już o uwzględnieniu różnych typów warunków dodatkowych (na przykład rodzaju terenu, kąta patrzenia, odległości itd.).
Niebezpiecznym źródłem kłopotów w ciągu uczącym może być także brak równowagi w zbiorze danych. Ponieważ sieć minimalizuje błąd całościowy, bardzo ważnym czynnikiem wpływającym na sukces jest zapewnienie odpowiednich proporcji poszczególnych typów danych w zbiorze uczącym. Sieć uczona na zbiorze zawierającym 900 dobrych przypadków i 100 złych będzie tendencyjnie preferować dobre przypadki, ponieważ w ten sposób zapewni niższy poziom błędu całkowitego (na który znacznie mocniej wpływają w tym przykładzie dobre przypadki). Jeśli udział dobrych i złych przypadków w rzeczywistej populacji jest inny niż w zbiorze uczącym, to podejmowane przez sieć decyzje mogą być błędne. Dobrym przykładem ilustrującym ten problem może być diagnozowanie pewnej choroby z pomocą sieci neuronowej. W trakcie rutynowych badań okazało się, że 90% pacjentów nie cierpi na rozważaną chorobę. W oparciu o dane pochodzące z tych badań (90% pacjentów zdrowych i 10% pacjentów chorych)
przeprowadzono proces uczenia sieci. Następnie sieć ta została użyta do diagnozowania stanu zdrowia pacjentów uskarżających się na pewien specyficzny problem zdrowotny. Jednak w tej grupie pacjentów, którzy zdecydowali się szukać pomocy u lekarza z powodu odczuwanych dolegliwości, prawdopodobieństwo wystąpienia badanej choroby wynosi 50%. Okazało się, że sieć reaguje zbyt ostrożnie i nie rozpoznaje choroby u pewnej grupy chorych pacjentów. Wynikało to oczywiście z pewnych preferencji, które wystąpiły w zbiorze uczącym, ale nie znalazły potwierdzenia w trakcie normalnej eksploatacji sieci.
W sytuacji przeciwnej, jeśli sieć byłaby uczona na danych dotyczących głównie uskarżających się pacjentów, a następnie testowana na pacjentach poddawanych rutynowym badaniom, sieć mogłaby zawyżać liczbę chorych, stwierdzając wystąpienie choroby także u osób, które w rzeczywistości byłyby zdrowe. W takich okolicznościach może zajść konieczność dodatkowej obróbki zbioru danych, w trakcie której uwzględniona zostanie kwestia rozkładu danych. W trakcie tej obróbki można na przykład powielić rzadko występujące przypadki lub usunąć pewną część takich, które są zbyt licznie reprezentowane. Można też modyfikować decyzje podejmowane przez sieć poprzez włączenie do procesu uczenia tzw. macierzy kosztów (Bishop, 1995). Często najlepszym rozwiązaniem jest zapewnienie równomiernej reprezentacji w danych uczących różnych przypadków, co pozwala także na interpretację decyzji podejmowanych przez sieć w sposób bezpośredni.

$Intuicyjne przedstawienie sposobu uczenia perceptronu wielowarstwowego

Wzięcie pod uwagę rodzajów funkcji nieliniowych (funkcji przejścia) występujących w sieci wielowarstwowej w modelach poszczególnych neuronów umożliwia przedstawienie w sposób intuicyjny pewnych kluczowych kwestii dotyczących sposobu działania i uczenia perceptronów wielowarstwowych. Należy
#28
przypomnieć, że poziom pobudzenia neuronu jest ważoną sumą wejść (plus wartość progowa dodawana jako tzw. bias). Taki sposób realizacji obliczeń powoduje, że poziom pobudzenia neuronu jest w rzeczywistości po prostu pewną liniową funkcją wartości wejściowych. Wyznaczona w ten sposób wartość łącznego pobudzenia przepuszczana jest przez funkcję sigmoidalną (S - kształtną) w celu wyznaczenia sygnału odpowiedzi neuronu.
Kombinacja wielowymiarowej funkcji liniowej i jednowymiarowej funkcji sigmoidalnej daje charakterystyczną dla neuronu wchodzącego w skład pierwszej warstwy ukrytej odpowiedź sieci, tworzącą tak zwane "urwisko sigmoidalne". Na powyższym rysunku przedstawiono tę wartość dla sieci o dwóch wejściach; w perceptronach o większej liczbie wejść funkcjonał ten występuje w wersji o większej liczbie wymiarów, ale ma podobny kształt.
Zmieniając wartości wag i elementów progowych, modyfikować można kształt pokazanego wyżej powierzchniowego wykresu odpowiedzi sieci. W szczególności może zostać zmieniona zarówno orientacja powierzchni, jak również stromość zbocza. Kształtowanie pokazanego wyżej funkcjonału może się odbywać automatycznie w trakcie procesu ucznia, jednak warto znać kilka ogólnych prawidłowości rządzących formowaniem tego funkcjonału, ponieważ ułatwia to takie świadome kształtowanie parametrów sieci, by z największym prawdopodobieństwem osiągać
stawiane cele. Warto więc wiedzieć, że strome zbocza "urwiska" sigmoidalnego odpowiadają dużym wartościom wag. Na przykład, w wyniku podwojenia wartości wszystkich wag uzyskuje się taką samą orientację tego "urwiska", ale inne, bardziej strome jego nachylenie.
Sieć wielowarstwowa działa (w uproszczeniu) w taki sposób, że łączy razem pewną liczbę powierzchni odpowiedzi sieci (takich, jak opisana wyżej) poprzez wielokrotne zastosowanie kombinacji liniowej sygnałów wyjściowych i nieliniowej funkcji aktywacji. Powyższy rysunek przedstawia typową powierzchnię odpowiedzi sieci posiadającej tylko jedną warstwę ukrytą z dwoma neuronami wejściowymi i pojedynczym neuronem w warstwie wyjściowej; sieć taka rozwiązuje klasyczny problem XOR (patrz niżej). Jak widać na rysunku, dwie oddzielne powierzchnie sigmoidalne zostały tu połączone w jedną powierzchnię "U-kształtną", stanowiącą właśnie rozwiązanie sformułowanego "problemu XOR".
Podczas uczenia wskazana powierzchnia zmienia się w następujący sposób. W początkowej fazie uczenia sieci wagom oraz wartościom progowym nadaje się wartości będące niewielkimi liczbami losowymi. Powoduje to, że powierzchnia odpowiedzi neuronów ma kształt losowo zaburzonej płaskiej powierzchni, zawierającej jedynie bardzo niewielkie nachylenia. W rzeczywistości powierzchnie tego typu z reguły nie są przydatne do rozwiązywania stawianych
#29
przed sieciami problemów. W trakcie trwania uczenia powierzchnie odpowiedzi dla poszczególnych neuronów ulegają obróceniu i przesunięciu, w sposób zapewniający docelowo przyjęcie przez nie prawidłowych pozycji, wynikających z pożądanej (oczekiwanej) funkcji decyzyjnej. Towarzyszy temu wzrost wartości wag, prowadzący do tego, że powierzchnie te stają się znacznie bardziej wydatne (obszary płaskie (plateau) położone są wyżej lub zdecydowanie niżej, a zbocza pomiędzy nimi stają się bardziej strome i mają bardziej wyrazisty przebieg). Takie silnie uformowane funkcje są w stanie modelować poszczególne części zadanej powierzchni odpowiedzi, a ich odpowiednie złożenie stanowić może podstawę do tworzenia właściwej funkcji odpowiedzi sieci.
Spróbujmy teraz opisowo przedstawić, co to znaczy "odpowiednia" powierzchnia. W problemach klasyfikacyjnych funkcja neuronu wyjściowego sprowadza się do generowania mocnego sygnału (który umownie można określić jako +1) w sytuacji, gdy przypadek należy do danej klasy oraz słabego sygnału (który umownie można określić jako 0), gdy nie należy on do tej klasy. Inaczej mówiąc, podczas uczenia sieci umiejętności rozpoznawania dokonywana jest próba modelowego ujęcia funkcji, mającej wartość równą 1 dla tej części przestrzeni wzorców, która zawiera przypadki zaliczane do rozważanej klasy, i mającą wartość 0 dla pozostałej części. W pracach z zakresu rozpoznawania obrazów funkcja taka jest określana mianem funkcji dyskryminującej. "Idealna" funkcja dyskryminująca składa się wyłącznie z wysokich i niskich obszarów plateau połączonych pionowymi ścianami, ponieważ wszystkie położone na niej punkty znajdują się albo na wysokości równej zero, albo jeden.
W przypadku, gdy w sieci nie ma neuronów ukrytych, odpowiednią funkcję dyskryminacyjną muszą wytworzyć same neurony wyjściowe. Mogą one wtedy modelować wyłącznie pojedyncze "urwiska sigmoidalne", mające po jednej stronie obszar nisko położony (obszar negatywnych
decyzji danego neuronu, oznaczających "to nie jest obiekt z mojej klasy"), natomiast po drugiej stronie znajduje się obszar położony wysoko (obszar pozytywnych decyzji, wskazujących, że wykryto obiekt należący do zadanej klasy). Gdy neurony podczas swojej pracy wchodzą w obszar jednego albo drugiego plateau - ich sygnał jest czytelny i zrozumiały (chociaż nie zawsze musi być poprawny). Przy stosowaniu neuronów z sigmoidalną funkcją przejścia zawsze będzie także występować region znajdujący się pośrodku pomiędzy plateau (na urwisku), gdzie sygnał neuronu (wysokość) przyjmować będzie wartości pośrednie, w ogólnym przypadku trudne do interpretacji (obiekt należy do badanej klasy w pewnym stopniu, ale nie całkowicie? obiekt należy do klasy z pewnym prawdopodobieństwem, ale nie na pewno?). Na szczęście wraz ze wzrostem wartości wag ten obszar niejednoznacznych decyzji będzie się kurczyć, czemu powinna towarzyszyć wzrastająca pewność działania sieci.
Urwisko sigmoidalne może być utożsamiane (w zadaniach związanych z rozpoznawaniem) z liniową funkcją dyskryminującą. Punkty położone po jednej stronie urwiska zostają zaklasyfikowane jako należące do jednej klasy, punkty położone po drugiej stronie - jako nie należące do tej klasy. Na podstawie powyższych uwag można sformułować następujący wniosek: sieć nie mająca warstw ukrytych może służyć głównie do rozwiązywania tak zwanych problemów liniowo separowalnych to znaczy takich, w których istniej linia prosta - lub, mówiąc ogólniej, hiperpłaszczyzna (będąca w przypadku przestrzeni o wyższych wymiarach odpowiednikiem linii prostej na płaszczyźnie) -która może być przeprowadzona w taki sposób, że oddziela wzajemnie od siebie w przestrzeni sygnałów wejściowych (w przestrzeni wzorców) wszystkie te punkty, dla których sieć powinna przyjmować przeciwstawne decyzje.
Sieć z pojedynczą warstwą ukrytą posiada pewną liczbę "urwisk sigmoidalnych" (jedno urwisko odpowiada jednemu neuronowi warstwy ukrytej),
#30
które z kolei mogą być kombinowane i łączone w jeden obszar plateau o skomplikowanym kształcie za pomocą neuronów znajdujących się w warstwie wyjściowej, sumujących (z wagami) sygnały z całej warstwy ukrytej. Płaskowzgórze utworzone przez warstwę wyjściową sieci posiada w takim przypadku wypukłą powłokę (tzn. nie występują na jej powierzchni żadne wgniecenia ani otwory). Wyróżniony obszar płaskowyżu musi być w rozważanym przypadku dodatkowo jednospójny, to znaczy wyróżniony obszar nie może mieć formy zbioru oddzielnych "wysp".
Podane wyżej ograniczenia, wynikające z analizy matematycznej osiągalnych form przetwarzania danych wejściowych występujących w dwuwarstwowej sieci neuronowej (jedna warstwa ukryta + przetwarzająca sygnały warstwa wyjściowa), dają się częściowo złagodzić poprzez odpowiednią interpretację danych. Dzięki temu możemy na ogół bez trudu uzyskać takie zachowanie sieci, które według formalnej analizy matematycznej wymagałoby wklęsłej powierzchni decyzyjnej, a to dlatego, że dopełnienie obszaru wypukłego jest obszarem wklęsłym. W związku z tym, chociaż samo plateau może być wyłącznie wypukłe, to jednak otaczająca je dolina może mieć wklęsłość - właśnie wynikającą z obecności płaskowyżu "wycinającego" fragment doliny. Wystarczy tylko inaczej się umówić co do tego, co oznacza "1", a co oznacza "0". Dodatkowe możliwości kształtowania powierzchni decyzyjnej wynikają z faktu, że samo plateau może rozciągać się w pewnym kierunku aż do nieskończoności (jak rozszerzony półwysep). W związku z tymi możliwościami sieć taka (tzn. sieć dwuwarstwowa) w praktyce jest zdolna do modelowania we właściwy sposób większości rzeczywistych problemów klasyfikacyjnych. Zamieszczony poniżej rysunek pokazuje płaskie obszary występujące na płaszczyźnie odpowiedzi sieci typu MLP (perceptron wielowarstwowy), służącej do rozwiązania problemu XOR: widać, że przestrzeń podzielona jest wyraźnie w kierunku wyznaczonym przez przekątną.
Sieć posiadająca dwie warstwy ukryte ma znacznie bogatszy asortyment możliwych zachowań. Wynika to z faktu, że dla takiej sieci powstający po procesie uczenia obszar wyróżniony (tzn. obszar, w którym sieć produkuje na swoim wyjściu sygnał +1) może posiadać formę szeregu połączonych ze sobą (lub stanowiących oddzielne "wyspy") obszarów plateau. Liczba płaskich powierzchni, składających się na taki kombinowany obszar, odpowiada liczbie neuronów w drugiej warstwie ukrytej, liczba boków zaś każdego plateau odpowiada liczbie neuronów w pierwszej warstwie ukrytej. Krótka refleksja uzmysławia, że w ten sposób można reprezentować absolutnie dowolny kształt (w tym również wklęsłości i otwory, bo niektóre plateau są dodawane do końcowej kombinacji ze znakiem "-", a więc mogą być traktowane jako wzorniki "wykrawające" kawałki przestrzeni innych plateau). Łatwo się upewnić, że używając dostatecznie dużej liczby takich plateau można zrealizować (z relatywnie dużą dokładnością) każde, absolutnie dowolne odwzorowanie danych wejściowych w sygnał wyjściowy.
Konsekwencją tych rozważań jest stwierdzenie, że perceptron wielowarstwowy z dwoma warstwami ukrytymi może teoretycznie modelować dowolny problem (formalnym potwierdzeniem tego stwierdzenia jest twierdzenie Kołmogorowa). Co nie musi oznaczać, że sieć z większą liczbą warstw nie mogłaby rozwiązać danego problemu w sposób bardziej dogodny lub prostszy - twierdzenie wskazuje na minimalną wymaganą złożoność
#31
sieci - jest oczywiste, że sieć bardziej skomplikowana w budowie będzie umiała więcej. Jednakże w praktyce większość problemów wymaga zaledwie pojedynczej warstwy ukrytej, w pewnych szczególnych przypadkach należy zastosować sieć posiadającą dwie warstwy ukryte, zaś potrzeba zastosowania trzech warstw ukrytych nie pojawia się praktycznie nigdy.
Istotnym problemem w zagadnieniach klasyfikacyjnych jest sposób interpretacji punktów położonych "na lub w pobliżu" urwiska. Typowy sposób postępowania polega na przyjęciu pewnych poziomów ufności (próg akceptacji i próg odrzucenia), które muszą zostać przekroczone, aby można było uznać, że neuron "podjął decyzję". Na przykład, jeśli poziomy akceptacji i odrzucenia wynoszą odpowiednio 0.95 i 0.05, to wartość wyjściowa neuronu przekraczająca 0.95 wskazuje, że przypadek został zaklasyfikowany do grupy, wartość niższa od 0.05 świadczy o wykluczeniu z grupy, zaś wartość znajdująca się pomiędzy wymienionymi wartościami świadczy, że neuron jest "niezdecydowany".
Bardziej wyrafinowanym sposobem (i może bardziej użytecznym) interpretacji wartości pośrednich (tych ze zbocza) jest traktowanie wartości wyjściowych neuronu jako prawdopodobieństw określonych sytuacji. W takim przypadku sieć daje więcej informacji niż w przypadku prostej decyzji: określa nie tylko to, jaką powinno się podjąć decyzję, ale dodatkowo pokazuje wartość prawdopodobieństwa, wartościując to, jak bardzo sieć jest pewna (w sensie formalnym) swojej decyzji.
Istnieją modyfikacje perceptronów wielowarstwowych (dostępne w STNeural Networks), które generalnie pozwalają na interpretację wartości wyjściowych sieci neuronowych jako prawdopodobieństw, co oznacza, że w rzeczywistości sieć uczy się modelować funkcję gęstości prawdopodobieństwa dla rozważanych zmiennych wejściowych i dla poszczególnych klas. Jednakże taka probabilistyczna interpretacja jest dopuszczalna tylko wówczas, gdy spełnione są
pewne założenia dotyczące rozkładu danych (w szczególności, że pochodzi on z rodziny rozkładów wykładniczych; Bishop, 1995). Sama decyzja dotycząca zaklasyfikowania określonych danych do określonych klas może być w ostateczności podjęta mimo niespełnienia tych założeń, ale interpretacja probabilistyczna, pozwalająca na rozwinięcie bardziej sformalizowanej techniki podjęcia i oceny wyrafinowanej decyzji (opartej na przykład na koncepcji "minimalnego kosztu") wymaga jednak zbadania formalnych warunków stosowalności tej interpretacji (na przykład w zakresie formalnych właściwości i charakteru rozkładu danych).

$Inne algorytmy uczenia perceptronów wielowarstwowych

We wcześniejszych fragmentach bieżącej sekcji zamieszczona została dyskusja dotycząca sposobu, w jaki algorytm wstecznej propagacji błędów realizuje - przy wykorzystaniu gradientu - ruch w dół po powierzchni błędu. Pozwalając sobie na pewne uproszczenie, można stwierdzić, że w trakcie realizacji tej metody najpierw wyznaczany jest w ustalonym punkcie powierzchni kierunek największego spadku, a następnie wykonywany jest przeskok po powierzchni w wyznaczonym kierunku na odległość proporcjonalną do współczynnika uczenia i do nachylenia, uwzględniając dodatkowo bezwładność w celu utrzymania stabilnego ruchu w niezbyt często zmieniającym się kierunku. Posługując się zabawną analogią, można stwierdzić, że realizowany sposób postępowania jest podobny do zachowania się kangura, któremu zawiązano oczy i który w związku z tym wyłącznie może wyczuwać nachylenie gruntu w miejscu, gdzie stoją jego stopy. Taki kangur może "wycelować" w kierunku największego spadku, a potem robi hop i ma nadzieję, że posuwa się we właściwym kierunku. W rzeczywistości po skoku kangur może wylądować w punkcie położonym wyżej, niż ten punkt, z którego startował (problem niemonotoniczności funkcji błędu w obszarze objętym skokiem), a także może
#32
wpaść do dziury, z której już się nie wydostanie (problem minimów lokalnych). W rzeczywistości problem "zawiązanych oczu kangura" nie jest aż tak ostry, jak to wyżej opisano, ponieważ przed każdym skokiem spadki funkcji błędu wyznaczane są niezależnie i w kolejności losowej dla różnych aspektów powierzchni błędu, odpowiadających kolejnym przypadkom zbioru uczącego, jednakże wartość ta jest dobrą aproksymacją spadku dla łącznej powierzchni błędu.
Inne algorytmy uczenia pracują czasem w inny sposób, ale każdy z nich stosuje strategię zaprojektowaną w gruncie rzeczy do jednego celu: do poruszania się w kierunku minimum tak szybko, jak tylko jest to możliwe.
Od pewnego czasu stosowane są jednak także bardziej wyrafinowane techniki służące do optymalizacji funkcji nieliniowych. STNeural Networks umożliwia korzystanie z trzech takich wyrafinowanych metod: metody gradientów sprzężonych, Quasi Newtona i metody Levenberga-Marquardta (Bishop, 1995; Shepherd, 1997). Metody te należą do bardzo skutecznych form dwóch grup algorytmów: metod poszukiwania wzdłuż wyznaczonej prostej (line search) oraz metod opartych na przyjętym modelu obszaru (model-trust region approach).
Algorytm poszukiwańia wzdłuż prostej działa zgodnie z następującą regułą: obierany jest pewien sensowny (patrz niżej) kierunek ruchu po wielowymiarowej powierzchni. Następnie w kierunku tym prowadzona jest prosta i wyznaczane jest minimum funkcji błędów dla wszystkich punktów leżących wzdłuż tej prostej. Korzysta się tu z faktu, że wyznaczenie minimum funkcji wzdłuż zadanej prostej jest zadaniem relatywnie prostym, do rozwiązania którego stosowane są pewne formy algorytmu bisekcji. Po znalezieniu minimum wzdłuż zadanego początkowo kierunku z miejsca położenia tego minimum wyznacza się nowy sensowny kierunek i cały proces ten jest powtarzany.
Nie ulega wątpliwości, że postępując w opisany sposób, będziemy stale posuwali się w kierunku malejących wartości funkcji błędu i osiągniemy wreszcie punkt, który będzie minimum tej funkcji (niestety może się zdarzyć, że lokalnym, ale na to nie ma rady). Wątpliwości może budzić jedynie zastosowane w tym kontekście wyrażenie "sensowny kierunek". Jaki to jest ten sensowny kierunek?
Na pozór oczywistym wyborem byłoby zastosowanie kierunku największego spadku (a więc tego samego kierunku, który stosowany jest w metodzie wstecznej propagacji błędów). W rzeczywistości jednak ten intuicyjnie oczywisty kierunek okazuje się raczej zły. Można wykazać, że przeprowadzając minimalizację wzdłuż jednego taką metodą wybranego kierunku narażamy się na to, że któraś kolejna linia wyznaczona zgodnie z regułą największego spadku może "zniszczyć" rezultaty minimalizacji osiągnięte wzdłuż któregoś wcześniej wybranego kierunku. Co więcej, tak zaproponowana metoda poszukiwania minimum jest mało efektywna obliczeniowo. Okazuje się bowiem, że nawet na takiej prostej powierzchni jak paraboloida, przy stosowaniu omawianej metody będzie na ogół potrzebne przeprowadzenie dużej liczby poszukiwań wzdłuż kolejno proponowanych prostych. Lepszym rozwiązaniem jest więc wybór kierunków według zasady tak zwanych kierunków sprzężonych, czyli "nie wpływających na siebie" - stąd nazwa metoda gradientów sprzężonych (Bishop, 1995).
Metoda gradientów sprzężonych bazuje na założeniu, że powierzchnia błędu w n-wymiarowej przestrzeni ma kształt paraboliczny. W rzeczywistych przypadkach kształt funkcji błędu zazwyczaj odbiega od tego założonego, modelowego kształtu, jednakże w pobliżu minimum w dużym stopniu przypomina on n-wymiarową paraboloidę, co uzasadnia użycie tego algorytmu optymalizacji. Oczywiście, im bardziej rzeczywisty kształt funkcji błędu różnić się będzie od założonego kształtu, tym mniejsza będzie skuteczność prowadzonych obliczeń.
Obliczenia rozpoczyna się od pewnego punktu startowego (od pewnego początkowego wektora wag Wo). W tym punkcie wyznacza się kierunek
#33
zgodny z gradientem funkcji. Warto zauważyć, że na skutek tego założenia pierwszy krok w omawianej tu metodzie jest wykonywany w podobny sposób, jak w metodzie wstecznej propagacji błędów. Następnie wzdłuż tak wyznaczonego kierunku przeprowadza się proces poszukiwania minimum funkcji błędu. Jeśli kierunek poszukiwań wyobrazimy sobie jako linie prostą styczną do paraboloidy, to minimalizację wartości funkcji w tym kierunku można przedstawić jako wędrówkę wzdłuż wyznaczonego kierunku i poszukiwanie najmniejszej wartości paraboloidy położonej dokładnie nad (lub pod) wyznaczonym kierunkiem. Przyjmijmy, że wzdłuż rozpatrywanego kierunku funkcja błędu przyjmuje najmniejszą wartość dla pewnego wektora wag wj.
Po wyznaczeniu punktu Wj rozpoczyna się najistotniejszy element działania algorytmu. Mianowicie w tym momencie należy wyznaczyć nowy kierunek poszukiwań. Wskaże on drogę, po której należy podążać od punktu wi w celu znalezienia nowej, mniejszej wartości funkcji błędu. W metodzie gradientów sprzężonych przyjmuje się, że nowy kierunek poszukiwań wyznaczony jest przez wektor sprzężony z wektorem określającym poprzedni kierunek.
W tym miejscu może warto wyjaśnić, co oznacza pojęcie wektory sprzężone. W tym celu wcześniej jednak przypomnijmy sobie pojęcie wektorów ortogonalnych. Są to takie wektory, których współrzędne wymnożone przez siebie (odpowiednio: pierwsza współrzędna pierwszego wektora razy pierwsza współrzędna drugiego wektora, druga współrzędna pierwszego wektora razy druga współrzędna drugiego wektora itd.) oraz zsumowane razem dają jako wartość zero. Interpretując geometrycznie można stwierdzić, że wektory ortogonalne są to po prostu wektory prostopadłe do siebie.
Jeśli narysujemy w dwuwymiarowym układzie współrzędnych dwa wektory prostopadłe do siebie i wyobrazimy sobie punkt, który porusza się w kierunku wyznaczonym przez jeden z tych wektorów, to rzut tego punktu na prostą wyznaczoną przez drugi wektor nie zmienia
swojego położenia. Fakt prostopadłości wektorów możemy więc w bardzo prosty sposób zbadać za pomocą formuły matematycznej: dwa wektory są prostopadłe, jeśli ich iloczyn skalarny jest równy zero. Zauważmy jednak, że definiując warunek prostopadłości odwołujemy się wyłącznie do tych dwóch wektorów, których ten fakt dotyczy.
Inaczej sprawa wygląda w przypadku sprzężenia. Jeśli jakieś wektory są sprzężone, to oznacza to ich specjalne położenie względem pewnej funkcji kwadratowej. Jest to ważna okoliczność - po prostu nie możemy mówić o sprzężeniu wektorów bez odwołania się do tej funkcji. W naszym przypadku tą funkcją będzie funkcja błędu (dlatego wcześniej założyliśmy, że funkcja ta ma kształt paraboloidalny - jeśli warunek ten nie byłby spełniony, to nie moglibyśmy korzystać z pojęcia sprzężenia). Będziemy więc dalej mówić o wektorach sprzężonych względem paraboloidalnej funkcji błędu.
Niech p będzie pierwotnym kierunkiem minimalizacji (czyli tym, który został wyznaczony na podstawie wektora gradientu w punkcie w0). Ustaliliśmy wyżej, że punkt wi minimalizuje wartość funkcji błędu wzdłuż kierunku p. Wyznaczony w punkcie Wi kolejny kierunek minimalizacji q będziemy uważać za sprzężony z kierunkiem p, jeśli spełniona jest następująca własność: gradienty funkcji wyznaczone dla różnych punktów położonych wzdłuż prostej wyznaczonej przez wektor q różnią się między sobą wyłącznie o wektory prostopadłe do poprzedniegokierunku minimalizacji p.
Korzystając z tego określenia, możemy wykazać, że poszukiwanie minimum wzdłuż kierunku q nie zepsuje minimum znalezionego wcześniej wzdłuż kierunku p. Istotnie, gradient wyznaczony w punkcie Wi jest prostopadły do kierunku p. Gdyby było inaczej, gradient ten miałby pewną składową wzdłuż kierunku p, wskazującą na to, że wzdłuż tego kierunku można było jeszcze polepszyć stopień minimalizacji funkcji, bo kierunek najszybszego spadku wartości funkcji (określony przez wektor przeciwny do gradientu) miałby wtedy składową wzdłuż kierunku p a to
#34
jest sprzeczne z założeniem, że punkt Wi był punktem minimalnym. Wybierając nowy kierunek q według reguły gradientów sprzężonych, zapewniamy sobie to, że (zgodnie z definicją sprzężenia) dla punktów leżących wzdłuż nowego kierunku q kierunek najszybszego spadku wartości funkcji będzie zawsze prostopadły do kierunku p. Ma to spore znaczenie, gdyż dzięki takiej własności, poruszając się wzdłuż kierunku q, nie będziemy się poruszać względem punktu wyznaczonego metodą największego spadku na kierunku p. Geometrycznie możemy stwierdzić, że w trakcie naszej wędrówki wzdłuż q przez cały czas znajdować się będziemy w punkcie minimalnym w kierunku p. Dzięki temu przy dalszych poszukiwaniach nie zagubimy minimum osiągniętego względem p.
Po wyznaczeniu kierunku q cały proces się powtarza: wyznaczamy minimum funkcji wzdłuż tego kierunku (osiągając pewien punkt w2) i określamy nowy kierunek poszukiwań, sprzężony z poprzednim. Jeśli minimalizowana funkcja błędu wyznaczona jest w przestrzeni n-wymiarowej, to wystarczy n powtórzeń, aby osiągnąć minimum. Oczywiście to osiągnięcie minimum jest gwarantowane przy założeniu, że funkcja jest paraboloidalna, co oznacza albo że rozwiązujemy dość proste zdanie, albo że znajdujemy się już stosunkowo niedaleko minimum (być może, niestety, lokalnego).
Wiemy już, w jakim celu należy posługiwać się techniką wektorów sprzężonych przy wyborze kierunków, w których (kolejno) poszukiwane jest minimum rozważanej funkcji błędu (co odpowiada oczywiście procesowi uczenia sieci). Obecnie pokażemy, jak takie kierunki można praktycznie wyznaczać.
Matematyczna definicja wektorów sprzężonych mówi, że wektory r i s są sprzężone względem pewnej funkcji paraboloidalnej, jeśli r' H s = O, gdzie H jest hesjanem (macierzą drugich pochodnych) tej funkcji. Wyznaczanie wektorów sprzężonych bezpośrednio na podstawie tej definicji wymaga jednak znajomości hesjanu minimalizowanej funkcji, co w przypadku funkcji
błędu sieci neuronowej jest zdecydowanie trudne do uzyskania. Dlatego przy praktycznym stosowaniu metody gradientów sprzężonych do uczenia sieci neuronowej stosuje się uproszczoną metodę Polaka-Rebiere'a. Zaletą tej metody jest jej zdolność do wyznaczania sprzężonych kierunków poszukiwań bez znajomości hesjanu. Zastosowano w tym celu specjalną technikę, w której do wyznaczenia kierunku sprzężonego w i-tym kroku algorytmu wykorzystuje się wartość gradientu w tym kroku, zmodyfikowaną o pewną część kierunku poszukiwań stosowanego w kroku i-1 (w metodzie tej widzimy wyraźną analogię do gradientowej metody uczenia z bezwładnością).
W rzeczywistości na złożonej, skomplikowanej w kształcie powierzchni funkcji błędu, charakterystycznej dla większości typowych zadań uczenia sieci neuronowych, dokładne sprzężenie kierunków poszukiwań zdecydowanie zawodzi, co powoduje, że dla odnalezienia minimum funkcji n zmiennych potrzeba więcej niż n iteracji poszukiwań. Jednak i tak w typowych przypadkach metoda gradientów sprzężonych wymaga (dla pełnego nauczenia sieci) realizacji znacznie mniejszej liczby epok,, niż typowo stosowana metoda wstecznej propagacji błędów. Co więcej, metoda ta ma także i tę dodatkową wyższość nad klasycznym backpropagation, że jest ona zbieżna do lepszego (dokładniej osiąganego) minimum. Jest to konsekwencją dwóch faktów:
algorytm poszukiwania najmniejszej wartości funkcji wzdłuż zadanego kierunku zatrzymuje się w każdej iteracji dokładnie w punkcie minimum kierunkowego. Jeśli wybrany na pewnym etapie kierunek przechodzi przez globalne lub lokalne minimum całej wielowymiarowej funkcji błędu, wówczas minimum to zostaje zlokalizowane z całą dokładnością. W odróżnieniu od tego wiadomo, że algorytm wstecznej propagacji błędów może wielokrotnie przeskakiwać przez punkt minimum, nie osiągając go wcale. Ażeby równie dokładnie osiągnąć minimum funkcji błędu, jak to ma miejsce w metodzie
#35
gradientów sprzężonych, algorytm wstecznej propagacji błędu musiałby zostać uruchomiony z bardzo niewielkim współczynnikiem uczenia, przez co proces uczenia z wykorzystaniem tego algorytmu musiałby trwać wybitnie długo;
kolejne kierunki poszukiwań w metodzie gradientów sprzężonych dobrane są w taki sposób, że minimum osiągnięte w pewnym kierunku poszukiwań zachowywane jest w trakcie kolejnych poszukiwań. Z tego powodu przy stosowaniu tej metody nigdy nie zachodzi konieczność ponownego dokonywania minimalizacji w żadnym rozpatrywanym wcześniej kierunku. Cechy tej nie posiada metoda wstecznej propagacji błędów, w której w kolejnych krokach może zostać zagubiona informacja o minimum osiągniętym w rozpatrywanym wcześniej kierunku, co powoduje, że po wykonaniu minimalizacji w pewnym kierunku może się zdarzyć, że ponownie konieczna będzie minimalizacja w tym samym kierunku po kilku krokach wykonanych w innych kierunkach.
W trakcie realizacji omawianych dotychczas metod wykonuje się kolejne przesunięcia po powierzchni błędu, mające prowadzić do punktu położonego najniżej. Zakłada się, że minimum zostanie osiągnięte po wykonaniu pewnej liczby kroków. Alternatywne podejście do zagadnienia minimalizacji funkcji polega na próbie osiągnięcia położonego najniżej punktu w jednym kroku. Strategię taką stosuje się w metodach opartych na modelu obszaru (model-trust region approach). Ogólnie polega to na tym, że zamiast przeprowadzać poszukiwanie w jakimkolwiek wyznaczonym kierunku, przyjmuje się założenie, że powierzchnia błędu ma jakiś ustalony prosty kształt, tak że jej minimum może zostać wyznaczone (i osiągnięte) bezpośrednio (w jednym kroku). W typowych modelach zakłada się, że charakteryzuje się ona łagodnym kształtem, posiadającym dobrze zaznaczone minimum (np. zakłada się, że jest to paraboloida). Biorąc za
punkt wyjścia pewien początkowy wektor wag w^ i zakładając paraboloidalny kształt minimalizowanej funkcji błędu, minimum tej funkcji osiągnąć można w jednym kroku przesuwając się zgodnie z formułą:
wk+1=wk-H-'(wk)VL(wk)
gdzie H(wk J jest macierzą drugich pochodnych
(hesjanem), natomiast VE(wk J jest wektorem
pierwszych pochodnych (gradientem) w punkcie wk.
Postępowanie zgodnie z powyższym wzorem określane jest jako minimalizacja funkcji metodą Newtona. Pozornie skomplikowany wzór opisujący istotę rozważanej tu metody można uzyskać w dość prosty sposób. Jak wiemy, ciągłą funkcję błędu E, mającą wszystkie pochodne w punkcie wk, przedstawić można w postaci sumy szeregu potęgowego. Wyraża to ogólnie znany wzór Taylora. Z uwagi na paraboloidalny kształt funkcji pominiemy w tym wzorze wyrazy szeregu rzędu wyższego niż dwa. Prowadzi to do formuły:
L(wk+i )= #(wk )+ VL(wk Xwk+1 - wk ) + 2 (wk+i - wk Y H(wk Xwk+i - wk )
Jeśli w punkcie wk+i funkcja ma osiągnąć minimum, to wektor pierwszych pochodnych wyznaczony w tym punkcie jest wektorem
zerowym. Obliczmy więc L''(wk+1J
i przyrównajmy otrzymane wyrażenie do zera. Następnie z uzyskanego równania wyznaczmy wektor Wk+i- Uzyskany wynik nazywany jest właśnie metodą Newtona.
Podsumujmy: metoda Newtona pozwala na osiągnięcie w jednym
kroku minimum funkcji błędu pod warunkiem, że funkcja ta ma kształt ___ paraboloidalny.
Niestety, w ogólnym przypadku minimalizowana w trakcie uczenia sieci neuronowej funkcja błędu
#36
odbiega swym kształtem od zakładanej paraboloidy, co powoduje, że wyznaczenie jej minimum w jednym kroku nie jest możliwe. Można jednak zauważyć, że w bezpośrednim sąsiedztwie minimum podobieństwo funkcji błędu do paraboloidy jest już znaczne. Jeśli więc proces minimalizacji rozpoczniemy w bezpośrednim sąsiedztwie minimum, to wykonanie kroku zgodnie z powyższym opisem będzie w pełni uzasadnione.
Pojawiają się jednak pewne wątpliwości: jak duże jest to bezpośrednie sąsiedztwo minimum, w którym uzasadnione jest stosowanie metody Newtona oraz co zrobić, jeśli proces poszukiwań rozpoczniemy od punktu leżącego w większej odległości od minimum.
Rozwiązaniem tych problemów może być zastosowanie metody Levenberga-Marquardta. W pobliżu minimum posiada ona cechy metody Newtona, zaś wraz z oddalaniem się punktu startowego od minimum sposób jej działania zbliża się do metody najszybszego spadku. Wzór opisujący ten algorytm wygląda następująco:
W zapisie formalnym różnica pomiędzy formułą Newtona i Levenberga-Marquardta jest niewielka -polega wyłącznie na tym, że w tej drugiej do hesjanu dodawana jest macierz jednostkowa przemnożona przez pewien dodatni współczynnik A, którego wartość modyfikowana jest w trakcie uczenia. Spróbujmy przeanalizować wpływ wartości A na sposób działania algorytmu. Jeśli A zbliża się do zera, to wektor wag uzyskany przy pomocy metody Levenberga-Marquardta będzie bardzo zbliżony do wartości wyznaczonych przy zastosowaniu formuły Newtona. Zwiększaniu wartości A towarzyszy wzrost znaczenia kierunku poprawy, wyznaczonego w oparciu o gradient funkcji błędu. Warto zauważyć, że A nie tylko spełnia funkcję "współczynnika wagowego", określającego udział wspomnianych strategii w wyznaczeniu rzeczywistego kierunku zmian, ale również wyznacza wielkość kroku w kierunku
poprawy bazującym na gradiencie - im większa wartość A, tym mniejszy krok.
Algorytm Levenberga-Marquardta rozpoczyna swoje działanie od pewnego punktu startowego Wo-Na początku działania algorytmu przyjmuje się również pewną, niewielką wartość początkową dla współczynnika A. Oznacza to, że na początku działania algorytmu zakładamy, że funkcja błędu w dość dużym stopniu zbliżona jest do funkcji kwadratowej, czyli że poszukiwane minimum jest niezbyt odległe. Stosując podany wyżej wzór, wyznacza się nowy wektor wag Wi. Jeśli nasze założenie o paraboloidalnym kształcie funkcji błędu było słuszne, to wartość błędu w nowym punkcie będzie mniejsza niż w punkcie startowym w0. W takiej sytuacji wraz z przejściem do punktu Wi zmniejszamy wartość współczynnika A (aby w kolejnym kroku jeszcze bardziej wzmocnić wpływ formuły Newtona na wyznaczenie kolejnej poprawki) i przy tak zmodyfikowanej formule poszukiwawczej wyznaczamy kolejny wektor wag. Jeśli podobieństwo rzeczywistego kształtu funkcji błędu i hipotetycznej paraboloidy będzie dostatecznie duże, to minimum zostanie zlokalizowane i będzie osiągnięte w bardzo krótkim czasie. Jak wiemy, takiego zachowania algorytmu można się spodziewać stosunkowo blisko minimum funkcji błędu.
Jeśli jednak wyznaczonemu w fc-tym kroku wektorowi wag wk odpowiada większa wartość funkcji błędu niż w kroku poprzednim wk.i, to świadczy to, że przyjęty model nie opisuje dostatecznie dokładnie kształtu funkcji błędu. Wówczas nie modyfikujemy wektora wag (pozostajemy w punkcie wk.i), lecz za to zwiększamy wartość A - dzięki czemu zwiększamy wpływ gradientu na kierunek zmian wag (ale jednocześnie zmniejszamy wielkość ewentualnego kroku w wyznaczonym kierunku). Jeśli operacja ta nie doprowadzi do znalezienia wektora wag Wk, gwarantującego istotne zmniejszenie wartości funkcji błędu w stosunku do jej wartości w punkcie wk_!, to (pozostając nadal w tym punkcie) ponownie zwiększamy A.
#37
Zauważmy, jak to działa: pozostając stale w tym samym punkcie w^i i zwiększając systematycznie wartość współczynnika A, będziemy testować kolejne kierunki zmian, coraz bardziej zbliżone do tego, który jest zgodny z kierunkiem wyznaczonym przy zastosowaniu metody największego spadku (a więc takiego, który z pewnością doprowadzi do zmniejszenia wartości funkcji błędu). Warto zauważyć, że sprawdzanie kolejnych kierunków przeprowadzać będziemy przy zastosowaniu coraz mniejszego kroku, dzięki czemu w końcu wyznaczymy wektor wag w^ o mniejszej (niż w punkcie startowym Wk-i) wartości błędu. Wykonana modyfikacja będzie może niewielka, ale we właściwym kierunku.
Przedstawiona powyżej metoda poszukiwania minimum gwarantuje, że uzyskiwane kolejno wektory wag w* odpowiadać będą coraz mniejszym wartościom funkcji błędu. Opisany proces jest powtarzany, aż do chwili dotarcia do minimum (niestety, może się zdarzyć, że będzie to minimum lokalne).
W typowych przypadkach algorytm Levenberga-Marąuardta jest najszybszym algorytmem uczenia sieci jednokierunkowych, dostępnym w STNeural Networks. Niestety posiada on kilka ważnych ograniczeń. Wśród nich można wymienić następujące:
algorytm ten może być użyty wyłącznie dla sieci z pojedynczym neuronem wyjściowym i funkcją błędu w postaci sumy kwadratów odchyleń, nie nadaje się on do uczenia sieci
o wielu wyjściach lub takich sieci, których cel działania nie daje się wyrazić w formie błędu średniokwadratowego;
jego wymagania w zakresie pamięci są proporcjonalne do W*2 (gdzie W jest liczbą parametrów sieci; powoduje to, że jest on niepraktyczny w przypadku dużych sieci).
Oba wymienione ograniczenia powodują, że metoda Levenberga-Marquardta nie jest używana aż tak często, jak by na to (pozornie) zasługiwała.
Metoda gradientów sprzężonych jest prawie tak samo dobra, a nie ma wskazanych ograniczeń.
Opisane wyżej metody oparte na pojęciu gradientu sprzężonego oraz techniki wykorzystującej pojęcie modelu powierzchni błędu to jedynie niektóre spośród ogromnej liczby opracowanych ostatnio nowych metod uczenia sieci neuronowych. Jednakże mimo ogromnego postępu, jaki uzyskano w tej sprawie, użyteczność klasycznej metody uczenia z wykorzystaniem wstecznej propagacji błędów nadal nie jest kwestionowana, zwłaszcza w przypadkach, kiedy natura rozwiązywanego zadania jest mało znana i dlatego problematyczne jest spełnienie założeń teoretycznych warunkujących dostarczanie szybszych rozwiązań przez bardziej wyrafinowane algorytmy. Algorytm wstecznej propagacji błędów jest także dosyć użyteczny, jeśli nie jest wymagana bardzo duża precyzja rozwiązań, gdyż jego słabością bywa niezdolność do precyzyjnego "wpisania" się w dokładne minimum funkcji błędu. Jest on również dobrym rozwiązaniem wówczas, gdy zbiór danych jest bardzo duży i charakteryzuje się wysokim stopniem redundancji. Modyfikacja wag metodą wstecznej propagacji błędów realizowana po prezentacji każdego przypadku powoduje wówczas, że redundancja nie ma żadnego ujemnego wpływu na wynik końcowy. Redundancja w danych występuje zwykle na skutek tego, że proces gromadzenia danych do zbioru uczącego nie pozwala na ich łatwą selekcję i wśród danych uczących występują wielokrotnie te same dane. Taka sytuacja może wystąpić na przykład wtedy, gdy zadaniem sieci jest automatyczne sterowanie pewnym złożonym systemem, a zbiór danych do uczenia sieci powstaje poprzez długotrwałą obserwację zachowania człowieka sterującego uprzednio tym systemem. W takiej sytuacji wielokrotne pojawianie się takich samych zestawów danych wejściowych (odczyty przyrządów rejestrujących stan sterowanego procesu) i wzorcowych sygnałów wyjściowych dla sieci (sygnały sterujące wysyłane przez operatora, odpowiadające zarejestrowanym danym wejściowym) nie jest niczym nadzwyczajnym, przeciwnie - stanowi
#38
raczej normę. Takie dane nie wnoszą nowej informacji w procesie uczenia, jednak przy stosowaniu metody wstecznej propagacji błędu nie stanowi to żadnego problemu. Niech nawet cały zbiór uczący zostanie podwojony poprzez powielenie każdego przypadku, to wtedy wprawdzie każda epoka będzie realizowana w dwa razy dłuższym czasie, ale efekt będzie taki sam, jak realizacja dwóch starych epok, tak więc nie doprowadzi to do żadnej straty. W przeciwieństwie do tego, algorytmy Levenberga-Marquardta i gradientów sprzężonych, realizując obliczenia, korzystają z całego zbioru danych; z tego powodu zwiększenie liczby przypadków zawartych w zbiorze uczącym może doprowadzić do znacznego spowolnienia każdej epoki, ale niekoniecznie polepszy uzyskany rezultat. Precyzyjniej można powiedzieć, że zwiększenie liczby danych zupełnie nie polepszy działania wspomnianych wyżej wyrafinowanych algorytmów, jeśli dane są w pełni redundantne (powtarzają się dosłownie). Jeśli dane mają charakter rozproszony, zwiększenie ich ilości sprawi, że każda epoka będzie dawać lepsze rezultaty, chociaż kosztem znacznego wydłużenia czasu obliczeń.
Również w przypadku bardzo małych zbiorów danych metoda wstecznej propagacji błędów jest równie dobra jak inne metody, ponieważ w takich przypadkach ilość informacji zawartych w zbiorze uczącym jest zbyt mała do tego, aby stosować bardzo finezyjne rozwiązania. Podsumowując, można stwierdzić, że bardziej zaawansowane algorytmy mogą w takim przypadku pozwalać na osiągnięcie niższego błędu uczenia, ale jest mało prawdopodobne, aby ich stosowanie prowadziło do polepszenia się w takim samym stopniu błędu walidacyjnego.
Warto wiedzieć, że ST Neural Networks zawiera również dwie modyfikacje metody wstecznej propagacji błędów: algorytm szybkiej propagacji (Fahlman, 1988) oraz metodę Delta-bar-Delta (Jacobs, 1988), które zostały zaprojektowane w celu radzenia sobie z pewnymi ograniczeniami pierwowzoru. W większości sytuacji nie są one
w istotny sposób lepsze niż "czysta" metoda wstecznej propagacji błędów, a czasami są one nawet gorsze (rezultaty stosowania są uzależnione od konkretnej aplikacji). Zawierają one także większą niż inne algorytmy liczbę parametrów sterujących, przez co ich użycie jest trudniejsze. Metody te nie są w związku z tym szczególnie popularne i dlatego nie zostaną one szczegółowo opisane w tej sekcji.

$Sieci o radialnych funkcjach bazowych

W poprzedniej sekcji przedstawiono, w jaki sposób perceptron wielowarstwowy modeluje zadaną funkcję. Jak opisano wyżej, wymagane odpowiedzi sieci uzyskuje się wtedy, korzystając ze złożenia funkcji typu "urwisko sigmoidalne". W przypadku problemów klasyfikacyjnych odpowiada to podzieleniu przestrzeni sygnałów wejściowych (przestrzeni wzorców) za pomocą hiperpłaszczyzn. Użycie hiperpłaszczyzn do dokonania podziału przestrzeni jest podejściem odwołującym się do intuicji i bazuje na zasadniczej prostocie linii jako struktury geometrycznej i formuły algebraicznej.
Równie pociągającym i intuicyjnym podejściem jest jednak także podział przestrzeni przy użyciu okręgów lub (bardziej ogólnie) hipersfer. Hipersferę określa jej środek oraz promień. Uogólniając, można powiedzieć, że podobnie jak neuron w sieci MLP reaguje (nieliniowo) na odległość punktów od "sigmoidalnego urwiska", tak w sieci o radialnych funkcjach bazowych neurony reagują (nieliniowo) na odległość punktów od "centrum", które jest reprezentowane przez podlegające uczeniu parametry neuronu radialnego (Bloomhead and Lowe, 1988; Moody and Darkin, 1989; Haykin, 1994). Powierzchnia odpowiedzi pojedynczego neuronu radialnego ma charakter funkcji gaussowskiej (dzwonowej), o wierzchołku położonym nad centrum i o malejącej wartości funkcji wraz z oddalaniem się od tego punktu. Podobnie jak stromość występującej w perceptronie krzywej sigmoidalnej
#39
może być zmieniana, tak również można zmienić nachylenie funkcji gaussowskiej neuronu radialnego (porównaj poniższy rysunek).
Neuron w perceptronie jest definiowany przez swoje wagi i wartość progową, które razem dają równanie określonej prostej oraz określają tempo zmian wartości funkcji wraz z oddalaniem się od wyznaczonej prostej. Przed zastosowaniem sigmoidalnej funkcji aktywacji poziom pobudzenia neuronu definiuje hiperpłaszczyznę i z tego powodu w STNeural Networks neurony takie są określane jako liniowe (chociaż funkcja aktywacji jest zazwyczaj nieliniowa). W przeciwieństwie do tej sytuacji neuron radialny jest zdefiniowany przez swoje centrum oraz parametr określany jako "promień". Punkt w przestrzeni W-wymiarowej jest definiowany przy użyciu W liczb, co dokładnie odpowiada liczbie wag w neuronie liniowym, z tego powodu centrum neuronu radialnego jest przechowywane w zestawie parametrów określanych w STNeural Networks również jako "wagi", (chociaż przy wyznaczaniu łącznego pobudzenia neuronów nie dokonuje się mnożenia składowych sygnałów przez te "wagi", tylko wyznaczana jest odległość wektora wag i wektora sygnałów wejściowych). Promień (lub inaczej odchylenie) jest przechowywany w neuronie jako tak zwana "wartość progowa". Warto podkreślić, że zarówno "wagi" jak i "wartość progowa" w neuronie radialnym są całkowicie czymś innym niż w neuronie liniowym, co powoduje, że stosowanie tej terminologii jest niebezpieczne, jeśli się nie pamięta o tym zróżnicowaniu. Wagi
radialne definiują punkt, zaś radialna wartość progowa jest w rzeczywistości odchyleniem - ale stosowane nazwy są te same, co w neuronach perceptronów wielowarstwowych.
Sieć o radialnych funkcjach bazowych (sieć RBF -Radial Basis Functlon network) posiada zwykle jedną warstwę ukrytą, zawierającą neurony radialne, z których każdy modeluje gaussowską powierzchnię odpowiedzi. Z uwagi na silnie nieliniowy charakter tych funkcji zazwyczaj wystarcza jedna warstwa ukryta do zamodelowania funkcji o dowolnym kształcie. Warunkiem utworzenia przez sieć RBF skutecznego modelu dowolnej funkcji jest jednak zapewnienie w strukturze sieci dostatecznej liczby neuronów radialnych. Jeśli jest ich wystarczająco dużo, można do każdego istotnego szczegółu modelowanej funkcji przywiązać odpowiedni neuron radialny, co gwarantuje, że uzyskane rozwiązanie będzie odwzorowywało zadaną funkcję z całkowicie satysfakcjonującą wiernością.
Pozostaje jeszcze pytanie, w jaki sposób należy połączyć wyjścia ukrytych neuronów radialnych aby uzyskać wymaganą wartość wyjściową sieci. Okazuje się, że wystarczy po prostu zastosować kombinację liniową tych wartości wyjściowych (tzn. ważoną sumę wartości funkcji gaussowskich). Sieć RBF posiada więc warstwę wyjściową zawierającą neurony liniowe z liniową funkcją aktywacji (Haykin, 1994; Bishop, 1995).
Sieci RBF posiadają kilka zalet w porównaniu z sieciami typu MLP. Po pierwsze, jak już wcześniej stwierdzono, mogą one modelować dowolną funkcję nieliniową za pomocą pojedynczej warstwy ukrytej, przez co eliminuje się konieczność podejmowania na etapie projektowania decyzji dotyczącej liczby warstw. Po drugie, prosta transformacja liniowa dokonywana w warstwie wyjściowej może być w całości zoptymalizowana przy użyciu tradycyjnych technik modelowania liniowego, które są szybkie i przy stosowaniu których nie pojawiają się takie problemy jak minima lokalne, które są plagą występującą w uczeniu sieci MLP. Z tego powodu sieci RBF mogą być uczone
#40
w bardzo krótkim czasie (różnica w szybkości uczenia dotyczy rzędów wielkości).
Z drugiej jednak strony, przed zastosowaniem optymalizacji liniowej w odniesieniu do warstwy wyjściowej sieci RBF należy zadecydować
0 wartościach parametrów dużej liczby neuronów radialnych, poprzez określenie dla każdego z nich wartości centrów i odchyleń. Chociaż stosowane do tego celu algorytmy są znacznie szybsze niż te, które stosuje się do uczenia sieci MLP, ale są one nie mniej skłonne do "odkrywania" kombinacji suboptymalnych (co jest odpowiednikiem minimów lokalnych w sieci MLP). Rekompensatą za te niedogodności może być fakt, że dostępny
w ST Neural Networks moduł Automatyczny projektant sieci może zastąpić użytkownika
1 zrealizować za niego niewdzięczny etap badań składający się z licznych eksperymentów, niezbędnych do tego, żeby ustalić wszystkie parametry modelowanej sieci.
Inną cechą różnicującą działanie sieci RBF od sieci MLP jest inne podejście do modelowania przestrzeni. Model uzyskiwany w przypadku sieci RBF można określić jako "skupieniowy", natomiast model uzyskiwany w przypadku sieci MLP można określić jako "płaszczyznowy". Ta odmienność modeli ma swoje praktyczne konsekwencje. Eksperymenty pokazują, że bardziej wyrafinowane kształty modelowanych funkcji i wyższe oczekiwania odnośnie dokładności odpowiedzi wymagają zastosowania w sieciach RBF większej liczby neuronów. Oznacza to, że sieć RBF jest kosztowniejsza od sieci MLP i wymaga większej liczby neuronów w celu właściwego zamodelowania większości badanych funkcji. Oczywiście, zawsze można znaleźć takie kształty funkcji, które w prostszy sposób są reprezentowane przy pomocy jednego lub drugiego rodzaju sieci, ale ogólny bilans zdecydowanie nie preferuje sieci RBF. Wskutek tego, rozwiązania oparte na sieciach RBF będą miały skłonność do wolniejszego działania i będą wymagały większych obszarów pamięci niż odpowiadające im sieci MLP. Z drugiej strony trzeba przypomnieć, że sieci RBF wymagają
krótszego uczenia, co czasami może być istotniej szym ograniczeniem.
Podejście "skupieniowe" powoduje również, że sieci RBF nie mają skłonności do ekstrapolacji modelowanych zależności poza obszarem wyznaczonym znanymi danymi. Jeśli wprowadzone dane testowe są istotnie oddalone od danych uczących, to odpowiedź sieci obniża się gwałtownie do zera. W przeciwieństwie do tego, sieć MLP jest bardziej zdecydowana w swojej odpowiedzi, nawet w przypadku użycia danych testowych daleko oddalonych od danych uczących. Czy cecha ta zostanie uznana za wadę, czy za zaletę, zależy od konkretnej aplikacji, ale, biorąc pod uwagę wszystkie elementy, realizowana przez MLP bezkrytyczna ekstrapolacja jest zwykle uważana za cechę negatywną. Przyjmuje się bowiem, że ekstrapolacja modelowanej funkcji daleko poza dane uczące jest zwykle niebezpieczna i nieuprawniona.
Sieci RBF są również bardziej wrażliwe na "problem wymiarowości" i mają większe kłopoty, jeśli liczba neuronów wejściowych jest duża. Problem ten omawiany jest później, w następnych sekcjach, nie będzie więc tutaj dokładniej dyskutowany.
Jak zaznaczono wcześniej, uczenie sieci RBF przebiega w kilku oddzielonych od siebie etapach. W pierwszej fazie wyznaczane są centra i odchylenia neuronów radialnych następnie optymalizowana jest warstwa wyjściowa.
Centra powinny zostać określone w sposób odzwierciedlający występowanie naturalnych skupień w rozważanych danych. Do dwóch najczęściej stosowanych w tym celu metod zalicza się:
Powtórne próbkowanie. Metoda ta polega na tym, że wybrane w sposób losowy elementy ze zbioru uczącego kopiowane są do neuronów radialnych (jako występujące w tych neuronach zestawy wag). Ponieważ podlegające kopiowaniu sygnały wejściowe wybrane zostały w sposób losowy, więc "reprezentują" one (w sensie
#41
statystycznym) rozkład wszystkich danych uczących. Jednakże, jeśli liczba neuronów radialnych nie jest duża, to neurony te mogą stanowić w rzeczywistości złą reprezentację (Haykin, 1994).
Algorytm k-średnich. Algorytm ten (Bishop, 1995) próbuje ustalić optymalny zbiór punktów, które stanowić będą centra skupień występujących w danych uczących. Mając K neuronów radialnych musimy wytworzyć K niezależnych centrów, w taki sposób, by reprezentowały one charakterystyczne skupiska wejściowych danych. Centra te ustala się w procesie iteracyjnym, w którym powtarzane są następujące czynności (opisując te czynności zakładamy, że w sieci są już wyznaczone pewne centra prowizoryczne, a naszym zadaniem jest modyfikacja położenia tych centrów; o tym, jak ten proces rozpocząć, powiemy nieco dalej).
Każdy element zbioru uczącego przypisywany jest do tego centrum skupienia, które położone jest bliżej danego elementu niż wszystkie pozostałe centra;
Każde centrum skupienia wyznaczane jest jako wektor średnich wartości zmiennych, wyznaczony dla wszystkich punktów należących do danego skupienia.
Po określeniu wartości centrów określane jest odchylenie. Wielkość odchylenia (opisywana również jako współczynnik wygładzania) wyznacza kształt funkcji przejścia przyjętej dla danego neuronu. Mówiąc obrazowo, parametr ten określa, jak bardzo spiczaste są funkcje gaussowskie będące charakterystykami rozważanych neuronów. Ma to silny wpływ na uzyskiwane formy działania sieci. Jeśli funkcje gaussowskie są zbyt spiczaste, to sieć nie będzie poprawnie interpolować wartości funkcji pomiędzy znanymi punktami i sieć taka traci zdolność do generalizacji. Jeśli jednak funkcje gaussowskie są bardzo szerokie, to sieć traci zdolność dokładnego odwzorowywania modelowanych zależności i staje się niewrażliwa na subtelne detale tworzonych funkcji. Jest to
następny przejaw typowego dla sieci neuronowych dylematu niedoszacowania i przeszacowania. Sieć ze zbyt małą wartością współczynnika odchylenia będzie miała tendencję do niedoszacowania wyników, jednak sieć zbudowana z neuronów mających zbyt dużą wartość odchylenia wykazywać będzie tendencję do przeszacowań, co na ogół jest gorsze w skutkach. W typowych sytuacjach odchylenia należy dobrać w taki sposób, aby funkcje Gaussa nachodziły nieco na sąsiadujące centra, ale nie przekrywały się wzajemnie zbyt silnie. Dostępne są różne metody ustalania tego parametru, które zostaną omówione niżej.
Definiowanie przez użytkownika.
Użytkownik samodzielnie określa wielkość odchylenia.
Równomierny przydział odchyleń.
Odchylenie (identyczne dla wszystkich neuronów) jest określane za pomocą pewnej reguły heurystycznej, uwzględniającej liczbę centrów oraz wielkość zajmowanej przez nie przestrzeni (Haykin, 1994).
Przydział metodą k-najbliższych sąsiadów.
Odchylenie dla każdego neuronu jest określane indywidualnie jako średnia odległość do jego k najbliższych sąsiadów (Bishop, 1995). Stąd odchylenia są mniejsze w mocno zagęszczonym obszarze danych, co umożliwia zachowanie drobnych szczegółów, i większe w obszarze, w którym dane występują rzadko (umożliwia to lepszą interpolację).
Po określeniu centrów i odchyleń dla warstwy ukrytej można z kolei przejść do optymalizacji warstwy wyjściowej, korzystając ze standardowej liniowej techniki optymalizacyjnej, jaką jest algorytm pseudoinwersji (dekompozycja według wartości osobliwych) (Haykin, 1994; Golub and Kahan, 1965).
Sieci o radialnych funkcjach bazowych mogą być w różny sposób modyfikowane. Na przykład w warstwie wyjściowej zastosować można zamiast prostego sumowania nieliniową funkcję aktywacji.
#42
Umożliwia to zastosowanie do uczenia sieci RBF dowolnego algorytmu uczenia spośród tych, które przeznaczone są dla perceptronów wielowarstwowych (na przykład możliwe tu jest użycie algorytmu wstecznej propagacji błędów). Możliwe jest również uczenie warstwy radialnej (warstwy ukrytej) przy wykorzystaniu algorytmu Kohonena, co umożliwia określanie centrów w sposób odwzorowujący rozrzut danych.

$Probabilistyczne sieci neuronowe

We wcześniejszej sekcji wspomniano skrótowo, że w przypadku problemów klasyfikacyjnych użyteczną interpretacją wartości wyjściowych sieci jest ich traktowanie jako prawdopodobieństw przynależności do klas. Wspomniano także o tym, że w takiej sytuacji sieć w trakcie uczenia w rzeczywistości uczy się estymować funkcję gęstości prawdopodobieństwa reprezentowaną przez zgromadzone dane. Podobną przydatną interpretację probabilistyczną można przyjąć w problemach regresyjnych, przy założeniu, że wartość wyjściowa sieci traktowana jest jako wartość oczekiwana modelu w danym punkcie przestrzeni wejściowej. Ta wartość oczekiwana jest związana z łączną funkcją gęstości prawdopodobieństwa - zarówno wyjścia, jak i wszystkich wejść.
Estymacja funkcji gęstości prawdopodobieństwa na podstawie danych ma w statystyce długą historię (Parzeń, 1962). Rozważania na ten temat najczęściej prowadzone są na gruncie statystyki bayesowskiej. Statystyka konwencjonalna zazwyczaj może, mając znany model, dostarczyć informacji na temat tego, jaka jest szansa na zaistnienie pewnej wartości wyjściowej. Na przykład wiemy, że szansa na pojawienie się wartości sześć na nieobciążonej kostce jest równa 1/6. Statystyka bayesowska formułuje odwrotne zadania, stawiając niejako całą sytuację "na głowie": badacz przy tym podejściu z reguły estymuje przydatność modelu w oparciu o posiadane dane. Uogólniając to stwierdzenie,
w jeszcze większym stopniu można stwierdzić, że statystyka bayesowska umożliwia estymację funkcji gęstości prawdopodobieństwa parametrów modelu przy wykorzystaniu dostępnych danych. W wyniku analizy bayesowskiej wybierany jest ten model, którego parametry maksymalizują wspomnianą funkcję gęstości prawdopodobieństwa, co pozwala zmniejszyć globalny błąd.
W kontekście zagadnień klasyfikacyjnych, jeśli można wyznaczyć estymatory funkcji gęstości prawdopodobieństwa parametrów (zmiennych wejściowych) dla możliwych klas, to można porównać wynikające z nich prawdopodobieństwa aposteńori (prawdopodobieństwa różnych klas) i wybrać jako rozwiązanie problemu klasę najbardziej prawdopodobną.
Przy zaakceptowaniu tego podejścia nauka rozwiązywania przez sieć problemu klasyfikacyjnego polega w rzeczywistości na próbie nauczenia się przez nią aproksymacj i funkcji gęstości prawdopodobieństwa (jest to z reguły najtrudniejsza część zadania), resztę procesu rozpoznawania może realizować prosty system postprocessingu danych wyjściowych.
Opisany wyżej sposób rozwiązywania sformułowanego zadania przy wykorzystaniu sieci neuronowych jest stosowany od niedawna. Bardziej tradycyjne podejście polegało na konstrukcji estymatora funkcji gęstości prawdopodobieństwa na podstawie danych. Technika ta polega na arbitralnym przyjęciu pewnej postaci funkcji gęstości prawdopodobieństwa (zwykle zakłada się, że jest to rozkład normalny) i oszacowaniu parametrów modelu. Rozkład normalny jest przy tym najczęściej używany między innymi z tego powodu, że umożliwia on oszacowanie parametrów modelu (którymi są: wartość średnia i odchylenie standardowe) przy użyciu technik analitycznych. Problemem, który przy takim podejściu jest najtrudniej rozstrzygnąć, jest zagadnienie, czy założenie o normalności rozkładu danych jest uprawomocnione.
#43
Alternatywne podejście do estymacji funkcji gęstości prawdopodobieństwa jest oparte na tak zwanej aproksymacji jądrowej (Parzeń, 1962; Speckt, 1990; Speckt, 1991; Bishop, 1995; Patterson, 1996). Działanie wspomnianej metody można w sposób uproszczony opisać w ten sposób, że obecność pewnego przypadku w pewnym punkcie przestrzeni wejściowej oznacza dużą gęstość prawdopodobieństwa w tym punkcie. Skupienie przypadków znajdujących się blisko siebie wskazuje na obszar o wysokiej gęstości prawdopodobieństwa. Obszary odległe od jakichkolwiek znanych przypadków charakteryzują się natomiast gęstością prawdopodobieństwa malejącą do zera. Można to zinterpretować następująco: Zbliżając się (w przestrzeni sygnałów wejściowych) do miejsca lokalizacji jednego z przypadków ciągu uczącego, można mieć zaufanie do rosnącej gęstości prawdopodobieństwa, natomiast w większej odległości od jakiegokolwiek znanego przypadku poziom zaufania jest zdecydowanie mniejszy i zmniejsza się w miarę oddalania. W estymacji jądrowej proste funkcje (tak zwane ,jądrowe") są lokowane w miejscu wystąpienia każdego dostępnego przypadku, a następnie są one dodawane w celu uzyskania estymatora łącznej funkcji gęstości prawdopodobieństwa. W typowych przypadkach każda funkcja jądrowa jest funkcją gaussowską (dzwonową). Jeśli dostępna jest dostateczna liczba punktów uczących, to istotnie daje to stosunkowo dobrą aproksymację rzeczywistej funkcji gęstości prawdopodobieństwa. Jeśli jednak punktów jest niewiele, a wymiar wejściowej przestrzeni jest duży - metoda ta daje raczej mało satysfakcjonujące wyniki.
Jądrowe podejście do aproksymacji funkcji gęstości prawdopodobieństwa jest bardzo podobne do stosowania sieci neuronowych o radialnych funkcjach bazowych, co stanowiło inspirację do stworzenia kategorii probabilistycznych sieci neuronowych (PNN - probabilistic neural networks) oraz sieci neuronowych realizujących regresję uogólnioną (GRNN - generalized regression neural networks); oba te typy sieci
zostały wymyślone przez Speckta (1990, 1991). Sieci PNN zostały zaprojektowane z myślą
0 rozwiązywaniu problemów klasyfikacyjnych, zaś sieci GRNN służą do rozwiązywania problemów regresyjnych. Oba rodzaje sieci są
w rzeczywistości modelami aproksymacji jądrowej przedstawionymi w postaci sieci neuronowej.
W sieci PNN występują przynajmniej trzy warstwy: wejściowa, radialna i wyjściowa. Neurony radialne mają parametry kopiowane bezpośrednio z danych uczących; każdy z nich odpowiada jednemu przypadkowi. Wygląda to w taki sposób, że każdy z neuronów radialnych modeluje funkcję Gaussa wycentrowaną nad "swoim" przypadkiem uczącym. Natomiast w warstwie wyjściowej każdej klasie odpowiada jeden neuron. Do każdego z tych neuronów wyjściowych docieraj ą połączenia od tych neuronów radialnych, które zostały ustawione nad punktami (zestawami danych wejściowych) należącymi do danej klasy; nie występują natomiast połączenia neuronów wyjściowych z innymi neuronami radialnymi. Neurony wyjściowe sumują więc po prostu wartości wyjściowe pojawiające się na wyjściach neuronów radialnych, należących do klasy odpowiadającej danemu neuronowi wyjściowemu. Wartości wyjściowe neuronów wyjściowych są więc proporcjonalne do estymatorów jądrowych funkcji gęstości prawdopodobieństwa dla różnych klas
1 po zastosowaniu normalizacji zapewniającej ich sumowanie do jedności stanowią wprost oszacowania prawdopodobieństwa przynależności do poszczególnych klas.
Podstawowy model sieci PNN może być zmodyfikowany na dwa sposoby.
Pierwszy sposób polega na tym, że zmienia się sposób traktowania udziału reprezentacji poszczególnych klas w zbiorze uczącym. Podstawowe podejście zakłada, że udział przedstawicieli poszczególnych klas w zbiorze uczącym jest zgodny z rzeczywistym odsetkiem przypadków zaliczanych do tej klasy w modelowanej populacji (są to tak zwane prawdopodobieństwa a priori). Na przykład
StatSoft
Wprowadzenie - 44
Copyright StatSoft, 2001 Copyright for the Polish edition StatSoft Polska, 2001
SIECI NEURONOWE
w przypadku sieci diagnozującej pewną chorobę, jeśli 2% populacji cierpi na tę chorobę, to w zbiorze uczącym mniej więcej 2% przypadków powinno dotyczyć takich osób. Jeśli prawdopodobieństwo a priori różni się od udziału przypadków należących do danej klasy w ciągu uczącym, to oszacowania rozkładów wyznaczane przez sieć będą także nieprawidłowe. Tymczasem w zbiorze danych o małej (z reguły) liczebności bardzo trudno zachować warunek dokładnej reprezentacji poszczególnych klas w takich liczbach egzemplarzy, które dokładnie odwzorowują prawdopodobieństwa a priori. Przy niewielkiej sumarycznej liczbie obiektów uczących i przy niewielkich prawdopodobieństwach a priori pewnych klas -może się to okazać wręcz niewykonalne. W celu zniwelowania wpływu takich problemów i związanych z nimi dysproporcji można w sieci jawnie wyspecyfikować prawdopodobieństwa a priori (jeśli są one znane), co spowoduje zmianę wartości wag neuronów wyjściowych sieci dla ich wejść odpowiadających neuronom ukrytym poszczególnych klas. Taką korektę wag, prowadzącą do wyrównania istniejących różnic, można w sieci w miarę łatwo wprowadzić, ale wymaga to naruszenia "klasycznych" zasad uczenia sieci i zakłada wprowadzenie "ręcznej" modyfikacji parametrów (wag) sieci.
Drugi sposób zmodyfikowania modelu sieci PNN może polegać na odmiennym traktowaniu różnych rodzajów błędów pojawiających się w trakcie uczenia i eksploatacji sieci. Ogólnie wiadomo, że sieć dokonująca estymacji nieznanego rozkładu gęstości prawdopodobieństwa w oparciu o dane zniekształcone przez szumy odtworzy potrzebną funkcję z błędami, w wyniku czego będzie nieuchronnie klasyfikować podawane jej dane w pewnych przypadkach błędnie. Skutek takich błędów jest oczywiście zawsze zdecydowanie , niekorzystny, bo jest zawsze rzeczą naganną, jeśli na przykład osoba w rzeczywistości chora zostanie uznana za zdrową. Jednakże pewne rodzaje błędnej klasyfikacji mogą by ć uznawane za "bardziej kosztowne" niż inne. Na przykład, uznanie osoby zdrowej za chorą prowadzić może
do jej osobistego stresu, a nawet do poddania jej serii zbytecznych badań (albo nawet do zbędnych "zwiadowczych" zabiegów chirurgicznych, takich jak stosowana niekiedy w podejrzeniu, o nowotwór laparotomia), które są niewątpliwie uciążliwe ale nie zagrażają życiu. Natomiast niepowodzenie w identyfikacji rzeczywiście występującej groźnej choroby może prowadzić do zaniechania leczenia w sytuacji, kiedy jest ono rzeczywiście niezbędnie potrzebne i w efekcie nawet do przedwczesnej śmierci pacjenta.
W takich przypadkach, gdy zachodzi potrzeba zróżnicowania "cen błędów" można wprowadzić do programu procedurę "ważenia" surowych prawdopodobieństw wyznaczonych przez sieć. Dokonuje się tego poprzez zastosowanie specjalnie ustalanych "czynników straty", które odzwierciedlaj ą koszty błędnej klasyfikacji -ewentualnie różne w przypadku różnych możliwych typów błędów. W ST Neural Networks w sieci PNN można w tym celu zdefiniować formalnie dodatkową, czwartą warstwę sieci, która zawiera macierz zadawanych przez użytkownika strat wiązanych z poszczególnymi rodzajami błędów. Macierz ta jest przemnażana przez prawdopodobieństwa oszacowane w warstwie trzeciej, a następnie wybierana jest klasa charakteryzująca się najmniejszym oszacowanym kosztem, co pozwala na podejmowanie decyzji z uwzględnieniem zróżnicowanych cen ewentualnych błędów, a nie tylko opartych jedynie na rozkładzie prawdopodobieństw a posteriori.
Na marginesie tych rozważań warto wspomnieć, że omówiona wyżej macierz strat, typowo rozważana w kontekście bayesowskich metod rozpoznawania i podejmowania decyzji, może również być w ST Neural Networks dołączona do innych typów sieci klasyfikujących, co stwarza bardzo ciekawe możliwości wzbogacania ich działania o czynnik różnicowania cen różnych decyzji.
Jedynym parametrem sterującym, wpływającym na proces uczenia sieci typu PNN, którego wartość musi być ustalona przez użytkownika, jest współczynnik wygładzania. Współczynnik ten,
Wprowadzenie - 45 Copyright StatSoft, 2001 Copyright for the Polish edition StatSoft Polska, 2001
StatSoft
SIECI NEURONOWE
reprezentujący odchylenie radialne odpowiednich funkcji gaussowskich, jest miarą zasięgu oddziaływania "wiedzy" zawartej w przypadkach tworzących ciąg uczący na otaczające obszary przestrzeni sygnałów wejściowych. Podobnie jak w sieciach RBF, współczynnik ten musi być określony w taki sposób, aby funkcje gaussowskie zachodziły na siebie w "rozsądnym stopniu" - zbyt małe odchylenie powoduje, że aproksymacja jest bardzo szpiczasta, co uniemożliwia generalizację, zaś zbyt duża wartość tego współczynnika uniemożliwia prawidłowy opis szczegółów aproksymowanej funkcji rozkładu prawdopodobieństwa. Właściwa wartość współczynnika wygładzania może zostać w prosty sposób określona na drodze eksperymentalnej, poprzez wybór takiego współczynnika, który generuje akceptowalnie mały błąd walidacyjny. Na szczęście doświadczenie wskazuje, że sieci PNN nie są zbyt wrażliwe na wartość współczynnika wygładzania i ewentualnie nietrafny wybór tej wartości nie zmniejsza (w znacznym stopniu) szansy uzyskania poprawnego działania całej sieci.
Do największych zalet sieci PNN należy zaliczyć generowanie na wyjściach wartości prawdopodobieństw (a dokładniej ich oszacowań), a nie samych tylko "surowych" decyzji, co zdecydowanie ułatwia ocenę i interpretację wyników. Zaletą omawianych sieci jest też duża szybkość ich uczenia. Na proces uczenia tych sieci składa się bowiem w rzeczywistości wyłącznie kopiowanie przypadków uczących do odpowiednich neuronów sieci, co zgodnie z oczekiwaniami trwa bardzo krótko.
Największą wadą sieci typu PNN jest ich wielkość. Sieć tego typu musi bowiem zawierać w swojej strukturze neurony odpowiadające poszczególnym rozważanym przykładom, co powoduje, że w rzeczywistości w strukturze sieci odwzorowany jest cały zbiór uczący. Powoduje to z kolei, że wymagania odnośnie pamięci przy tworzeniu i eksploatacji takich sieci są bardzo duże i jest to przyczyną, że czas potrzebny na uruchomienie takiej sieci jest raczej długi.
Sieci PNN są szczególnie użyteczne w trakcie eksperymentów mających na celu zdefiniowanie prototypów sieci (na przykład wtedy, gdy podejmowane są decyzje dotyczące wyboru zmiennych wejściowych), ponieważ krótki czas uczenia tych sieci umożliwia wykonanie dużej liczby testów (na przykład z różnymi zestawami danych wejściowych) w krótkim odcinku czasu. W związku z tym STNeural Networks korzysta z sieci PNN w modelu realizującym Neuro-genetyczny dobór zmiennych wejściowych. Jest to dość wygodne narzędzie, które automatycznie poszukuje maksymalnie użytecznych zestawów wejść dla budowanej sieci, a którego algorytm opisany jest w dalszej części podręcznika.

$Sieci neuronowe realizujące regresję uogólnioną

Sieci neuronowe realizujące regresję uogólnioną (sieci GRNN - Generalized regression neural networks) pracują w sposób podobny do sieci PNN, ale służą do rozwiązywania zadań o charakterze regresyjnym, a nie klasyfikacyjnym (Speckt, 1991; Patterson, 1996; Bishop, 1995). Podobnie jak w sieciach PNN, gaussowskie funkcje jądrowe są lokowane w tej sieci w poszczególnych neuronach warstwy ukrytej w taki sposób, że dla każdego przypadku uczącego jest dostępny neuron, który "rozpina" ponad tym przypadkiem "dzwon" odpowiedniej funkcji gaussowskiej.
Metoda budowy przez sieć potrzebnej funkcji regresji polega na tym, że każdy przypadek zbioru uczącego może być rozważany jako "dowód" tego, że powierzchnia budowanej odpowiedzi sieci ma w tym punkcie przestrzeni wejść pewna ustaloną wysokość. Ten lokalny (punktowy) dowód jest następnie przez sieć rozmywany na okoliczne punkty przestrzeni sygnałów wejściowych, z progresywnie zmniejszającą się pewnością występowania podanej wartości - maksymalną w bezpośrednim sąsiedztwie punktu o lokalizacji wynikającej z ciągu uczącego i szybko malejącą przy oddalaniu się od niego.
StatSoft
Wprowadzenie - 46
Copyright StatSoft, 2001 Copyright for the Polish edition StatSoft Polska, 2001
SIECI NEURONOWE
Działanie sieci GRNN polega na tym, że przypadki uczące, przekopiowane do neuronów warstwy ukrytej sieci, służą do estymacji odpowiedzi sieci, zarówno dla samych punktów zbioru uczącego, jak i dla nowych punktów, które w zbiorze uczącym wcale nie występowały. Wartość wyjściowa dla tych nowych punktów jest szacowana przez sieć przy wykorzystaniu ważonej średniej wyjść dla przypadków uczących, gdzie wagi są uzależnione od odległości poszczególnych punktów uczących od punktu, dla którego przeprowadza się szacowanie. Z tego względu punkty zawarte w ciągu uczącym, położone blisko punktu, w którym określana jest wartość funkcji, mocniej wpływają na szacowaną wartość niż punkty położone dalej.
Pierwsza warstwa ukryta w sieci GRNN zawiera, jak już powiedziano, same tylko neurony radialne. Druga warstwa ukryta zawiera neurony pomagające oszacować średnią ważoną z wyjść neuronów poprzedniej warstwy. Stosowana jest przy tym specjalna procedura. Każdy neuron wyjściowy posiada w tej warstwie swój odpowiednik, który wyznacza ważoną sumę dla odpowiadającego wyjścia. Aby uzyskać ważoną średnią z ważonej sumy, ważona suma musi zostać podzielona przez sumę współczynników wagowych. Brzmi to w sposób skomplikowany, ale zasadniczy pomysł jest w miarę prosty. Pojedynczy, specjalizowany neuron w drugiej warstwie ukrytej wyznacza wartość ważonej sumy swoich wejść. Z kolei warstwa wyjściowa realizuje w rzeczywistości operację dzielenia (korzystając ze specjalizowanych neuronów realizujących operację dzielenia) w celu dokonania wymaganej normalizacji. Wynika z tego, że druga warstwa ukryta posiada zawsze dokładnie o jeden neuron więcej niż warstwa wyjściowa. W typowych problemach regresyjnych szacowana jest najczęściej jedna wartość wyjściowa, co powoduje, że druga warstwa ukryta posiada zwykle dwa neurony.
Sieć GRNN może zostać zmodyfikowana poprzez zastosowanie neuronów radialnych, które reprezentuj ą całe skupienia (grupy, ang. cluster)
występujące w danych, a nie poszczególne : odrębne przypadki uczące. W ten sposób (poprzez zastosowanie grupowania danych wejściowych) zmniejszany jest rozmiar sieci i zwiększana jest szybkość jej działania. Centra skupień mogą być wyznaczone przy użyciu odpowiednich algorytmów (w rachubę wchodzą algorytmy powtórnego próbkowania, k-średnich lub algorytmy angażujące oddzielne sieci neuronowe, mianowicie sieci Kohonena), zaś ST Neural Networks jest tak zbudowany, że zmodyfikuje automatycznie w odpowiedni sposób wagi po wyznaczeniu centrów odpowiednich skupień.
Sieć GRNN posiada zalety i wady w większości podobne do odpowiednich cech sieci PNN - jedyna istotna różnica polega na tym, że sieć GRNN może być używana tylko do problemów regresyjnych, podczas gdy sieć PNN używana jest wyłącznie do problemów klasyfikacyjnych. Sieć GRNN uczy się w bardzo krótkim czasie, ale posiada tendencję do tworzenia struktur o dużych rozmiarach i do związanego z tym powolnego działania (chociaż, inaczej niż w sieciach PNN, nie jest tu konieczne posiadanie jednego neuronu radialnego przypadającego na każdy przypadek uczący). Wynika to głównie z faktu, że liczba neuronów ukrytych musi być w tego typu sieci sumarycznie bardzo duża. Podobnie jak sieć RBF, sieć GRNN nie posiada zdolności do ekstrapolacji danych - na ogół zaraz poza zakresem zmienności danych wejściowych występujących w zbiorze uczącym sygnały wyjściowe sieci przyjmują wartości bardzo odbiegające od wartości prawidłowych (najczęściej jest to wartość wynosząca zero).

$Sieci liniowe

Ogólna zasada stosowana w nauce głosi, że w przypadku, gdy istnieje możliwość wyboru pomiędzy modelem prostym i bardziej złożonym, należy zawsze preferować model prostszy - o ile oczywiście ten drugi nie dopasowuje się znacznie lepiej do posiadanych danych. Stosując terminy charakterystyczne dla aproksymacji funkcji, można stwierdzić, że najprostszym modelem
Wprowadzenie - 47 Copyright StatSoft, 2001 Copyright for the Polish edition StatSoft Polska, 2001
StatSoft"
SIECI NEURONOWE
aproksymującym matematycznie pewną zaobserwowaną praktyczną zależność jest model liniowy. W modelu takim funkcją dopasowywaną do posiadanych danych jest zawsze hiperpłaszczyzna, a zadanie polega na znalezieniu właściwego położenia i właściwego nachylenia tej hiperpłaszczyzny. W problemach klasyfikacyjnych wspomniana hiperpłaszczyzna jest umieszczana w takiej pozycji, aby oddzielać od siebie dwie rozważane klasy. Działa ona wtedy jako liniowa funkcja dyskryminująca. Z kolei w zagadnieniach regresyjnych umieszczana jest ona w taki sposób, aby dobrze reprezentowała generalną tendencję reprezentowaną przez dane, chociaż precyzyjne dopasowanie hiperpłaszczyzny do wszystkich subtelności zawartych w zgromadzonych danych jest zwykle raczej trudne, ze względu na sztywność jej formy, zarówno jako formuły matematycznej, jak i jako formy geometrycznej. Model liniowy jest zwykle reprezentowany przy użyciu macierzy współczynników kierunkowych o wymiarach N x N (ustalających położenie hiperpłaszczyzn tworzących model) i wektora wyrazów wolnych o wymiarach N x l, definiującego przesunięcia hiperpłaszczyzn w stosunku do początku układu współrzędnych.
/Stosując terminologię związaną z sieciami neuronowymi, można stwierdzić, że model liniowy jest reprezentowany przez sieć nie posiadającą warstw ukrytych, zaś znajdujące się w warstwie wyjściowej neurony są w pełni liniowe (tzn. są to neurony, w których łączne pobudzenie wyznaczane jest jako liniowa kombinacja wartości wejściowych i które posiadają liniową funkcję aktywacji).
Wagi neuronów odpowiadają wzmiankowanej wyżej macierzy, zaś wartości progowe neuronów -T wektorowi wyrazów wolnych. W trakcie działania / sieci wykonywana jest operacja mnożenia wejść / przez macierz wag, a następnie do uzyskanego V__wyniku dodawany jest wektor wyrazów wolnych, co łącznie tworzy wektor sygnałów wyjściowych.
W STNeural Networks istnieje możliwość zdefiniowania przez użytkownika liniowej sieci neuronowej i są środki pozwalające na jej uczenie
za pomocą standardowego algorytmu optymalizacji liniowej, opartego na technice tzw. pseudoinwersji (SVD) (Golub and Kahan, 1965). Oczywiście optymalizacja liniowa dostępna jest także w module Regresja wielokrotna w STATISTICA; jednakże sieci liniowe w ST Neural Networks mają nad nią tę przewagę, że pozwalaj ą na porównanie rezultatów działania sieci liniowej z "prawdziwymi" (tzn. nieliniowymi) sieciami neuronowymi w obrębie tego samego środowiska.
Sieci liniowe stanowią dobry punkt odniesienia, z którym porównuje się jakość innych sieci neuronowych. Jest bardzo możliwe, że problem, który uważany był za bardzo złożony, może zostać w rzeczywistości rozwiązany równie dobrze przez sieć liniową, jak i przez inną sieć neuronową o złożonej nieliniowej strukturze. Zgodnie z uwagami, które przytoczono na początku tej sekcji, bezwarunkowo należy w takim przypadku wykorzystywać model liniowy. W szczególności jeśli zbiór uczący składa się tylko z kilku przypadków, to stosowanie bardziej złożonych modeli nie jest uprawomocnione i korzystanie z modelu liniowego (i odpowiednio z liniowej sieci neuronowej) jest najbardziej właściwą metodą rozwiązania problemu.

$Sieci Kohonena

Sieci Kohonena stosowane są całkowicie odmiennie niż wszystkie inne sieci dostępne w ST Neural Networks. Podczas gdy wszystkie inne sieci zostały zaprojektowane z myślą o uczeniu w trybie z nauczycielem, to sieć Kohonena została zaprojektowana w pierwszym rzędzie do uczenia ich w trybie bez nauczyciela (Kohonen, 1982; Haykin, 1994; Patterson, 1996; Fausett, 1994).
Spróbujemy wskazać, na czym polega ta różnica. Najłatwiej będzie to zrobić, pokazując różnicę w strukturze zbioru uczącego. Podczas gdy w uczeniu z nauczycielem dane uczące zawierają przypadki opisujące zarówno zmienne wejściowe, jak i zmienne wyjściowe, to w uczeniu bez nauczyciela pojawiają się wyłącznie przypadki
#48
obejmujące same tylko zmienne wejściowe. Wynika to z logiki obydwu rozważanych metod uczenia: przy uczeniu z nauczycielem istota procesu uczenia polega na tym, że dane wejściowe są prezentowane w powiązaniu ze zmiennymi wyjściowymi i sieć musi nauczyć się związku istniejącego pomiędzy wejściami a wyjściami, natomiast w uczeniu bez nauczyciela dane uczące, zawierające wyłącznie zmienne wejściowe, pozwalają na wykrycie i wykorzystanie w procesie uczenia pewnych cech zawartych w sposób ukryty w danych (na przykład ich wzajemnego podobieństwa), nie ma natomiast z góry zdefiniowanego sygnału wyjściowego, oczekiwanego jako pożądana i oczekiwana reakcja sieci.
Na pierwszy rzut oka może to wyglądać dziwnie. Czego może nauczyć się sieć, w przypadku, gdy nie są znane pożądane wyjścia? Odpowiedź jest następująca: sieć Kohonena próbuje nauczyć się struktury danych.
W związku z tym jednym z możliwych zastosowań sieci tego typu jest eksploracyjna analiza danych. Sieć Kohonena może się nauczyć na przykład rozpoznawania skupień występujących w wejściowych danych i może równocześnie nauczyć się kojarzenia podobnych klas danych -bez względu na to, jakie są kryteria podobieństwa danych (być może nawet nieznane a priori twórcy algorytmu), a także bez względu na to, ile ich jest.
Działanie sieci Kohonena może być bardzo użyteczne z praktycznego punktu widzenia - mimo pozornie mało zrozumiałych celów działania tej sieci i mimo braku jawnie wymuszonego kierunku jej działania. Dzięki projekcji wykonanej przez sieć Kohonena użytkownik może w lepszym stopniu zrozumieć dane, co z kolei umożliwia ulepszenie procesu ich dalszej analizy i wykorzystania - za pomocą tej samej sieci neuronowej lub z wykorzystaniem innych narzędzi.\Na przykład po rozpoznaniu skupień występujących w danych można nadać im nazwy, przez co sieć Kohonena uzyskuje możliwość przeprowadzania ich klasyfikacji zgodnie z wewnętrzną logiką samych danych, zamiast
w oparciu o jakieś wydumane arbitralne kryteria. Sieć Kohonena może być użyta do klasyfikacji danych również wówczas, gdy klasy wyjściowe są z góry znane. Zaletą takiego z kolei postępowania jest zdolność sieci do przedstawienia (między innymi w formie graficznej) stopnia podobieństwa pomiędzy klasami.
Drugim możliwym zastosowaniem omawianego tu narzędzia jest wykrywanie nowości. Sieć Kohonena może zostać nauczona między innymi tego, by była przystosowana do rozpoznawania skupień w danych uczących i do reagowania na nie. Jeśli na wejściu sieci pojawią się nowe dane, niepodobne do poprzednio rozważanych przypadków, sieci nie uda się ich rozpoznać, co będzie sygnałem ostrzegawczym, że są one odmienne od wszystkich znanych do tej pory klas. W ten sposób nauczona sieć Kohonena może służyć jako detektor sygnalizujący pojawienie się nowości.
Sieć Kohonena posiada tylko dwie warstwy: warstwę wejściową oraz warstwę wyjściową, składającą się z neuronów radialnych. Warstwa ta znana jest również jako warstwa tworząca mapę topologiczną, ponieważ takie jest jej najczęstsze zastosowanie. Neurony w warstwie tworzącej mapę topologiczną są rozważane w taki sposób, jakby były rozmieszczone w przestrzeni według " jakiegoś ustalonego wzoru - zwykle wyobrażamy je sobie jako węzły dwuwymiarowej siatki o kwadratowych oczkach - chociaż STNeural Networks umożliwia również tworzenie jednowymiarowych sieci Kohonena w postaci długich łańcuchów.
fs
i Sieci Kohonena uczone są przy wykorzystaniu [ algorytmu iteracyjnego. Rozpoczynając od początkowych, wybranych w sposób losowy centrów radialnych, algorytm stopniowo modyfikuje je w taki sposób, aby odzwierciedlić skupienia występujące w danych uczących. Występuje tutaj pewne podobieństwo do metod powtórnego próbkowania i metody k-średnich, które używane są do ustalania centrów w sieciach RBF i sieciach GRNN; i rzeczywiście algorytm Kohonena może być użyty do wyznaczenia
Wprowadzenie - 49 Copyright StatSoft, 2001 Copyright for the Polish edition StatSoft Polska, 2001
StatSoft*
SIECI NEURONOWE
centrów dla tych typów sieci. Jednakże algorytm ten może być wykorzystany również w inny sposób - i to jest jego główne zastosowanie.
f W tym podstawowym zastosowaniu iteracyjna procedura ucząca dodatkowo porządkuje neurony w taki sposób, że neurony reprezentujące centra
! położone blisko siebie w przestrzeni wejść są również usytuowane blisko siebie na mapie topologicznej.
Jak wspomniano, użytkownik może wybrać sobie dowolną topologię warstwy wyjściowej sieci, jednak nadmiernie "wymyślna" topologia może prowadzić do trudności w interpretacji wyników działania sieci. Dlatego zwykle sieć jest tak organizowana, że jej topologia może być uznawana za prostą dwuwymiarową siatkę, która może być dowolnie zginana i wykrzywiana w N-wymiarowej przestrzeni wejść. To wyginanie siatki dokonywane jest automatycznie w procesie uczenia sieci i służy do ustawienia siatki w taki sposób, aby zachować oryginalną strukturę danych (zwłaszcza podobieństwa występujące w sygnałach wejściowych) i umożliwić użytkownikom intuicyjną interpretację sygnałów wejściowych w oparciu o odpowiedzi sieci - tak dalece, jak tylko jest to możliwe. Jest jednak rzeczą oczywistą, że próba reprezentacji N-wymiarowej przestrzeni wejściowych sygnałów w dwóch wymiarach definiujących topologię sieci spowoduje nieuchronną utratę pewnych szczegółów; jednakże użyteczność techniki sieci Kohonena przejawia się tym, że pozwala ona użytkownikowi wizualizować dane, których zrozumienie w inny sposób mogłoby być trudne, albo wręcz niemożliwe.
f Podstawowy, iteracyjny algorytm Kohonena działa przez dużą liczbę epok w taki sposób, że w trakcie każdej epoki prezentowany jest każdy z przypadków uczących i stosowany jest następujący algorytm:
pokazywany jest zestaw danych wejściowych ze zbioru uczącego,
(J
wszystkie neurony sieci wyznaczają swoje sygnały wyjściowe, stanowiące odpowiedź na podane wejścia,
wybierany jest neuron zwycięski (tzn. ten, który reprezentuje centrum najbardziej zbliżone do prezentowanego na wejściu przypadku),
neuron zwycięski modyfikowany jest w taki sposób, aby upodobnić jego wzorzec do prezentowanego przypadku. W tym celu wyznaczana jest ważona suma przechowywanego w neuronie centrum oraz przypadku uczącego,
wraz ze zwycięskim neuronem w podobny sposób modyfikowane są parametry jego sąsiadów (sąsiedzi są wyznaczani w oparciu o przyjęty wzór topologii sieci).
Algorytm wykorzystuje zmienny w czasie współczynnik uczenia, który jest wykorzystywany do wyznaczenia ważonej sumy i powoduje, że zmiany - początkowo duże i szybkie - stają się coraz bardziej subtelne w trakcie kolejnych epok. Umożliwia to ustalenie centrów w taki sposób, że stanowią one pewien kompromis pomiędzy wieloma przypadkami powodującymi zwycięstwo rozważanego neuronu.
Jak już wspomniano, własność uporządkowania topologicznego jest osiągana poprzez zastosowanie w algorytmie uczenia koncepcji sąsiedztwa.
/"Sąsiedztwo stanowią neurony otaczające neuron
^zwycięski. Sąsiedztwo, podobnie jak współczynnik uczenia, zmniejszane jest wraz z upływem czasu, tak więc początkowo do sąsiedztwa należy stosunkowo duża liczba neuronów (może nawet prawie cała mapa topologiczna); w końcowych etapach sąsiedztwo ma zerowy zasięg (składa się jedynie z samego neuronu zwycięskiego). Ma to istotne znaczenie, ponieważ - jak to wyżej stwierdzono -w algorytmie Kohonena modyfikacja wag jest -w rzeczywistości przeprowadzana nie tylko w odniesieniu do neuronu zwycięskiego, ale
StatSoft
Wprowadzenie - 50
Copyright StatSoft, 2001 Copyright for the Polish edition StatSoft Polska, 2001
SIECI NEURONOWE
również we wszystkich neuronach należących do jego sąsiedztwa.
Efektem takiej modyfikacji odnoszącej się do całego sąsiedztwa jest to, że początkowo bardzo duży obszar sieci "podąża" w kierunku każdego zaprezentowanego przypadku uczącego. To podążanie należy rozmieć jako zmianę wartości wag, a nie w znaczeniu dosłownym, ale w jego następstwie sieć tworzy początkowo zgrubne uporządkowanie topologiczne, w którym podobne przypadki aktywują skupione blisko siebie neurony z mapy topologicznej, a potem dochodzi do postępującej specjalizacji działania wszystkich neuronów. Wraz z realizacją kolejnych epok procesu uczenia zarówno współczynnik uczenia, jak i wielkość sąsiedztwa ulegają zmniejszeniu, co umożliwia dokonywanie precyzyjnych rozróżnień we wszystkich obszarach mapy, zaś w fazie ostatecznej dokonywane jest wyregulowanie położenia pojedynczych neuronów.
Często uczenie sieci Kohonena jest celowo przeprowadzane w dwóch wyraźnie oddzielonych od siebie fazach: na początku stosunkowo krótka faza z dużym współczynnikiem uczenia i rozległym sąsiedztwem oraz długa faza "douczania" z niską wartością współczynnika uczenia i zerowym lub prawie zerowym sąsiedztwem.
Po nauczeniu sieci Kohonena poprawnego rozpoznawania struktury prezentowanych danych można j ej użyć jako narzędzia przeprowadzającego wizualizację danych w celu ich lepszego poznania. Zanim to jednak nastąpi powinniśmy sprawdzić, czy sieć jest już wystarczająco wytrenowana. Służyć do tego może między innymi występujące w ST Neural Networks okno Częstość zwycięstw. Z oknem tym związane jest narzędzie obliczające, ile razy każdy z neuronów zwyciężył podczas prezentacji danych, uczących. Takie zestawienie częstości zwycięstw może służyć do sprawdzenia, czy na mapie Kohonena uformowane zostały już wystarczająco wyraźne skupienia. ,__
Ważnym elementem przygotowania sieci Kohonena do bieżącego użytkowania jest właściwe opisanie uformowanej mapy topologicznej. Opis taki uzyskuje się poprzez uruchomienie sieci dla poszczególnych przypadków zawartych w ciągu uczącym i obserwacja mapy topologicznej w celu sprawdzenia, czy powstałym skupieniom można przypisać jakieś znaczenia. Ustalenie związków pomiędzy skupieniami a znaczeniami wymaga zwykle odwołania się do dziedziny, której dotyczy aplikacja, jeśli jednak obiektom ciągu uczącego można nadać jakieś merytoryczne interpretacje (na przykład takie, że jedne z nich stanowią opis wiarygodnych klientów banku, a inne zostały zarejestrowane dla defraudantów), to pojawia się możliwość zaetykietowania przez te przypadki całej mapy topologicznej. Po identyfikacji skupień można więc przypisać określone etykiety do neuronów wchodzących w skład mapy topologicznej i w ten sposób można określić ich znaczenie. W pewnych przypadkach można również przypisać etykiety do poszczególnych przypadków, co ma pewne znaczenie praktyczne, ponieważ sieć Kohonena wykryje i zasygnalizuje wszystkie obiekty podobne do tych zaetykietowanych, a to pozwoli na pogłębioną jakościową analizę wszelkich podawanych do sieci danych. Po takim udoskonaleniu mapy topologicznej można prezentować sieci nowe przypadki. Jeśli neuron zwycięski będzie posiadać etykietę, to uznamy, że sieć dokonała jednoznacznej klasyfikacji pokazanego przypadku. Jeśli natomiast neuron, który zostanie "zwycięzcą", po pokazaniu pewnego przypadku nie będzie posiadać a priori przypisanej mu etykiety, to można uznać, że sieć nie jest w pełni zdecydowana, ale można pośrednio wnioskować o przynależności albo o znaczeniu tego przypadku na podstawie etykiet elementów sąsiednich. Eksploatując sieć Kohonena, stale możemy bowiem korzystać z ustalonej prawidłowości, mówiącej, że sąsiedztwu neuronów w sieci odpowiada bliskość sygnałów w przestrzeni wejść , sieci - a to na ogół oznacza także podobieństwo obiektów opisywanych tymi sygnałami.
Wprowadzenie- 51 Copyright StatSoft, 2001 Copyright for the Polish edition StatSoft Polska, 2001
StatSoft
SIECI NEURONOWE
Sieci Kohonena w trakcie realizacji klasyfikacji wejściowych danych korzy stają również z progu akceptacji. Ponieważ poziom aktywacji neuronu w sieci Kohonena jest równy odległości neuronu od przypadku wejściowego, próg akceptacji działa jako maksymalna odległość, przy której podobieństwo obiektów jest jeszcze rozpoznawalne. Jeśli aktywacja neuronu zwycięskiego jest większe niż ta odległość, to sieć Kohonena jest uważana za niezdecydowaną i odpowiedź jest nieokreślona. W ten sposób, nadając po kolei etykiety wszystkim neuronom i ustalając odpowiednio wartość progu akceptacji, sieć Kohonena może uzyskać jeszcze jedną funkcję: po wytrenowaniu może działać jako detektor nowości, który informuje o niezdecydowaniu tylko wtedy, jeśli przypadek wejściowy jest niepodobny do żadnego z neuronów radialnych.
Sieć Kohonena jest inspirowana przez pewne znane własności mózgu. Kora mózgowa jest w rzeczywistości dużym płaskim płatem komórek nerwowych. Powierzchnia tego płata wynosi około 0.5 metra kwadratowego; ma ona, pofałdowaną strukturę tylko po to, aby dostosować się do kształtu czaszki. Działanie tego płata związane jest ze znanymi własnościami topologicznymi, na przykład obszar odpowiadający dłoni znajduje się w nim obok obszaru przedramienia, a ten z kolei sąsiaduje z obszarem ramienia itd. Tak więc powierzchnia kory mózgowej (zarówno w obszarach czuciowych, jak i w obszarach sterujących ruchem) jest swoistą mapą topologiczną, odpowiadającą całej złożonej konstrukcji ciała człowieka.

$Klasyfikacja w ST Neural Networks

W zagadnieniach klasyfikacyjnych celem stawianym sieci jest przypisanie każdego przypadku reprezentowanego przez odpowiedni zestaw danych wejściowych do jednej z wybranych klas. Mówiąc bardziej ogólnie, można zakładać, że zadaniem sieci jest estymacja
prawdopodobieństwa przynależności przypadku do danej klasy. W ST Neural Networks klasyfikacja jest realizowana poprzez użycie nominalnej zmiennej wyjściowej, której wartości (będące nazwami wybieranymi z pewnego z góry ustalonego zbioru wartości) odpowiadają różnym klasom, do których można zaliczać wejściowe dane.
Klasyfikacja może być zrealizowana w ST Neural Networks przy użyciu następujących typów sieci: MLP (perceptrony wielowarstwowe), RBF (sieci o radialnych funkcjach bazowych), sieci Kohonena, PNN (sieci probabilistyczne) oraz sieci liniowych. Jedynym typem sieci w ST Neural Networks, który nie jest zaprojektowany z myślą o klasyfikacji jest GRNN (sieci realizujące regresję uogólnioną), chociaż oczywiście można próbować zastosować do klasyfikacji także sieci tego typu (ale podejście takie nie jest polecane).
Zmienne nominalne są zwykle reprezentowane w sieciach w ST Neural Networks za pomocą jednej z dwóch technik, z których pierwsza jest tylko dostępna dla zmiennych dwustanowych.
Te techniki reprezentacji to odpowiednio:
technika dwustanowa,
technika jeden-z-N.
W reprezentacji dwustanowej zmiennej nominalnej odpowiada pojedynczy neuron, którego sygnał wyjściowy determinuje wartość rozważanej zmiennej. Zasada jest bardzo prosta: wartość sygnału wyjściowego neuronu wynosząca 0.0 jest interpretowana jako jeden stan, zaś wartość 1.0 -jako drugi wyróżniony stan. Odpowiednio dobierając parametry nieliniowej funkcji neuronu można spowodować, by nie przyjmował on innych sygnałów wyjściowych niż O i 1.
W kodowaniu jeden-z-N jeden neuron odpowiada tylko jednej z N możliwych wartości rozpatrywanej zmiennej. Konkretny stan zmiennej nominalnej reprezentowany jest przez wartość sygnału wynoszącą l, pojawiającą się na odpowiadającym temu stanowi neuronie, podczas
StatSoft
Wprowadzenie - 52
Copyright StatSoft, 2001 Copyright for the Polish edition StatSoft Polska, 2001
SIECI NEURONOWE
gdy wartości na wszystkich pozostałych neuronach wynoszą 0.
Opisane powyżej metody umożliwiają prostą realizację w STNeural Networks przekształcenia wejściowych i wyjściowych sygnałów sieci do/z postaci zmiennych nominalnych. Opisane metody kodowania muszą być stosowane konsekwentnie, zarówno w trakcie uczenia, jak i w trakcie eksploatacji (roboczego działania sieci).
Na ogół nie ma przy tym problemów z określeniem wartości wejściowych do sieci - i to niezależnie od tego, czy mamy do czynienia z uczeniem, czy z egzaminowaniem sieci. Natomiast przy określaniu wartości odpowiadających nominalnym zmiennym wyjściowym sytuacja przy uczeniu i przy egzaminie jest odmienna. Przy uczeniu dobrze wiemy, do jakiej klasy obiekt należy, odwzorowanie tego faktu nie stanowi więc również problemu w trakcie uczenia sieci. Jednakże w trakcie eksploatacji sieci określenie klasy wyjściowej wyznaczonej przez sieć wymaga na ogół więcej wysiłku. Musimy ten problem dokładniej rozważyć, żeby nie mieć kłopotów z interpretacją zachowania sieci w trakcie jej późniejszego działania.
Każdy z neuronów wyjściowych może generować ciągle wartości z przedziału od 0.0 do l .0. W celu precyzyjnego wyznaczania odpowiedzi sieci (to znaczy klasy, do której należy zaliczyć rozważany obiekt) trzeba na podstawie takich wartości wyjściowych ustalić, jaką wartość powinniśmy przyporządkować wyjściowej zmiennej nominalnej. W tym celu sieć musi zadecydować, czy wartości wyjściowe są "w sensowny sposób" bliskie wartości 0.0, czy też bliższe są wartości 1.0. Jeśli wyjście pewnego neuronu nie jest bliskie żadnej z tych wartości, to klasa wskazywana (rozpoznawana) przez sieć jest "nieokreślona".
Aby podjąć decyzję dotyczącą sposobu interpretacji wyjść sieci klasyfikującej dane, ST Neural Networks korzysta z zadawanych przez użytkownika wartości progowych, czyli tak zwanych poziomów ufności. Wyróżniamy dwa
takie poziomy: próg akceptacji oraz próg odrzucenia. Interpretacja tych progów jest odmienna dla reprezentacji dwustanowej i reprezentacji jeden-z-N. Przedstawimy teraz te obie interpretacje, pomimo że różnią się one od siebie nieznacznie:
Reprezentacja dwustanowa. Jeśli wartość wyjściowa neuronu jest powyżej progu akceptacji, to przyjmuje się jako odpowiedź sieci klasę przypisaną do wartości l .0. Jeśli wartość wyjściowa neuronu jest poniżej poziomu odrzucenia, to jako sygnał wyjściowy sieci wybierana jest klasa odpowiadająca wartości 0.0. Jeśli natomiast wartość wyjściowa jest pomiędzy dwoma wymienionymi wartościami progowymi, to klasa jest nieokreślona (sieć odpowiada "nie wiem").
Reprezentacja jeden-z-N. Konkretna klasa jest wybierana (jako odpowiedź całej sieci) wówczas, gdy wartość wyjściowa neuronu odpowiadającego tej właśnie konkretnej klasie jest powyżej poziomu akceptacji i równocześnie wartości wyjściowe wszystkich pozostałych neuronów sa_poniżej poziomu odrzucenia. Jeśli podany warunek (często trudny do spełnienia!) nie występuje, to klasa jest nieokreślona (sieć znowu odpowiada "nie wiem").
Omówione wyżej wartości progowe mogą być swobodnie modyfikowane przez użytkownika w celu spowodowania, aby jego sieć była bardziej lub mniej "drobiazgowa" przy określaniu wyniku procesu klasyfikacji. Istnieje jednak pewna osobliwość ujawniająca się w trakcie korzystania z kodowania jeden-z-N, na którą teraz zwrócimy uwagę. W trakcie pobieżnego czytania przytoczonych wyżej wywodów Czytelnik mógłby oczekiwać, że "najmniej drobiazgową" (najrzadziej odmawiającą odpowiedzi) będzie taka sieć, która posiadać będzie najbardziej liberalny poziom akceptacji (wynoszący 0.5) i najmniej rygorystyczny poziom odrzucenia, równy także 0.5. W rzeczywistości w przypadku takiej sieci z kodowaniem jeden-z-N sytuacja wygląda inaczej. Sieć o parametrach pozornie bardzo ułatwiających podjęcie jednoznacznej decyzji nadal często odmawia jednoznacznej klasyfikacji
Wprowadzenie - 53 Copyright StatSoft, 2001 Copyright for the Polish edition StatSoft Polska, 2001
StatSoft
SIECI NEURONOWE
pokazywanych jej danych! Co ciekawe -powyższe stwierdzenie sprawdza się także w przypadku sieci z kodowaniem dwustanowym.
Aby osiągnąć pełną kooperatywność sieci (to znaczy, aby zmusić ją do jednoznacznej klasyfikacji w każdym przypadku), należy określić poziom akceptacji - paradoksalnie - niższy niż poziom odrzucenia. Oznacza to, że "najmniej drobiazgowa" sieć posiada poziom akceptacji równy 0.0 i poziom odrzucenia równy 1.0. Te na pozór nonsensowne ustawienia parametrów sieci pociągają za sobą następujący sposób jej działania: klasę wskazywaną jako odpowiedź sieci określa neuron o najwyższej wartości wyjściowej. Ten neuron "zwycięski" określa klasę będącą rozwiązaniem (odpowiedzią sieci) niezależnie od wartości sygnałów wyjściowych wszystkich pozostałych neuronów sieci. Taki sposób postępowania gwarantuje, że sieć zawsze poda jednoznaczną odpowiedź - chociaż czasem jej wartość (użyteczność) może być problematyczna...
Warto dodać, że opisany wyżej algorytm wyznaczania "zwycięzcy" jest zgodny ze stosowanym w STNeural Networks sposobem określania klas. Rozważmy bowiem podaną wyżej regułę określania klasy, która będzie podana jako rozwiązanie obliczone przez sieć:
Wybierany jest neuron o najwyższej wartości wyjściowej. Jeśli neuron ten ma wartość wyjściową większą lub równą progowi akceptacji i równocześnie wartości wyjściowe wszystkich pozostałych neuronów są mniejsze niż poziom odrzucenia, to wybierana jest klasa reprezentowana przez ten neuron, który miał maksymalną wartość wyjściową.
Zauważmy, ze przy poziomie akceptacji równym 0.0, neuron zwycięski na pewno zostanie zaakceptowany, a przy poziomie odrzucenia równym l .0 żaden z innych neuronów nie będzie mieć wartości wyższej od poziomu odrzucenia - co właśnie zredukuje algorytm określania klasy do prostego wyboru neuronu zwycięskiego. Inaczej sytuacja wygląda w rozważanym wcześniej przypadku, gdy zarówno poziom akceptacji, jak
i poziom odrzucenia przyjmuje wartość 0.5. W takim przypadku sieć z dużym prawdopodobieństwem może pozostać niezdecydowana. Będzie to miało miejsce wówczas, gdy wartość wyjściowa neuronu zwycięskiego będzie mniejsza od 0.5 lub też, gdy wartość wyjściowa któregoś z pozostałych neuronów będzie większa od 0.5. To się może zdarzyć!
Chociaż korzystanie z opisanej wyżej konwencji ustalania numeru (identyfikatora) rozpoznawanej klasy bezspornie wymaga pewnego przyzwyczajenia, to jednak pozwala ono na definiowanie (za pomocą samego tylko ustalania dwóch wymienionych wyżej progów!) całkiem wyrafinowanych warunków klasyfikacji rozważanych obiektów. Na przykład, przyjęcie poziomów akceptacji i odrzucenia o wartościach odpowiednio 0.7 oraz 0.3 może być interpretowane następująco:
"Wybierz klasę, którą podasz jako odpowiedź, korzystając z neuronu zwycięskiego, przy czym wartość wyjściowa tego neuronu zwycięskiego musi być równa przynajmniej 0.7, zaś żaden z neuronów, które przegrały współzawodnictwo, nie może mieć wartości większej od 0.3"
Inaczej mówiąc, aby w omawianej sieci możliwe było podjęcie decyzji to zwycięzca musi wykazać się pewnym istotnym poziomem aktywacji, zaś neurony pokonane we współzawodnictwie nie mogą osiągnąć pewnego innego poziomu, uznanego za budzący wątpliwości co do zasadności ich klęski.
Powyższa dyskusja dotyczyła ogólnie procesu klasyfikacji wykonywanego za pomocą większości typów popularnych sieci neuronowych: MLP, RBF, sieci liniowych oraz PNN. Jedyny wyjątek od ogólności tych rozważań polegał na tym, że w sieciach PNN kodowanie dwustanowe zupełnie nie może być użyte, w związku z tym nawet dwustanowe nominalne zmienne wyjściowe są reprezentowane w takiej sieci za pomocą kodowania jeden-z-N.
StatSoft
Wprowadzenie - 54
Copyright StatSoft, 2001 Copyright for the Polish edition StatSoft Polska, 2001
SIECI NEURONOWE
Natomiast sieci Kohonena pracują zupełnie inaczej. Jak wiadomo, w sieci Kohonena przy rozpoznawaniu posługujemy się neuronem zwycięskim. Jest to ten neuron w warstwie tworzącej mapę topologiczną (w warstwie wyjściowej), który posiada najwyższy poziom aktywacji. Oznacza to, że zwycięzcą zostaje ten neuron, który osiąga minimalną wartość odległości przypadku wejściowego od punktu reprezentowanego przez neuron (a raczej przez zestaw jego współczynników wagowych). Pozornie sprawa jest więc prosta: ponieważ neurony wchodzące w skład mapy topologicznej Kohonena mogą mieć przypisane etykiety z nazwami klas, zatem wiedząc, który neuron jest zwycięzcą, wiemy także, jaka klasa została rozpoznana. W rzeczywistości sprawa jest o wiele bardziej złożona. Gdyby wymagać identyczności wejściowego sygnału i wzorca rozpoznawanej klasy (przechowywanego w postaci zestawu współczynników wagowych zwycięskiego neuronu) - to wówczas dla większości sygnałów wejściowych rozpoznanie byłoby niemożliwe. Tymczasem sieci Kohonena podejmują sensowne decyzje o klasyfikowaniu także dla nieznanych wcześniej wektorów sygnałów wejściowych.
Korzystamy jednak wtedy z faktu, że jeśli odległość między wektorem wejściowym charakteryzującym rozważany przypadek a wzorcem pewnej ustalonej klasy jest dostatecznie mała, to wówczas przypadek jest zaliczany do tej klasy. Oznacza to, że sieć może także i w tym przypadku podać prawidłową nazwę klasy, zakładając oczywiście, że znana jest nazwa klasy dla zwycięskiego neuronu. Tego mechanizmu "uogólniania wiedzy" nie można jednak nadużywać. Trzeba sobie uświadomić, że przy pokazaniu sieci dowolnego sygnału wejściowego (nawet takiego, który jest całkowicie niepodobny do któregokolwiek z sygnałów zapamiętanych w sieci jako wzorce rozpoznawanych klas) jakiś neuron zostanie zwycięzcą. Do tego wystarczy przecież tylko to, żeby sygnał łącznego pobudzenia "zwycięskiego" neuronu był większy niż sygnały pobudzenia wszystkich innych neuronów. Skoro jakiś neuron zostanie zwycięzcą,
to sieć "rozpozna" nieznany obiekt - a fakt, że wszystkie sygnały są bardzo małe (z tego powodu, że wejściowy jest absolutnie niepodobny do żadnego z zapamiętanych wzorców) nie będzie w żaden sposób uwzględniony przy formułowaniu końcowego rozwiązania. Ten oczywisty paradoks trzeba jakoś przezwyciężyć i dlatego w STNeural Networks wprowadza się parametry sterujące działaniem sieci, podobne do rozważanych wyżej. Głównie używany jest parametr poziom akceptacji, który w tym przypadku określa największą dopuszczalną odległość wektora wejściowego i wektora wag (wzorca klasy), umożliwiającą jeszcze zaliczenie rozważanego przypadku do wskazanej klasy. Jeśli wprowadzony na wejście przypadek położony jest dalej od neuronu zwycięskiego niż określa to ustalona parametrem poziom akceptacji maksymalna dopuszczalna odległość, to przypadek taki nie jest klasyfikowany (sieć odpowiada "nie wiem").
W "czystym" modelu sieci Kohonena nie ma możliwości wyznaczenia jednoznacznej odpowiedzi wyjściowej także wtedy, gdy neuron zwycięski nie ma przypisanej etykiety (lub gdy jego etykieta nie jest zgodna z żadną z dopuszczalnych wartości nominalnej zmiennej wyjściowej). Problem ten może relatywnie często występować, ponieważ z reguły tylko niektóre (lecz nie wszystkie) neurony wyjściowe mają w wyniku uczenia przypisane określone nazwy klas. Dlatego często stosuje się pewną interpretację rozszerzającą, polegającą na tym, że jeśli zwycięzcą zostanie jeden z neuronów nie mających przypisanej określonej klasy - wówczas szuka się w jego otoczeniu (wśród jego sąsiadów) neuronu mającego zdefiniowaną etykietę. Jeśli taki "opisany" neuron w bezpośrednim sąsiedztwie "zwycięzcy" jest i jeśli jest tylko jeden - to ta właśnie etykieta może być podana jako prawdopodobna klasyfikacja sygnału wejściowego. Opieramy się przy tym na znanej właściwości sieci Kohonena polegającej na tym, że sąsiednie neurony sygnalizują w niej sygnały podobne do siebie (bliskie w sensie metryki przestrzeni wejść). Podane w taki sposób przypuszczalne rozpoznanie wejściowego obiektu
Wprowadzenie - 55 Copyright StatSoft, 2001 Copyright for the Polish edition StatSoft Polska, 2001
StatSoft*
SIECI NEURONOWE
nie może być oczywiście traktowane jako wiarygodne z podobnym poziomem ufności, jak rozpoznanie oparte na fakcie precyzyjnego zaetykietowania zwycięzcy - ale z reguły jest to rozwiązanie lepsze niż odmowa rozpoznania.
Prawdziwa odmowa klasyfikacji wejściowego obiektu może w tym schemacie nastąpić dopiero wtedy, jeśli takiego zaetykietowanego sąsiada w otoczeniu zwycięskiego punktu wcale nie ma albo jeśli w sąsiedztwie "anonimowego" zwycięzcy jest kilka neuronów posiadających etykiety różnych klas. W takich przypadkach poprawna i jednoznaczna interpretacja wyniku może sprawiać kłopoty i zasadna jest raczej odmowa rozpoznania (odpowiedź "nie wiem"), a nie próba zgadywania opartego na niepewnych podstawach.
Na zakończenie tego wątku naszych rozważań odnotujmy jeszcze, że drugi z parametrów dyskutowanych przy sieciach klasyfikujących, a mianowicie poziom odrzucenia, nie jest wcale wykorzystywany w sieci Kohonena. Po prostu nie ma takiej potrzeby.
W powyższej dyskusji przyjęto założenie, że "pozytywna" klasyfikacja jest określana przez liczbę bliską 1.0, zaś "negatywna" klasyfikacja przez liczbę bliską 0.0. Inne wartości sygnałów wyjściowych, nie są wykorzystywane i dlatego nie powinny występować. Warunek ten jest prawdziwy wtedy, gdy w neuronach wyjściowych korzysta się z binarnej funkcji aktywacji, to znaczy takiej funkcji, w której występują tylko te właśnie dwie wyróżnione wartości sygnału. Jeśli chcemy korzystać także z wartości sygnałów wyjściowych przyjmujących dowolne pośrednie wartości pomiędzy granicznymi wartościami 0.0 i 1.0 - to powinniśmy skorzystać z tak zwanej sigmoidy, czyli mówiąc bardziej poprawnie z logistycznej funkcji aktywacji.
Przyjęte wyżej założenie odnośnie zakresu wartości przyjmowanych przez zmienne wyjściowe (0.0 do l .0) ma tę zdecydowaną zaletę, że w opisywanym przypadku zakres występujących w sieci sygnałów jest w naturalny
sposób zgodny z zakresem przyjmowanym przez prawdopodobieństwo (tzn. także od 0.0 do l .0), co ułatwia interpretację niektórych form działania sieci. Jest to jeden z wielu powodów, przemawiających za powszechnym stosowaniem w sieciach neuronowych neuronów o sigmoidalnych charakterystykach, produkujących sygnały o wartościach pochodzących właśnie z przedziału od 0.0 do 1.0.
Jednakże w pewnych okolicznościach bardziej dogodne może być użycie innego zakresu sygnałów wyjściowych. Na przykład w wielu zastosowaniach zdecydowanie korzystne jest stosowanie funkcji bipolarnej, to znaczy takiej, w której wartości sygnałów wyjściowych mogą zmieniać się w przedziale od -1.0 do +1.0. Czasami również uporządkowanie wartości sygnałów wyjściowych może być (przy interpretacji działania sieci) korzystnie zmienione na odwrotne, na przykład wtedy, kiedy mniejsze wartości oznaczają pozytywną klasyfikację.
ST Neural Networks może obsługiwać obie wymienione sytuacje. Po pierwsze, zakres używanych wartości może być dowolnie kształtowany. W rzeczywistości zakres ten przechowywany jest dla każdej zmiennej osobno jako wartości parametrów Min/Średnia oraz Max/Odchylenie. W przypadku logistycznej funkcji aktywacji w neuronach wyjściowych parametry te przyjmują domyślnie wartości 0.0 oraz l .0, ale użytkownik może tu zadać inne parametry. Jak można stwierdzić na podstawie przeglądu literatury, pewni autorzy zalecają stosowanie w charakterze funkcji aktywacji funkcji tangens hiperboliczny. Mimo egzotycznie brzmiącej nazwy (dla niektórych Czytelników) taka funkcja przejścia neuronu sprowadza się w istocie do użycia takiej samej charakterystyki, jak przy wcześniej użytej sigmoidzie (funkcji logistycznej), dla której zakres wartości poszerzono i wynosi on (dla funkcji tangens hiperboliczny) od -1.0 do +1.0. Przy użyciu tej funkcji rezultaty uczenia mogą być znacznie ulepszone, ponieważ funkcja bipolarna (w przeciwieństwie do unipolarnej funkcji
StatSoft
Wprowadzenie - 56
Copyright StatSoft, 2001 Copyright for the Polish edition StatSoft Polska, 2001
SIECI NEURONOWE
logistycznej) jest symetryczna względem zera, co powoduje, że wartość sygnału podawanego do dalszych elementów sieci rzadko przyjmuje wartość zero. Przy funkcji unipolarnej wartość 0.0 może pojawić na wyjściu sieci z prawdopodobieństwem zbliżonym do 50%, co powoduje, że wartości współczynników wagowych neuronów, do których sygnały są wysyłane nie mają wpływu na zachowanie sieci (w końcu sygnał wynoszący zero mnożony przez jakąkolwiek wartość wagi synapsy daje zawsze zero), a przecież w następstwie procesu uczenia właśnie we współczynnikach wagowych zgromadzona jest cała wiedza sieci. W związku z tym używanie bipolarnej charakterystyki neuronu ma istotną wyższość nad stosowaniem charakterystyki unipolarnej, ponieważ przy charakterystyce bipolarnej w blisko 50% przypadków sygnały wyjściowe będą miały wartość zbliżoną do +1, również w blisko 50% przypadków sygnał będzie przyjmował wartość -l, zaś pośrednie przypadki (w tym w szczególności sytuacja, że sygnał ma wartość 0.0) będą się zdarzały relatywnie rzadko. Taka sytuacja jest zdecydowanie korzystna z punktu widzenia ekspresji wiedzy zawartej w sieci (we współczynnikach wagowych neuronów), zatem często z tej możliwości (związanej z taką właśnie charakterystyką neuronów sieci) będziemy korzystali. W takim przypadku w STNeural Networks należy tylko zmodyfikować wartości parametrów Min/Średnia oraz Max/Odchylenie, a STNeural Networks automatycznie będzie prawidłowo interpretować sygnały w sieci, traktując je jako sygnały bipolarne.
Odwrotne uporządkowanie jest zwykle stosowane w dwóch sytuacjach. Jeden z tych przypadków został już omówiony: chodzi o sieci Kohonena, gdzie wartość wyjściowa obliczana przez neuron jest miarą odległości między jego wektorem wag a wektorem sygnałów wyjściowych. W tej sieci małe wartości sygnału wskazują na większy stopień przynależności wejściowego obiektu do rozważanej klasy i w rezultacie oznaczają większą pewność rozpoznania. Drugą okolicznością wskazującą na celowość korzystania
z odwróconego uporządkowania wartości jest użycie opisanej wyżej macierzy kosztów związanych z poszczególnymi decyzjami. Jak pamiętamy, macierz taka może być dodana do sieci PNN na etapie jej tworzenia lub też może zostać dołączona ręcznie do innych typów sieci. Kiedy korzysta się z macierzy kosztów, wyjścia sieci określają oczekiwany koszt związany z wyborem każdej z klas, zaś celem jest wybór klasy o najniższym koszcie.
Uporządkowanie może zostać odwrócone poprzez przyjęcie jako typ wyjścia wartości Bląd, a nie Pewność. W takim przypadku trzeba też odpowiednio zmodyfikować progi decyzyjne: zwykle oczekuje się, że przy odwróconym uporządkowaniu wartości próg akceptacji powinien być mniejszy niż próg odrzucenia.

$Statystyki klasyfikacyjne

Przy określaniu wartości progów akceptacji i odrzucenia (oraz innych parametrów omówionych wyżej) przydatne są informacje prezentowane w oknie Statystyki dla problemów klasyfikacyjnych. Przedstawiana w tym oknie informacja określa, ile przypadków zostało zaklasyfikowanych poprawnie, ile niepoprawnie, a ile nie zostało sklasyfikowanych wcale (odpowiedzi sieci typu "nie wiem"). W oknie Statystyki dla problemów klasyfikacyjnych prezentowana jest również szczegółowa informacja na temat liczby przypadków należących do każdej z klas, które zostały zaklasyfikowane do innych klas. Wszystkie te wartości są wyznaczane niezależnie dla zbioru uczącego, walidacyjnego oraz testowego. Tego rodzaju statystyka jest przydatna zarówno do "dostrajania" parametrów programu, jak i do określania zdolności klasyfikujących eksploatowanych sieci.

$Problemy regresyjne w ST Neuraf Networks

W poprzednim punkcie dyskutowano dostępne w STNeural Networks narzędzia służące do
Wprowadzenie - 57 Copyright StatSoft, 2001 Copyright for the Polish edition StatSoft Polska, 2001
StatSoft
SIECI NEURONOWE
strojenia sieci klasyfikacyjnych, czyli takich, które na wyjściu produkują decyzje. Nie są to jednak wszystkie sieci możliwe do zbudowania i eksploatacji w ST Neural Networks, ponieważ można również tworzyć sieci dla rozwiązywania problemów regresyjnych. Jak już wcześniej sygnalizowano, w problemach regresyjnych celem jest oszacowanie wartości ciągłej zmiennej wyjściowej w sytuacji, gdy znane są wartości zmiennych wejściowych. Problemy regresyjne w ST Neural Networks mogą być rozwiązywane przy użyciu następujących typów sieci: MLP, RBF, GRNN oraz sieci liniowych.
Problemy regresyjne reprezentowane są w 5r Neural Networks przez zbiory danych, w których zmienna wyjściowa (lub zmienne wyjściowe, bo sieć może mieć kilka wyjść) nie jest zmienną nominalną, lecz przeciwnie - ma charakter numeryczny. W związku z tym do szczególnie istotnych zagadnień w problemach regresyjnych należy skalowanie wartości wyjściowych oraz skutki stosowania ekstrapolacji. Omówimy teraz kolejno oba wskazane zagadnienia.
Jak wiadomo, najpopularniejsze architektury sieci neuronowych zawierają neurony, których wartości wyjściowe zawarte są w pewnym ograniczonym przedziale (na przykład [0; 1] w przypadku logistycznej funkcji aktywacji). Nie stwarza to żadnych problemów ani nie powoduje ograniczeń w przypadku zagadnień klasyfikacyjnych, w których zadana wartość wyjściowa (wskazująca na zaliczenie obiektu do klasy lub na jego brak przynależności do zadanej klasy) może być wygodnie przedstawiona właśnie w takim przedziale. Jednak w przypadku problemów regresyjnych oczekujemy, że sieć poda rozwiązanie w postaci konkretnej wartości, w związku z tym kwestia skalowania tej wartości w taki sposób, by zawsze należała do podanego przedziału, musi zostać precyzyjnie rozwiązana. Zagadnienie to omawiane jest poniżej.
W pierwszej kolejności stosowany jest algorytm skalowania zapewniający, że wartości wyjściowe sieci będą w "rozsądnym" przedziale. Najprostszą taką funkcją skalującą w ST Neural Networks jest
funkcja minimax: wyznacza ona na podstawie zbioru uczącego wartości minimalną i maksymalną skalowanej zmiennej i przeprowadza przekształcenie liniowe (korzystając ze współczynnika skali i przesunięcia), w celu dostosowania wartości tej zmiennej do wymaganego przedziału (zwykle jest to przedział [0.0; +1.0]). Jeśli przekształcenie to zostanie wykonane na ciągłej zmiennej wyjściowej, to z pewnością wszystkie wartości wchodzące w skład zbioru uczącego zostaną przekształcone do zakresu wartości możliwych do zaakceptowania z punktu widzenia wartości dozwolonych w wyjściowych neuronach sieci.
Również od wartości wyjściowych pojawiających się w czasie późniejszego uruchamiania sieci podczas realizacji właściwych obliczeń na nieznanych z góry danych wejściowych wymaga się, aby znajdowały się w tym samym przedziale, dopuszczalnym dla używanego typu neuronów. Konieczność spełnienia tego wymogu może zostać uznana za cechę korzystna, ponieważ umożliwia to wykorzystywanie tych samych formuł skalujących zarówno podczas uczenia, jak i w czasie interpretacji produkowanych przez sieć wyników, ale konieczność używania tych samych formuł skalujących może być także oceniana jako czynnik utrudniający. Jest to związane z tak zwanym zagadnieniem ekstrapolacji. Wyjaśnijmy dokładniej, na czym to zagadnienie polega.
| Wartość srednial
Niech podstawą do rozważań będzie powyższy rysunek. Przedstawiona na nim została próba oszacowania wartości Y na podstawie wartości X. Do dostępnych punktów dopasowana została
StatSoft
Wprowadzenie - 58
Copyright StatSoft, 2001 Copyright for the Polish edition StatSoft Polska, 2001
SIECI NEURONOWE
krzywa, co w przypadku sieci neuronowej nastąpiło w trakcie uczenia sieci. Prawdopodobnie przebieg krzywej pomiędzy punktami dobrze odpowiada rzeczywistemu przebiegowi rozważanej zależności, dlatego z łatwością można się zgodzić na aproksymowanie danych pomiędzy danymi uczącymi właśnie przedstawioną krzywą, która w przybliżeniu ma prawidłowy kształt. Umożliwia to estymację wartości Y za pomocą odtwarzanych przez sieć wartości wyjściowych, obliczanych dla dowolnych danych wejściowych z przedziału reprezentowanego przez linię ciągłą. Innymi słowy sieć dostarcza z dużym prawdopodobieństwem prawidłowych wyników wszędzie tam, gdzie możliwa jest interpolacja danych.
Pojawia się jednak pytanie dotyczące właściwego sposobu estymacji wartości wyjściowej dla punktu dość znacznie przesuniętego w prawo od danych punktów. Istnieją dwa możliwe podejścia do estymacji wartości Y dla takiego punktu. Pierwsze polega na tym, że można zdecydować się na ekstrapolację: Dokonując przedłużenia do przodu trendu, który reprezentowany jest przez dopasowaną krzywą, można wyznaczyć ;
przypuszczalną wartość Y wynikającą z takiej "wiszącej" krzywej. Drugie podejście polega na tym, że można uznać, że poza przedziałem wejściowych danych, które były reprezentowane w ciągu uczącym nie ma w rzeczywistości dostatecznych podstaw do wyznaczenia jakiejkolwiek wartości wyjściowej i z tego powodu można przyjąć jako odpowiedź średnią wartość wyjściową, wyznaczoną z danych wyjściowych, które były reprezentowane w ciągu uczącym. Można wykazać, że przy braku jakichkolwiek informacji na temat charakteru badanej funkcji poza zakresem wyznaczonym przez dane wejściowe, oszacowanie podane za pomocą wartości średniej będzie prawdopodobnie najlepszym oszacowaniem. Dlatego jest rzeczą rozsądną i korzystną, że STNeural Networks takie właśnie rozwiązanie przyjmuje w przypadku braku podstaw do innego postępowania.
Przytoczone wyżej wskazówki, pozwalające szacować wartości aproksymowanej funkcji poza przedziałem zmienności danych uczących nie odnoszą się niestety do przypadku, kiedy do .; aproksymacji nieznanej funkcji zastosowana została sieć MLP. W takim przypadku, korzystając z zalecanego powyżej przekształcenia minimax, należy pamiętać o związanych z tym dwóch następujących ograniczeniach:
Po pierwsze, krzywa wytyczona przez sieć MLP absolutnie nie może być w prosty sposób (na zasadzie przedłużenia) ekstrapolowana poza zakres danych uczących. Dotyczy to nawet punktów leżących
w pobliżu zbioru uczącego, chociaż przy innych metodach aproksymacji w przypadku bardzo nieznacznego wychylenia się poza zakres wyznaczony przez dane uczące ekstrapolacja miałaby swoje uzasadnienie.
Po drugie, musimy się spodziewać, że jeśli w rozważanym przypadku stosowania sieci MLP zmusimy sieć, aby podała jakieś oszacowanie nieznanych wartości funkcji poza przedziałem znanych danych uczących, to nie poda ona zalecanego wyżej optymalnego oszacowania poprzez wartość średnią. Wartość, która zostanie wyznaczona w tym przypadku przez sieć, będzie najprawdopodobniej poziomem nasycenia, równym odpowiednio wartości maksymalnej lub minimalnej obserwowanej zmiennej wyjściowej - w zależności od tego, czy zbliżając się do rozważanego krańca znanego obszaru krzywa wznosiła się, czy też opadała.
Istnieją różne sposoby postępowania, mające na celu korektę tych niedostatków w sieci MLP. Po pierwsze, w miejsce logistycznej funkcji aktywacji w neuronach wyjściowych zastosować można liniową funkcję aktywacji, która po prostu przekazuje dalej niezmieniony poziom pobudzenia neuronu i nie podlega ograniczeniom związanym z pojawianiem się nasycenia. Warto zauważyć, że tylko funkcje aktywacji w warstwie wyjściowej są zmieniane; w warstwach ukrytych w dalszym
Wprowadzenie - 59 Copyright StatSoft, 2001 Copyright for the Polish edition StatSoft Polska, 2001
StatSoft
SIECI NEURONOWE
ciągu korzysta się z logistycznych lub hiperbolicznych funkcji aktywacji. Ponieważ liniowa funkcja aktywacji nie ma poziomu nasycenia, może ekstrapolować wykryte w danych zależności na większe odległości od zbioru uczącego. Mechanizmu tego nie należy jednak przeceniać, gdyż nieliniowe neurony, mające logistyczne funkcje aktywacji, znajdujące się we wcześniejszych warstwach, nadal wywołają efekt nasycenia w wartościach aproksymowanej funkcji, tylko na pewnym, zdecydowanie wyższym poziomie.
Proponowane rozwiązanie, związane z linearyzacją neuronów, nie jest niestety tak całkiem wolne od wad. Liniowa funkcja aktywacji w sieci MLP może powodować pewne problemy numeryczne podczas realizacji algorytmu wstecznej propagacji błędów. Dlatego w przypadku korzystania z tej metody musi być zastosowany niewielki współczynnik uczenia (mniejszy niż 0.1). Natomiast zaletą opisanego podejścia jest fakt, że gdy jest ono stosowane na podstawie działania sieci, może być realizowana ekstrapolacja.
Drugim rozwiązaniem problemów związanych ze stosowaniem sieci MLP do ekstrapolacji wyników uczenia, może być następujący trik. Otóż można sztucznie zmienić docelowy (tzn. występujący po przeskalowaniu) zakres wartości funkcji dla operacji skalowania techniką minimax. Na przykład można zażądać, żeby po przeskalowaniu aktualny zakres wartości (wynikający z danych zawartych w ciągu uczącym) zmieścił się w całości w węższym przedziale, na przykład [0.25; 0.75]. Wszystkie przypadki uczące są wówczas przekształcane do poziomu, który odpowiada tylko środkowej części zakresu wyjściowego neuronów wyjściowych. Jest rzeczą interesującą, że jeśli zakres ten jest mały, i obie wartości ograniczające zbliżają się do 0.5, to eksploatowany zakres charakterystyki neuronu odpowiada samej tylko środkowej części krzywej sigmoidalnej, która jest "prawie liniowa". Łatwo zauważyć, że podejście takie jest wtedy bardzo podobne do omówionego wyżej sposobu
polepszenia działania sieci przy użyciu liniowej warstwy wyjściowej. Po zastosowaniu omówionej wyżej sztuczki sieć może realizować (znowu -w ograniczonym zakresie) ekstrapolację zbudowanej funkcji poza zakres danych uczących, ale w końcu i w tym przypadku dojdzie do stanu nasycenia.
Omówione wyżej podejście ma bardzo intuicyjną interpretację. Dzięki zastosowaniu technik "wypychających" efekt nasycenia daleko poza obszar roboczy działania sieci nie dochodzi do deformacji zależności, które sieć ustaliła na podstawie danych uczących. Zależności te - jak można oczekiwać - obowiązują nie tylko w obszarze wyznaczonym przez dane uczące sieć, ale i poza nim. Posługując się tą wyuczoną zależnością, można więc próbować "odgadywać" wartości funkcji poza wyuczonym obszarem -zakładając niejawnie, że tam, w nieznanych obszarach obowiązują te same zależności i te same prawa, co w obszarze, który poznaliśmy (z ciągu uczącego). Jednak w miarę oddalania się od znanego obszaru maleje szansa na to, że badana funkcja będzie zachowywała się "grzecznie" i nie zmieni swojego charakteru. Ekstrapolacja jest więc uzasadniona na pewną odległość, poza którą powinna zostać przerwana.
Można dojść do wniosku, że jeśli stosowane jest pierwsze podejście i neurony liniowe są używane w warstwie wyjściowej, to nie ma w zupełności potrzeby użycia algorytmu skalowania, ponieważ neurony mogą osiągnąć dowolny poziom sygnału wyjściowego bez żadnego skalowania. Rzeczywiście, w ST Neural Networks możliwe jest całkowite wyłączenie skalowania z uwagi na zapewnienie wydajności (przy dużej liczbie sygnałów i przy dużej liczbie neuronów w sieci proces skalowania może zajmować dużo czasu i może wymagać znacznego zaangażowania komputera). Jednakże w rzeczywistości całkowite pominięcie skalowania jest zwykle niemożliwe, ponieważ powoduje powstanie trudności dla algorytmu uczącego. Brak skalowania sygnałów powoduje, że poszczególne wagi w sieci operują na sygnałach wyrażonych w bardzo
StatSoft
Wprowadzenie - 60
Copyright StatSoft, 2001 Copyright for the Polish edition StatSoft Polska, 2001
SIECI NEURONOWE
zróżnicowanych skalach. W rezultacie zarówno proces inicjalizacji wag, jak również (w pewnym stopniu) proces ich zmian w trakcie procesu uczenia jest przy zróżnicowaniu skal bardziej kłopotliwy i bardziej złożony. Z tego powodu wyłączanie skalowania zdecydowanie nie jest zalecane, chyba że mamy do czynienia z zadaniem, w którym zakres przewidywanych wartości wyjściowych jest bardzo mały i zbliżony do zera.
Te same argumenty uzasadniają użycie skalowania podczas preprocessingu danych wejściowych dla sieci MLP. W zasadzie można uznać, że skalowanie jest tu zbyteczne, ponieważ wagi pierwszej warstwy ukrytej mogłyby w prosty sposób być zmodyfikowane tak, aby same realizowały wymagany sposób skalowania. Jednak z wyżej wymienionych powodów korzystniejsze jest także i w tym przypadku skalowanie sygnałów niż skalowanie wag.
Powyższa dyskusja skupiona była na zachowaniu
się sieci MLP w zagadnieniach regresyjnych,
a w szczególności na ich zachowaniu
w zastosowaniu do zadania ekstrapolacji. Sieci
korzystające z neuronów radialnych (RBF oraz
GRNN) zachowują się zupełnie inaczej
i wymagają oddzielnego traktowania.
Nieodłączną cechą sieci radialnych jest ich absolutna niezdolność do ekstrapolacji. Jeżeli przypadek wejściowy odbiega dalej od punktów uczących przechowywanych w neuronach radialnych, to aktywacja neuronów radialnych zmniejsza się bardzo szybko do zera, co prowadzi ostatecznie do zmniejszania się także wartości wyjściowej sieci. W rezultacie niemal każdy zestaw sygnałów wejściowych ulokowanych daleko od centrów radialnych wypracowanych w toku procesu uczenia generuje wyjście sieci o wartości zerowej, niezależnie od tego, jaka jest prawdopodobna wartość ekstrapolowanej funkcji. W rezultacie wyniki ekstrapolacji są złe i nie ma sposobu, by w rozważanej klasie sieci mogły być lepsze.
Brak tendencji sieci RBF do ekstrapolacji może być uznany za cechę pozytywną (sieć nie "udaje", że zna wartość funkcji, skoro jej nie zna), jest to jednak uzależnione od dziedziny zastosowań i punktu widzenia. Generalnie tendencja sieci RBF do szybkiego zmniejszania obliczanych wartości wyjściowych z praktycznym osiąganiem zera tuż poza obszarem umożliwiającym prostą interpolację danych uczących nie jest przez użytkowników oceniana pozytywnie. Jak wspomniano wyżej, nawet jeśli użytkownik podejmuje decyzję o niestosowaniu ekstrapolacji, to jednak oczekuje, że w przypadku wprowadzenia do sieci całkowicie nowego punktu z obszarów przestrzeni wejściowej odległych od danych uczących, otrzyma na j
wyjściu jakiś w miarę sensowny sygnał - na przykład zostanie wygenerowana i podana jako odpowiedź wartość średnia ze wszystkich elementów uczących. Tymczasem sieć RBF poza obszarem danych uczących całkowicie odmawia jakiejkolwiek kooperacji, co trudno uznać za jej zaletę.
Aby osiągnąć bardziej wygodne dla użytkownika zachowanie sieci RBF, należy przy rozwiązywaniu problemów regresyjnych z wykorzystaniem sieci radialnych skorzystać z dostępnej w STNeural Networks funkcji skalowania, nazywanej średnia -odchylenie standardowe. Dane uczące (i generalnie wszystkiej inne dane, także te, które używane są przy roboczej eksploatacji sieci) skalowane są wówczas w taki sposób, że średnia wartość wyjściowa jest równa 0.0. Sposób skalowania wartości jest uzależniony od zadanej wartości wyjściowego odchylenia standardowego. Przy takim skalowaniu mamy bardzo dogodną sytuację: jeśli punkty wejściowe, dla których uruchamiana jest sieć podczas testów, położone są na zewnątrz zakresu reprezentowanego w neuronach radialnych, to wartość wyjściowa sieci posiada automatyczną tendencję powrotu do wartości średniej (ponieważ tą wartością średnią po przeskalowaniu jest zero, a sieci RBF mają omówioną wyżej "skłonność" do produkowania zerowego sygnału wyjściowego w obszarze odpowiadającym brakowi danych uczących).
Wprowadzenie - 61
Copyright StatSoft, 2001
Copyright for the Polish edition StatSoft Polska, 2001
StatSoft
SIECI NEURONOWE
Jakość działania sieci regresyjnej może być sprawdzana na kilka sposobów.
Po pierwsze, dla każdego przypadku (lub dla każdego nowego przypadku, który został wybrany do testowania) wyznaczyć można wartość wyjściową sieci. Jeśli przypadek ten jest częścią zbioru danych przeznaczonych do testowania (wtedy znana jest poprawna wartość wyjściowa jako tak zwana wartość zadana), to wyświetlana jest różnica pomiędzy wartością obliczoną i zadaną. Analizując te różnice, można zorientować się, na ile dokładnie sieć realizuje stawiane jej zadania.
Po drugie, można wyznaczyć statystyki sumaryczne, pokazujące jak dobrze sieć odtwarza zadaną funkcję. Statystyki te zawieraj ą wartość średnią i odchylenie standardowe zarówno dla wartości zawartych w ciągu uczącym, jak i dla błędu predykcji. Statystyki te, możliwe do wyznaczenia za pomocą ST Neural Networks, są niewątpliwie bardzo przydatne. Jednak interpretacja wartości tych statystyk wymaga pewnego zastanowienia, bo uproszczone rozumowanie może w tym przypadku prowadzić do paradoksów.
Rozważmy to bliżej. Powszechnie oczekuje się, że głównym wskaźnikiem jakości działania sieci będzie średnia wartość błędu predykcji. Może się przy tym wydawać, że najlepszą siecią będzie ta, której średni błąd będzie niezwykle bliski wartości zero. Tymczasem tego rodzaju "sukces" w istocie niczego nie dowodzi, ponieważ możliwe jest uzyskanie w prosty sposób zerowego średniego błędu predykcji przez sieć szacującą wartość wyjściową stale na tym samym poziomie: średniej wartości dla ciągu uczącego. Taka sieć, nie uwzględniająca wcale wartości zmiennych wejściowych, będzie miała średnio najmniejszy (zerowy) błąd i może być uznana za lepszą od dowolnej innej sieci neuronowej, realizującej znacznie inteligentniejsze prognozy, ale średnio popełniającej większy błąd.
Przytoczone rozumowanie wskazuje na to, że najistotniejszą wartością pozwalającą ocenić
jakość działania sieci jest odchylenie standardowe dla błędów predykcji. Jeśli nie jest ono lepsze (czyli mniejsze) niż odchylenie standardowe dla danych uczących, to wówczas działanie sieci nie jest lepsze niż szacowanie dające jako rezultat stale i niezmiennie wartość średnią. Dopiero znacząco mniejsza wartość odchylenia standardowego predykcji upoważnia do twierdzenia, że sieć neuronowa dokonuje sensownego przewidywania.
Dla ułatwienia opisanego wyżej wnioskowania ST Neural Networks prezentuje - obok "surowych" wartości średnich i odchyleń standardowych -stosunek odchylenia standardowego dla błędów predykcji do odchylenia standardowego danych wchodzących w skład ciągu uczącego. Wartość tego wskaźnika w znaczący sposób mniejsza od 1.0 wskazuje na dobrą realizację regresji, gdyż rozrzut predykcji jest mniejszy niż rozrzut "surowych" danych.
Dla konkretyzacji ocen przyjmuje się, że naprawdę dobrej regresji odpowiada wartość omawianego wskaźnika mniejsza od 0.1. Ten wskaźnik regresji (a raczej, mówiąc precyzyjnie, wartość obliczana jako jeden minus ten wskaźnik) jest czasami interpretowany jako stopień zdeterminowania badanego zjawiska. Potocznie mówi się, że wartość wyliczona w wyżej opisany sposób pokazuje wyjaśnioną przez model część wariancji danych. Im ta część jest większa, tym lepszy (oczywiście) jest model.
Po trzecie, można z pomocą programu wygenerować obraz powierzchni odpowiedzi sieci. Rzeczywista powierzchnia odpowiedzi sieci jest oczywiście rozpostarta w przestrzeni N+l wymiarowej, gdzie N jest liczbą neuronów wejściowych, ostatni zaś wymiar przedstawia wysokość. Jest zrozumiałe, że nie można bezpośrednio przedstawiać w sposób graficzny powierzchni, jeśli N jest większe niż 2 (wartość ta jest zawsze stała). Jednakże ST Neural Networks może wyświetlać powierzchnię pokazującą zmienność odpowiedzi sieci w zależności od sygnałów dowolnych dwóch neuronów wejściowych. Takie "przekroje" wielowymiarowej
StatSoft
Wprowadzenie - 62
Copyright StatSoft, 2001 Copyright for the Polish edition StatSoft Polska, 2001
SIECI NEURONOWE
powierzchni wnoszą dość dużo użytecznych informacji, warto więc je sporządzać i analizować ich kształt.
W celu sporządzenia takiego przekroju wartości wszystkich innych wejść są utrzymywane na stałym poziomie, podczas gdy dwa wybrane wejścia, mają zmieniane wartości w pełnym przedziale dopuszczalnych danych. Wartości wejściowe tych zmiennych, które nie są wybrane, mogą przyjmować dowolnie zadane, ustalone wartości. Domyślnie STNeural Networks nadaje im wartości średnie, ale wejścia te mogą się zmieniać w dowolnym zakresie (domyślnie, w zakresie wyznaczonym przez przedział zmienności dla zbioru uczącego). Można w ten sposób prześledzić wrażliwość sygnału wyjściowego z sieci w funkcji wskazanych sygnałów wejściowych przy dowolnych warunkach wyznaczanych przez wartości ustalanych zmiennych.

$Prognozowanie szeregów czasowych w ST Neuraf Networks

Celem analizy szeregów czasowych jest ustalenie prognozy przyszłych wartości pewnej zmiennej (o wartościach zmieniających się w czasie). Najczęściej dążymy do obliczenia prognozy, korzystając z wcześniejszych wartości tej samej zmiennej, której wartość ma być przewidywana i/lub innych zmiennych, o których sądzimy, że mają wpływ na badaną zmienną (Bishop, 1995).
Zwykle prognozowana zmienna jest ciągła, tak więc prognozowanie szeregów czasowych jest zwykle specjalizowaną formą regresji. Jednakże nie jest to wbudowane w STNeural Networks jako sztywne ograniczenie, więc możliwe jest również prognozowanie szeregów czasowych w postaci ewoluujących w czasie zmiennych nominalnych. W tym ostatnim przypadku celem naszych prac jest zmienna, podlegająca prognozowaniu (odgadywaniu?), klasyfikacja.
Zwykle prognozuje się następną wartość szeregu na podstawie określonej liczby wartości
poprzedzających. W takim przypadku chodzi o wyznaczanie wartości oddalonej w czasie o jeden krok do przodu, jednak nic nie przeszkadza w podobny sposób rozważać proces prognoz długookresowych. STNeural Networks może w rzeczywistości wyznaczać wartości oddalone o dowolną liczbę kroków, jednak praktyka pokazuje, że prognozy długookresowe są mniej pewne, a przez to mniej przydatne niż prognozy dotyczące najbliższego (następnego) interwału czasowego.
Proces prognozy można przedłużać w czasie. Po wyznaczeniu (w oparciu o znane punkty) następnej (pierwszej nieznanej) wartości w szeregu czasowym możemy na podobnej zasadzie odgadywać dalsze wartości, przy czym te kolejne wartości można szacować poprzez wprowadzenie nowo oszacowanej wartości z powrotem na wejście sieci. Ta odgadnięta wartość łącznie z innymi wcześniejszymi wartościami może stanowić przesłankę do odgadnięcia kolejnej wartości - i tak dalej. W ten sposób krok po kroku realizowana jest przez sieć prognoza wieloetapowa szeregu czasowego. ;
Jeśli korzysta się z prognozowania następnej wartości, to STNeural Networks może również zrealizować prognozę wieloetapową. Oczywiście, niezawodność prognozy zmniejsza się wraz ze zwiększaniem odległości pomiędzy wartością bieżącą i prognozowaną. Gdy prognozowana ma być wartość oddalona o określoną liczbę okresów, to prawdopodobnie najwłaściwszym rozwiązaniem będzie uczenie sieci dostosowanej wyraźnie do realizacji takiej prognozy.
W STNeural Networks dowolny typ sieci może zostać użyty do prognozowania szeregów czasowych. Typ sieci musi być jednak odpowiedni do realizacji odpowiedniej formy przetwarzania sygnałów wejściowych - regresji lub klasyfikacji, w zależności od rodzaju rozważanego problemu. Wybrana sieć jest przystosowywana do prognozowania szeregów czasowych poprzez ustalenie wartości parametrów Rząd oraz Horyzont prognozy. Parametr Rząd określa, ile przypadków (obserwacji wcześniejszych wartości rozważanej
Wprowadzenie - 63 Copyright StatSoft, 2001 Copyright for the Polish edition StatSoft Polska, 2001
StatSoft*
SIECI NEURONOWE
zmiennej) musi zostać wprowadzonych na wejścia sieci, żeby w oparciu o nie sieć mogła wyznaczyć wartość wyjściową, czyli prognozowaną kolejną następną wartość tej zmiennej. Z kolei parametr Horyzont prognozy mówi, jak daleko od końca serii retrospektywnych obserwacji podawanych na wejściu jest oddalona ta wartość zmiennej, która ma być przewidywana (prognozowana).
Sieć przeznaczona do prognozowania szeregów czasowych może (w ogólnym przypadku) posiadać dowolną liczbę zmiennych wejściowych i dowolną liczbę zmiennych wyjściowych. Jednak najczęściej spotyka się sytuację, w której występuje tylko jedna zmienna, której kolejne wartości (pochodzące z kolejnych chwil czasowych zarejestrowanych w przeszłości) stanowią zmienne wejściowe wprowadzane na kolejne wejścia sieci oraz której przypuszczalna wartość w pewnej chwili czasowej w przyszłości (chwilę tę wyznaczamy, uwzględniając przesunięcie czasowe równe horyzontowi prognozy) stanowi zmienną wyjściową. Konfigurując sieć do analizy szeregów czasowych, trzeba uwzględnić zmieniony sposób realizacji preprocessingu danych. Dane te pochodzą, jak już stwierdzono, z pewnej liczby obserwacji tej samej pojedynczej zmiennej, pochodzących z różnych (chociaż na ogół sąsiadujących) okresów czasu, a nie z pojedynczego przypadku, polegającego na równoczesnym wystąpieniu pewnej liczby różnych sygnałów wejściowych odpowiednio na wszystkich wejściach sieci (jak to ma miejsce w większości innych sieci). Jednak pomimo tej różnicy uruchamianie i uczenie sieci przebiega w sposób podobny jak w innych, wyżej rozważanych problemach.
Zbiór uczący wykorzystywany przy analizie szeregów czasowych budowany jest zwykle, zgodnie z tym co zostało już powiedziane, w oparciu o pojedynczą zmienną, której typ określony jest wtedy jako Wejściowo-Wyjściowy. Oznacza to, że jest ona wykorzystywana zarówno jako wejście sieci, jak i jako jej wyjście.
W trakcie analizy szeregów czasowych w ST Neuml Networks najwięcej trudności może
sprawiać prawidłowa interpretacja czterech wymaganych zwykle kategorii zgromadzonych przypadków: uczących, walidacyjnych, testowych oraz nieuwzględnionych. W przypadku zwykłych zbiorów danych każdy przypadek jest niezależny i jego znaczenie jest zrozumiałe samo przez się (na przykład egzemplarz obrazu jakiegoś obiektu i jego nazwa). Jednakże w przypadku sieci analizującej szeregi czasowe każdy wzorzec wejść i wyjść pochodzi w rzeczywistości z pewnego odcinka danych pochodzących z historii analizowanego zjawiska. Wzorzec taki składa się z pewnej liczby (określonej przez parametry Rząd oraz Horyzont prognozy) obserwacji rozważanego sygnani (wartości rozważanej zmiennej) poprzedzających pewien moment czasu wyróżniony w przeszłości oraz z obserwacji następującej po tym momencie. Różne próbki badanego szeregu czasowego, składające się na zbioru uczące, testowe, walidacyjne i (ewentualnie) nieuwzględniane, powstają w ten sposób, że wybierając różne wyróżnione punkty czasowe, w obszarze rozważanej przeszłości i odmierzając od nich odpowiednią liczbę (parametr Rząd) obserwacji poprzedzających oraz odpowiednio ulokowaną (parametr Horyzont prognozy) obserwację następującą potem -otrzymuje się odpowiednią próbkę do odpowiedniego zbioru.
Taki stan rzeczy ma dwie konsekwencje:
Załóżmy, że do każdego elementu szeregu czasowego (do każdej rozważanej informacji) przyporządkowany jest określony typ. Zgodnie z tym przypisanym typem może to być element uczący, element testowy, element walidacyjny albo element nieuwzględniany. Jednak, jak wynikało z wcześniej przedstawionych rozważań, pełny wzorzec, stanowiący kompletny przykład przy nauczaniu albo przy ocenie sieci prognozującej szeregi czasowe obejmuje cały szereg obserwacji: kilka (zależnie od parametru Rząd) obserwacji traktowanych jako dane wejściowe oraz jedną obserwację stanowiącą wzorzec prawidłowego wyjścia. Co więcej, kolejne wzorce do uczenia lub do sprawdzania
StatSoft
Wprowadzenie - 64
Copyright StatSoft, 2001 Copyright for the Polish edition StatSoft Polska, 2001
SIECI NEURONOWE
sieci tworzy się, przesuwając wzdłuż szeregu czasowego "okienko" z danymi wejściowymi (oraz ze związaną z nimi wzorcową wartością "prognozowanego" wyjścia). W tej sytuacji łatwo może dojść do sytuacji konfliktowej, polegającej na tym, że jedne dane w obszarze wzorca należą do jednego typu, a inne - do innego typu. Dla uzyskania (trudnej w tej sytuacji) jednoznacznej klasyfikacji całości rozważanego przypadku stosowana jest konwencja polegająca na tym, że typ rozważanego wzorca (złożonego zarówno z sygnałów wejściowych, jak i wyjściowych) jest określany przez typ tego przypadku (tej obserwacji), która stanowi informację wyjściową. Rozważmy przykład. Niech w zbiorze danych, zawierającym pewną liczbę przypadków, dwa pierwsze mają charakter danych nieuwzględnionych, zaś trzeci jest oznaczony jako testowy. Załóżmy przy tym, że parametr Rząd = 2, a parametr Horyzont prognozy = l. Wówczas pierwszy wzorzec, który może być wykorzystany z takich danych, ma charakter testowy, ponieważ zawiera informacje wejściowe z pierwszych dwóch przypadków, zaś informację wyjściową (wzorzec poprawnej prognozy) z trzeciego. Co więcej, dwa pierwsze przypadki są wykorzystywane w uczeniu, mimo tego, że są oznaczone jako nieuwzględnione.
Jak z tego wynika, we wzorcach, które mają odpowiednio charakter uczący, walidacyjny oraz testowy (zależnie od typu wyjściowego elementu), mogą w obszarze danych wejściowych występować elementy dowolnych typów. Można więc uznać, że w pewnym sensie konkretne dane "przesączają się" pomiędzy zbiorami: uczącym, walidacyjnym oraz testowym - przy czym (co warto powtórzyć) decydująca jest klasyfikacja danej wyjściowej.
Warto sobie uświadomić, że opisany sposób konstruowania potrzebnych zbiorów (uczącego, testowego i walidacyjnego) jest korzystny zarówno z punktu widzenia ekonomicznego wykorzystania posiadanych danych (przy relatywnie niewielkiej liczbie posiadanych obserwacji można mieć do dyspozycji stosunkowo dużo przykładów
w każdym z wymaganych zbiorów), jak i z punktu widzenia reprezentatywności zbiorów. Aby całkowicie odseparować te trzy zbiory, należałoby zdefiniować w rozważanym szeregu czasowym ciągłe bloki przypadków uczących, walidacyjnych oraz testowych, które oddzielone byłyby od siebie odpowiednią liczbą przypadków nieuwzględnionych w analizie.
Warto skupić uwagę na kilku dodatkowych konsekwencjach opisanych wyżej zasad tworzenia stosownych zbiorów wykorzystywanych w procesie uczenia sieci. Wynika z nich między innymi, że pierwszych kilka przypadków rozważanego szeregu czasowego może służyć wyłącznie jako dane wejściowe w budowanych wzorcach. Następnie możemy stwierdzić, że liczba wybranych przypadków określonego rodzaju (testowych, uczących i walidacyjnych) jest zawsze określana przez liczbę przypadków wyjściowych przypisanych do tego rodzaju. Warto także mieć na uwadze fakt, że przy ustalonej wielkości posiadanej próbki rozważanego szeregu czasowego liczba możliwych do zbudowania przykładów (zaliczanych potem do zbioru uczącego, testowego lub walidacyjnego) jest zależna głównie od wartości parametru Rząd, czyli od liczby obserwacji tworzących sygnały wejściowe do sieci. Wynika to z faktu, że wybierając przypadki wykorzystywane w trakcie uczenia sieci prognozy szeregu czasowego, należy pamiętać, że każdy taki przypadek musi w całości zmieścić się na odcinku czasu, w jakim znamy wartości tego szeregu, a to jest trudniej zapewnić w odniesieniu do licznych (zajmujących dłuższy odcinek historycznych danych) sygnałów wejściowych niż w przypadku pojedynczej danej wyjściowej. Z tego też powodu kilka pierwszych obserwacji oczywiście nie może być wybranych jako dane definiujące własne zbiory (gdyż wymagałoby to istnienia wcześniejszych przypadków ulokowanych przed początkiem posiadanego zbioru danych) i dlatego przy tworzeniu danych dla uczenia sieci szeregów są one automatycznie zaznaczane jako nieuwzględnione.
#65
$Wybór zmiennych oraz redukcja liczby wymiarów

W poprzedniej sekcji dotyczącej projektowania . i uczenia sieci przyjęto założenie, że warstwa wejściowa i wyjściowa sieci jest ustalona; to znaczy, że z góry wiemy, jakie zmienne stanowić będą wejścia do sieci i jakie są w niej oczekiwane wartości wyjściowe. Istotnie, te drugie są zawsze znane, gdyż samo sformułowanie zadania dla sieci jednoznacznie wskazuje, czego od niej oczekujemy. Nieco ostrożniej można tę tezę sformułować w taki sposób, że przynajmniej w tych zagadnieniach, w których stosuje się uczenie z nauczycielem, nie powinno być wątpliwości, jakie sygnały pojawiają się na wyjściu sieci, ponieważ nauczyciel musi podawać dla tych sygnałów wyjściowych wzorce ich poprawnych wartości. Natomiast wybór zmiennych wejściowych dla sieci jest o wiele trudniejszy (Bishop, 1995), a sformułowane zadanie często pozostawia w tym zakresie sporą dowolność.
Istota problemu polega na tym, że budując sieć, często nie wiemy, jaki zestaw (spośród wielu kandydujących zmiennych wejściowych) jest w rzeczywistości użyteczny dla skutecznego wyznaczania przez sieć potrzebnej wartości wyjściowej. Wybór dobrego zbioru wejść jest dodatkowo utrudniony z uwagi na konieczność rozważenia licznych, istotnych przesłanek:
Problem wymiarowości. Każdy dodatkowy neuron wejściowy w sieci powoduje zwiększenie wymiaru przestrzeni, w której znajdują się przypadki danych. Komplikuje to strukturę sieci, a także stwarza większe wymagania odnośnie zbiorów uczących. Należy bowiem pamiętać o konieczności zapewnienia dostatecznej liczby punktów uczących, które w wystarczającym stopniu wypełnią N-wymiarową przestrzeń sygnałów wejściowych. Musi być tych punktów uczących na tyle dużo, żeby wystarczająco gęsto wypełniły przestrzeń wejść, tak aby możliwe było "zobaczenie" istniejącej
struktury danych i wierne odwzorowanie jej właściwości. Liczba punktów niezbędnych do tego rośnie bardzo szybko wraz z wymiarem przestrzeni sygnałów wejściowych, co stanowi istotny problem. Szacunkowo można podać, że liczba punktów (elementów zbioru danych) potrzebnych do w miarę wiernego odwzorowania zasadniczych cech tworzonego modelu jest rzędu 2N. Oznacza to, że dla sieci neuronowych (podobnie jak dla większości innych technik modelowania) nie można bezkarnie powiększać liczebności wejściowego wektora danych, gdyż trzeba wtedy mieć bard/o wiele obserwacji, aby uzyskać w miarę reprezentatywne dane. Podane wyżej uwagi można czasem nieco złagodzić. Większość typów sieci neuronowych (w szczególności sieci MLP) w rzeczywistości jest w mniejszym stopniu podatna na problemy związane z wymiarem przestrzeni, niż by to wynikało z przytoczonych wyżej rozważań. Wynika to z faktu, że sieci neuronowe w trakcie uczenia potrafią od razu na początku "skoncentrować się" na pewnym podzbiorze przestrzeni wejściowej. Oznacza to, że sieć umie w trakcie uczenia skupić się na "zadaniu zastępczym", charakteryzującym się mniejszym wymiarem przestrzeni sygnałów wejściowych. W takiej "wykrojonej" podprzestrzeni oryginalnej wysoko wymiarowej przestrzeni wejść sieć neuronowa potrafi zaskakująco dobrze odwzorować specyfikę rozwiązywanego zadania - przynajmniej w porównaniu z innymi metodami modelowania matematycznego (na przykład w porównaniu z metodami statystycznymi). Wspomniane "przycinanie" wejściowej przestrzeni odbywa się w sieci neuronowej bardzo prosto: poprzez wyzerowanie wag wychodzących od wybranego wejścia sieć MLP może całkowicie zignorować daną zmienną wejściową. Oznacza to, że w trakcie uczenia sieci może dochodzić równocześnie do dwóch procesów: optymalizacji funkcji przenoszenia
StatSoft
Wprowadzenie - 66
Copyright StatSoft, 2001 Copyright for the Polish edition StatSoft Polska, 2001
SIECI NEURONOWE
całej sieci, będącej modelem poszukiwanej zależności, oraz selekcji zmiennych wejściowych z podziałem ich na takie, które będą argumentami rozważanej funkcji oraz na takie, które będą odrzucone (zignorowane). Niemniej problem wymiaru wejściowych danych dla sieci neuronowych nadał istnieje i działanie sieci może być z pewnością polepszone poprzez eliminację od samego początku zbędnych zmiennych wejściowych. W związku z tym, że precyzyjna ocena stopnia informatywności poszczególnych danych wejściowych bywa bardzo trudna, nie zawsze wiemy, które zmienne są zbędne. W związku z tym w celu zmniejszenia problemów związanych z wymiarem przestrzeni wejść czasami wskazane jest usunięcie nawet takich zmiennych, które zapewne wnoszą pewną ilość informacji, jednak mamy powody sądzić, że akurat ich udział w budowanym modelu jest niewielki.
Współzależności pomiędzy zmiennymi. Gdyby istniała możliwość niezależnej oceny użyteczności każdej potencjalnej zmiennej wejściowej, to wówczas można by było wybrać na wejścia sieci tylko te spośród nich, które są najbardziej przydatne. Niestety, taka możliwość istnieje rzadko, gdyż zwykle istotne dodatkowe informacje mieszczą się we współwystępowaniu zmiennych. Chodzi mianowicie o to, że dwie lub większa liczba współzależnych zmiennych może razem dostarczać istotnych informacji, podczas gdy każdy podzbiór takiego zestawu zmiennych informacji tych już nie zawiera. Klasycznym przykładem zadania, w którym współwystępowanie zmiennych wnosi informacje niedostępne w inny sposób, może być szeroko znany problem dwóch spiral. Zadanie to polega na zaliczaniu wejściowych danych do jednej z dwóch klas. Te dwie klasy rozpoznawanych danych tworzą w dwuwymiarowej przestrzeni wejściowej dwie splecione ze sobą spirale. Łatwo zauważyć, że w tym zadaniu żadna ze zmiennych wejściowych samodzielnie nie
dostarcza użytecznych informacji (wzdłuż każdej z osi rozważane dwie klasy wyglądają na całkowicie przemieszane), ale korzystając łącznie z obu zmiennych można dokładnie rozróżnić obie klasy. Przytoczony przykład wskazuje na to, że zmienne wejściowe nie mogą być zwykle oceniane ani wybierane całkiem niezależnie, lecz powinny być niekiedy oceniane w pewnych grupach, wynikających z natury rozwiązywanego problemu.
Redundancja zmiennych. Często w zadaniach rozwiązywanych za pomocą sieci neuronowych zdarza się, że liczne zmienne mogą dostarczać na różne sposoby tych samych informacji. Na przykład wzrost i waga ludzi mogą, w wielu okolicznościach, dostarczać podobnych informacji, ponieważ te dwie zmienne są zwykle ze sobą silnie skorelowane. W przypadku, kiedy zmienne wejściowe są silnie skorelowane, wystarczy użyć w charakterze wejść pewnego ich podzbioru (czyli wybrać spośród zmiennych skorelowanych odpowiednią reprezentację, tak zbudowaną, by zmienne zachowane w tej reprezentacji już dalej nie były wzajemnie skorelowane). W podanym wyżej przykładzie oznacza to, że do danych wejściowych włączona powinna być albo informacja o wzroście, albo informacja o wadze rozważanego człowieka, niecelowe jest natomiast podawanie obydwu tych skorelowanych danych. W opisanym przypadku ważne jest usunięcie nadmiarowych zmiennych, ale całkowicie dowolny jest wybór zachowywanego podzbioru (czyli decyzja o tym, które zmienne usunąć, a które pozostawić). Wybór ten może być dyktowany jakimiś dodatkowymi czynnikami, na przykład faktem, że jedne zmienne wejściowe są łatwiejsze do uzyskania niż inne. Przewaga stosowania podzbioru skorelowanych zmiennych zamiast korzystania z pełnego ich zbioru j est oczywistą konsekwencją dyskutowanego wyżej problemu wymiaru wejściowego
Wprowadzenie - 67 Copyright StatSoft, 2001 Copyright for the Polish edition StatSoft Polska, 2001
StatSoft
SIECI NEURONOWE
wektora danych. Dokonując opisanej w poprzednim punkcie redukcji danych, musimy być pewni, że w rozważanym problemie nie pojawia się merytoryczna potrzeba uwzględniania (jako dodatkowej ważnej informacji) wzajemnych relacji lub proporcji skorelowanych zmiennych. W rozważanym przykładzie z wagą i wzrostem może się okazać, że uwzględnienie zarówno wagi, jak i wzrostu, jest celowe mimo ich skorelowania. Będzie się tak działo w przypadku, gdy w procesie rozpoznawania ważną informacją może być zarówno nadmierne wychudzenie lub (przeciwnie) nadmierna otyłość. Gdyby przeznaczeniem budowanej sieci miało być jedno z zadań diagnostyki medycznej, wówczas z pewnością informacja o proporcji wagi do wzrostu będzie ważną przesłanką dla wymaganych decyzji. Jednak nawet w takim przypadku nie jest celowe zwyczajne podawanie obok siebie obu skorelowanych danych (np. wzrostu i wagi), bo wtedy sieć może się koncentrować na tym, że jedna z tych wartości daje się przewidywać na podstawie drugiej za pomocą prostej regresji, a nie o to w tym przypadku chodzi. Dlatego mając dane wejściowe silnie skorelowane i mając równocześnie świadomość konieczności uwzględniania obydwu skorelowanych informacji - lepiej jest podać jako wejście sieci jedną ze skorelowanych wartości oraz na przykład stosunek drugiej wartości do tej pierwszej. Taka wartość względna (na przykład iloraz wagi i wzrostu), jak wiadomo, nie jest skorelowana, więc unika się paradoksów w działaniu sieci, a jednocześnie odciąża się sieć od konieczności "odkrywania" w trakcie uczenia, że taka właśnie proporcja stanowi ważną przesłankę przy podejmowaniu wymaganej decyzji.
Powyższe uwagi wskazują, że wybór zmiennych wejściowych jest krytycznym elementem projektowania sieci neuronowej. Aby dokonać wyboru zmiennych wejściowych przed użyciem STNeural Networks, można skorzystać z własnej
wiedzy lub zasięgnąć opinii ekspertów z zakresu rozwiązywanego problemu. Można także użyć standardowych testów statystycznych dla uzyskania dokładniejszej informacji o naturze posiadanych danych. STNeural Networks udostępnia użytkownikowi sporo narzędzi, przy pomocy których można przetestować różne kombinacje zmiennych wejściowych. Posiada bowiem możliwość "nieuwzględniania" pewnych zmiennych i budowania próbnych sieci, które nie wykorzystują tych zmiennych jako wejść. Dzięki temu udogodnieniu można eksperymentalnie dodawać i usuwać różne kombinacje danych, budując za każdym razem nową sieć i sprawdzając jej działanie.
W trakcie takich eksperymentów szczególnie przydatne są sieci probabilistyczne i sieci realizujące regresję uogólnioną. Chociaż w porównaniu z bardziej zwartymi sieciami MLP oraz RBF są one powolne w działaniu, to za to ich uczenie jest prawie natychmiastowe - co jest bardzo istotne, gdyż w trakcie testowania dużej liczby kombinacji zmiennych wejściowych proces budowy i uczenia sieci musi byś wielokrotnie powtarzany. Co więcej, sieci PNN oraz GRNN są (podobnie jak sieci RBF) przykładami sieci radialnych. Oznacza to, że posiadają one neurony radialne w pierwszej warstwie ukrytej i budują funkcje będące kombinacjami funkcji Gaussa. Jest to dużą zaletą w trakcie doboru zmiennych wejściowych, ponieważ sieci radialne są w rzeczywistości bardziej podatne na problem wymiaru niż sieci liniowe, więc kontrola danych odbywa się w tym przypadku przy użyciu wyjątkowo wymagającego testu.
Aby wyjaśnić powyższe stwierdzenie, rozpatrzmy efekt, jaki wywoła dodanie do sieci dodatkowej, wybranej w sposób niepoprawny, zmiennej wejściowej. Sieć liniowa, taka jak MLP, może "ukryć" ten błędny wybór zmiennej wejściowej w taki sposób, że w trakcie uczenia może nadać wszystkim wagom wychodzącym od błędnego wejścia wartość zero. Taki wynik uczenia spowoduje, że błędna czy zbędna informacja będzie w trakcie pracy sieci ignorowana i nie
StatSoft
Wprowadzenie - 68
Copyright StatSoft, 2001 Copyright for the Polish edition StatSoft Polska, 2001
SIECI NEURONOWE
dowiemy się, że była ona niepotrzebna. W praktyce takie "izolowanie" niektórych zmiennych wejściowych zachodzi dosyć często (w sposób całkowicie niezauważalny dla użytkownika), ponieważ jest bardzo łatwe do realizacji. Po prostu pewne wagi, o niewielkich wartościach początkowych (jak wszystkie wagi po procesie losowej inicjalizacji sieci), pozostają po procesie uczenia nadal małe, zaś inne wartości wag (wychodzących od wejść niosących istotną informację) będą się w trakcie uczenia systematycznie odchylać od niewielkich wartości początkowych w kierunku określonych wartości końcowych - dodatnich albo ujemnych.
Tak bywa w sieciach typu MLP. W odróżnieniu od tego sieci radialne, takie jak PNN lub GRNN, nie dostarczają takiego luksusu. Generowane w neuronach radialnych skupienia, które miałyby określony kształt w przestrzeni zmiennych istotnych, posiadającej niższy wymiar, zostają istotnie zaburzone i zniekształcone przez pojawiające się w danych wejściowych nieistotne składowe, nadające przestrzeni, w której budowane są skupienia, niepotrzebnie i niekorzystnie większy wymiar. Pokrycie przestrzeni o większej wymiarowości wymaga wtedy większej liczby neuronów, aby uwzględnić (nieistotną, ale pojawiającą się w danych) zmienność generowaną przez "nadmiarowe" wymiary. Ujawnia się to natychmiast w postaci złych wyników uzyskiwanych przez sieć. Jeśli usuniemy nadmiarowe zmienne - jakość działania sieci radykalnie się poprawia. Możliwość dokonania optymalizacji przestrzeni wejść poznajemy więc na tej podstawie, że "próbna" sieć, która gorzej się zachowuje w przypadku korzystania z całej zbiorowości sygnałów wejściowych (w tym także z tych niepoprawnie dobranych, ale trudnych do wykrycia zmiennych wejściowych), radykalnie polepsza swoje działanie przy próbie eliminacji pewnych wejść (które na tej podstawie mogą być zidentyfikowane jako błędnie dobrane czy wręcz niepotrzebne).
Ponieważ takie eksperymenty są bardzo czasochłonne (trzeba wielokrotnie ponawiać próby
uczenia i oceny sieci, eliminując po kolei różne zmienne i ich kombinacje), ST Neural Networks posiada również mechanizmy umożliwiające ich przeprowadzenie w sposób automatyczny, bez angażowania uwagi i wysiłku użytkownika. Mechanizm ten wykorzystuje do wyboru właściwej kombinacji wejść tak zwany algorytm genetyczny (Goldberg, 1989) oraz metody krokowe (postępująca i wsteczna).
Algorytmy genetyczne są techniką globalnej optymalizacji, bardzo dobrze się sprawdzającą przy takich problemach jak tu opisywane, gdyż posiadają zdolność przeszukania dużej liczby kombinacji (w tym przypadku - zestawów zmiennych wejściowych) w celu znalezienia najlepszego rozwiązania. Stosowanie algorytmów genetycznych jest szczególnie korzystne w sytuacji, gdy mogą istnieć współzależności pomiędzy optymalizowanymi zmiennymi i przy ich eliminacji trzeba brać pod uwagę wpływ ich wzajemnych interakcji.
Innym podejściem do rozwiązania problemu redukcji wymiaru przestrzeni sygnałów wejściowych, które stanowić może alternatywę lub uzupełnienie w stosunku do opisanych wyżej metod wyboru zmiennych, jest redukcja wymiaru przestrzeni wejść metodą zastosowania odpowiedniej transformacji. W trakcie transformacji pierwotny zbiór zmiennych jest przetwarzany w celu utworzenia nowego, mniejszego zbioru zmiennych, który zawiera maksymalnie dużo informacji zawartej w zbiorze pierwotnym. Jako przykład danych dobrze nadających się do takiej transformacji rozważyć można taki zbiór danych, w którym wszystkie punkty leżą na pewnej płaszczyźnie, umieszczonej skośnie w przestrzeni trójwymiarowej. W takim przypadku oryginalne kodowanie danych wymaga, żeby każda z nich miała trzy składowe (ponieważ każdy punkt trzeba jednoznacznie umieścić w przestrzeni trójwymiarowej), podczas gdy faktyczny wymiar przestrzeni danych wynosi dwa (gdyż wszystkie informacje w rzeczywistości ulokowane są na płaszczyźnie, czyli w dwuwymiarowej podprzestrzeni oryginalnej
Wprowadzenie - 69
Copyright StatSoft, 2001
Copyright for the Polish edition StatSoft Polska, 2001
StatSoft
SIECI NEURONOWE
przestrzeni trójwymiarowej). Jeśli płaszczyzna ta zostanie określona, to sieć neuronowa może posiadać mniejszy wymiar danych wejściowych, dzięki czemu posiada większą szansę na poprawna pracę.
Najpopularniejszym sposobem redukcji wymiaru przestrzeni sygnałów wejściowych jest analiza głównych składowych (Bishop, 1995; porównaj również opis STATISTICA w rozdziale Analiza czynnikowa). Jak wiadomo, analiza głównych składowych jest to transformacja liniowa, która wyznacza kierunki maksymalnej zmienności pierwotnych danych wejściowych i dokonuje rotacji układu współrzędnych w taki sposób, żeby maksymalna zmienność danych zachodziła po transformacji wzdłuż tych nowych, obróconych osi. Zwykle dokonuje się przy tym takiego uporządkowania numeracji wykrytych nowych osi (składowych głównych), żeby początkowe (mające najniższe numery) główne składowe zawierały najwięcej informacji. Można wtedy oprzeć działanie sieci jedynie na kilku początkowych składowych głównych, co radykalnie zmniejsza wysiłek związany z operowaniem wejściowym zbiorem sygnałów.
Ponieważ analiza głównych składowych (którą dalej nazywać będziemy w skrócie PCA; od angielskiej nazwy Principal Components Analysis) jest matematycznie opisywana transformacją liniową, więc może być wykonywana przez liniową sieć neuronową. ST Neural Networks posiada możliwość uczenia sieci liniowej w taki sposób, aby uzyskana sieć realizowała PCA. Opcja ta jest chętnie stosowana, ponieważ często PCA jest w stanie wyodrębnić z danych wejściowych bardzo małą liczbę składowych głównych o tak dużej zawartości informacyjnej, że podanie ich na wejście sieci modelującej badaną zależność z powodzeniem może zastąpić podawanie wszystkich oryginalnych danych wejściowych. W ten sposób z pomocą PCA dokonuje się "rzutowanie" wszystkich, charakteryzujących się wysokim wymiarem przestrzeni danych pierwotnych do przestrzeni o wygodnie małym rozmiarze, przy czym odbywa się to w sposób
gwarantujący zachowanie w "skompresowanej" przestrzeni wszystkich ważnych informacji na temat badanych struktur danych.
W przypadku szerokiego stosowania PCA pewnym ograniczeniem może być liniowy charakter tej techniki, który może w niektórych przypadkach powodować utratę ważnych informacji na temat struktury danych (dane w trakcie opisanego wyżej "rzutowania" mogą się wzajemnie "przesłaniać"). Żeby uniknąć tej niedogodności ST Neural Networks może również realizować pewien rodzaj "nieliniowej PCA", stosując w tym celu sieć autoasocjacyjną (Bishop, 1995; Fausett, 1994; Bouland and Kamp, 1988). Jest to sieć, która jest uczona w taki sposób, aby dokonywała maksymalnie wiernej reprodukcji wartości wejściowych na swoich wyjściach. Na pozór takie działanie nie ma sensu - skoro mamy pewne dane na wejściu, to po co budować sieć i uczyć ją, żeby odtworzyła na swoim wyjściu dokładnie takie same dane ?! Jednak działanie takie zdecydowanie ma sens, ponieważ rozważana sieć autoasocjacyjną posiada w warstwie środkowej (ukrytej) zdecydowanie mniejszą liczbę neuronów niż w warstwie wejściowej czy wyjściowej. Przez to "ucho igielne" muszą przecisnąć się dane przesyłane z wejścia na wyjście. Dlatego też, w celu realizacji stawianego jej zadania reprodukcji informacji wejściowej na wyjściu sieć musi się najpierw nauczyć reprezentacji obszernych danych wejściowych przy pomocy mniejszej liczby sygnałów produkowanych przez neurony warstwy ukrytej, a potem musi opanować umiejętność rekonstrukcji pełnych danych wejściowych z tej "skompresowanej" informacji (ten proces musi zachodzić przy przesyłaniu informacji od warstwy ukrytej do warstwy wyjściowej). Ponieważ w sieci autoasocjacyjnej nie ma żadnych bezpośrednich połączeń między warstwą wejściową a wyjściową - jedynym sposobem wiernego odtworzenia sygnałów wejściowych na wyjściu jest właśnie znalezienie sposobu kompresji sygnału między warstwą wejściową a ukrytą i sposobu rekonstrukcji sygnału między warstwą ukrytą a warstwą wyjściową. Oznacza to, że sieć
StatSoft
Wprowadzenie - 70
Copyright StatSoft, 2001 Copyright for the Polish edition StatSoft Polska, 2001
SIECI NEURONOWE
autoasocjacyjna w trakcie uczenia zdobywa umiejętność redukcji wymiaru wejściowych danych. Obrazowo można powiedzieć, że sieć ta "ściska" przypadki wejściowe za pomocą wyuczonego sposobu reprezentacji do postaci pojawiającej się. w warstwie środkowej, a nastejmie dokonuje ponownego przekształcenia wersji "ściśniętej" do postaci pierwotnej. Po zakończeniu uczenia część sieci od strony wyjść może zostać usunięta, tak aby pozostała część realizowała potrzebną (nieliniową!) redukcję wymiaru danych wejściowych. Tak spreparowane dane mogą trafiać na wejścia sieci modelującej interesującą zależność, gwarantując wszystkie jej wyżej dyskutowane zalety, związane z możliwością poruszania się w zbiorze danych
0 mniejszej wymiarowości.
Opisany wyżej "ideowy model" sieci autoasocjacyjnej z jedną warstwą ukrytą służył do poglądowego przedstawienia, co właściwie sieć taka robi - i w jaki sposób. Zwykle zadanie r nieliniowej kompresji danych wejściowych (i nieliniowej ich dekompresji na wyjściu) jest zadaniem zbyt złożonym, by mogło być ono wykonane z użyciem sieci o jednej warstwie ukrytej. Z tego powodu sieć autoasocjacyjna jest najczęściej siecią MLP posiadającą trzy warstwy ukryte, z których środkowa wyznacza reprezentację o zredukowanym wymiarze. Dwie pozostałe warstwy ukryte są potrzebne do przeprowadzenia przez sieć dwóch skomplikowanych transformacji nieliniowych: transformacji wejść do postaci skompresowanej, dostępnej w środkowej warstwie ukrytej, oraz odpowiednio transformacji danych pojawiających się w środkowej warstwie ukrytej do postaci wyjściowej. Sieć autoasocjacyjna posiadająca tylko jedną warstwę ukrytą może realizować wyłącznie liniową redukcję wymiaru i w rzeczywistości uczy się aproksymacji standardowej PCA

Zakończenie

Zapraszamy do korzystania z programu STATISTICA Neural Networks, pakietu służącego do symulacji sztucznych sieci neuronowych. Pakiet ten charakteryzuje się potężnymi możliwościami obliczeniowymi i przyjaznym dla użytkownika sposobem eksploatacji.
Sieci neuronowe są nowym narzędziem informatycznym umożliwiającym konstrukcję modeli nieliniowych rozwiązujących złożone i trudne do identyfikacji zadania klasyfikacyjne i regresyjne. Użycie sieci neuronowych w analizie złożonych danych jest szczególnie korzystne, ponieważ prowadzi do konstrukcji modeli opartych na właściwościach samych danych, a nie na arbitralnych hipotezach tworzącego model badacza. ST Neural Networks umożliwia korzystanie z takich typów sieci neuronowych, które stanowią obecnie najnowocześniejsze narzędzie do rozwiązywania rzeczywistych problemów. W programie dostępne są aktualnie najlepsze algorytmy służące do szybkiego uczenia sieci, automatycznego projektowania jej struktury oraz wyboru najlepszych zestawów zmiennych wejściowych.
Zainteresowanie tematyką sieci neuronowych rośnie w ostatnich latach w sposób bardzo dynamiczny. Sieci są z powodzeniem stosowane w bardzo zróżnicowanych dziedzinach: w biznesie, w medycynie, w zastosowaniach technicznych, w geologii czy w fizyce. W rzeczywistości stosowane mogą być wszędzie tam, gdzie występują zadania polegające na prognozowaniu, klasyfikacji czy też sterowaniu.
Sieci neuronowe mogą być praktycznie wykorzystywane wszędzie tam, gdzie istnieje zależność pomiędzy zmiennymi objaśniającymi (wejścia) i zmiennymi objaśnianymi (wyjścia). Są one jednak szczególnie przydatne do poszukiwania takiej zależności między wejściem i wyjściem, która jest bardzo złożona i dlatego jest trudna do wyrażenia przy pomocy zwykle używanych w takich sytuacjach pojęć statystycznych, typu
Wprowadzenie - 71 Copyright StatSoft, 2001 Copyright for the Polish edition StatSoft Polska, 2001
StatSoft
SIECI NEURONOWE
"korelacja" lub "różnice pomiędzy grupami". Do reprezentatywnych przykładów problemów rozwiązanych z powodzeniem za pomocą sieci neuronowych należą:
Monitorowanie i rozpoznawanie zjawisk medycznych. W klinikach istnieje możliwość precyzyjnego mierzenia wielu różnorodnych wskaźników medycznych (na przykład kombinacji częstości pracy serca, poziomu różnych substancji we krwi, tempa oddychania itp.). Można także wykazać, że istnieją powiązania różnych stanów organizmu (wskazujących na różny stan zdrowia lub będących znamionami początkowych okresów choroby) z wartościami mierzonych wskaźników, co jest podstawą wszelkiego monitoringu szpitalnego i każdej formy diagnostyki medycznej. Jednak związki, o których mowa, dane są zwykle bardzo złożoną kombinacją zmian (o charakterze liniowym bądź nieliniowym) wartości monitorowanych wskaźników, zachodzących w następstwie interesujących nas zmian stanu zdrowia. Sieci neuronowe są w związku z tym wykorzystywane do permanentnego monitorowania mierzonych parametrów i do rozpoznawania sygnałów zapowiadających nadejście zmian stanu zdrowia, co umożliwia podjęcie odpowiedniego sposobu leczenia.
Prognozowanie giełdowe. Zmiany cen akcji i wartości indeksów giełdowych są kolejnym szeroko znanym przykładem zjawisk podlegających klasyfikacji i rozpoznawaniu. Zjawiska te charakteryzują się z jednej strony złożonością i wielowymiarowością, zaś z drugiej występowaniem, w niektórych okolicznościach, składowych mających przynajmniej częściowo charakter deterministyczny. Wielu analityków stosujących analizę techniczną wykorzystuje w związku z tym sieci neuronowe do wyznaczania prognoz cen akcji na podstawie dużej liczby czynników, takich jak kształtowanie się w przeszłości cen innych akcji i różnych wskaźników ekonomicznych.
Udzielanie kredytów. Na temat osób starających się o pożyczkę gromadzone są różnorodne informacje, na przykład: wiek,
wykształcenie, miejsce pracy i wiele innych faktów. Przy pomocy sieci wytrenowanej na danych historycznych można dokonać identyfikacji najistotniejszych cech kredytobiorcy i w oparciu o nie zaliczać osoby starające się
0 kredyt do grup o małym lub dużym ryzyku kredytowym.
Monitorowanie sprawności urządzeń. Sieci neuronowe mogą dostarczać informacji przydatnych przy tworzeniu właściwego harmonogramu realizowania przeglądów
1 konserwacji urządzeń. Prawidłowe określenie terminów przeglądów ma na celu zapewnienie sprawności technicznej urządzeń (aby zapobiec nieoczekiwanym awariom) i redukcję kosztów (wykonywanie przeglądów tak rzadko, jak to tylko możliwe). W tym celu sieć neuronowa jest trenowana w taki sposób, aby potrafiła odróżniać sygnały (na przykład dźwięki) wysyłane przez sprawne urządzenie (generujące niekiedy "fałszywe alarmy") od dźwięków wydawanych przez urządzenie działające na granicy poprawności. Po okresie uczenia opinie generowane przez sieć mogą ostrzegać personel techniczny o nadchodzącej awarii przed jej pojawieniem się, co zapobiega nieprzewidzianym, kosztownym przerwom w funkcjonowaniu.
Sterowanie pracą silnika. Sieci neuronowe mogą być zastosowane do analizy danych dostarczanych przez czujniki umieszczone w silniku. Właściwie wytrenowana sieć, sterując wartościami parametrów wpływających na sposób pracy silnika, przyczynia się do zmniejszenia zużycia paliwa.
Wyniki uzyskane przy pomocy sieci neuronowych mogą być wykorzystywane samodzielnie lub też mogą stanowić uzupełnienie rezultatów uzyskanych przy pomocy innych technik - na przykład klasycznych metod statystycznych. Proces budowy modeli przy pomocy większości klasycznych metod analizy statystycznej opiera się na wielu założeniach i rozważaniach teoretycznych (dotyczących na przykład liniowego charakteru istniejących zależności lub normalnego rozkładu zmiennej w populacji). Podejście oparte na
StatSoft
Wprowadzenie - 72
Copyright StatSoft, 2001 Copyright for the Polish edition StatSoft Polska, 2001
SIECI NEURONOWE
wykorzystaniu sieci neuronowych nie wymaga takich założeń, może być stosowane zarówno wówczas, gdy badane zależności mają charakter liniowy, jak i wtedy, gdy mają one charakter nieliniowy. Podejście neuronowe sprawdza się. w analizie eksploracyjnej, której celem jest ustalenie, czy pomiędzy rozważanymi zestawami zmiennych występują dowolnego rodzaju związki - czy też nie. Główną zaletą STNeural Networks jest możliwość bezpośredniego korzystania zarówno z technik neuronowych, jak i z bogatego zestawu klasycznych metod analizy statystycznej oraz technik wizualizacji danych zawartych w programach z rodziny STATISTICA. Z drugiej strony zastosowany w STNeural Networks wyjątkowy i potężny genetyczny algorytm doboru zmiennych wspomaga proces identyfikacji optymalnego zestawu zmiennych wejściowych, umożliwiając użytkownikowi dokonanie wyboru istotnych zmiennych i przeprowadzenie dalszej analizy za pomocą metod klasycznych lub neuronowych.
Zapraszamy do korzystania z programu STATISTICA Neural Networks PL. Szczegółowych informacji na temat tego, a także innych programów z rodziny STATISTICA udziela biuro StatSoft Polska: www.statsoft.pl, info@statsoft.pl, tel. (012) 4284300, (0601) 414151, faks (012) 4284301.
#73
#74
$INDEKS

Akceptacja, 54 Aktywacji funkcja, 6 Algorytm genetyczny wyboru
zmiennych, 69
Atrybuty, patrz Nominalne wartości Autoasocjacjne sieci, 70
PCA,70
Perceptron wielowarstwowy, 19
PNN, patrz Probabilistyczne sieci
neuronowe Postprocessing, 16 Postsynaptycznego potencjału
funkcja, 6 Preprocessing, 16 Probabilistyczne sieci neuronowe,
43
Przypadki, 15 PSP, funkcja, 6
Dwustanowa reprezentacja, 53
F
Feedforward, 8 Funkcja aktywacji, 6 Funkcja PSP, 6
Radialne funkcje bazowe, 39 Redukcja liczby wymiarów, 66 Regresja, 18,57,71 Regresja uogólniona, 46
Generalizacja, 23
Gradientów sprzężonych metoda, 33
GRNN, patrz Regresja uogólniona
J
Jeden z N, 53
Skalowanie, 17 STATISTICA, 73 Szeregi czasowe, 63
W
Waga, 6 Wejście, 71
Wsteczna propagacja, 22 Wyjście, 71 Wymiarowość, 66
Klasyfikacja, 18, 30, 52, 71 Kohonena sieci, 48 Kołmogorowa twierdzenie, 31
Levenberga-Marquardta metoda, 33 Liniowe sieci, 47
Neuron, 6
Nominalne wartości, 14, 17, 52
O
Odrzucenie, 54
Zbiór danych, 13 Zmienne, 14,66
definicja, patrz Nominalne wartości
Wprowadzenie - 75 Copyright StatSoft, 2001 Copyright for the Polish edition StatSoft Polska, 2001
StatSoft
INDEKS
StatSoft
Wprowadzenie - 76
Copyright StatSoft, 2001 Copyright for the Polish edition StatSoft Polska, 2001
NOTATKI
Wprowadzenie - 77 Copyright StatSoft, 2001 Copyright for the Polish edition StatSoft Polska, 2001
StatSoft
NOTATKI
StatSoft
Wprowadzenie - 78
Copyright StatSoft, 2001 Copyright for the Polish edition StatSoft Polska, 2001
POLSKA WERSJA
STATISTICA
StatSoft Polska, tel. (601) 414151 tel. (12) 4284300, faks (12) 4284301, info@statsoft.pl, www.statsoft.pl

StatSoft
ZINTEGROWANE
SYSTEMY ANALIZY DANYCH
STAT/ST/CA -
NARZĘDZIA
ANALITYCZNE
STAT/ST/CA d/a JAKOŚĆ/
IMPLEMENTACJE WDROŻENIA
KURSY SZKOLENIA
KONSULTING,
ANALIZA DANYCH
NA ZLECENIE

StatSoft Polska
StatSoft Polska, tel. (601) 414151 tel. (12) 4284300, faks (12) 4284301, info@statsoft.pl, www.statsoft.pl

Wyszukiwarka

Podobne podstrony:
KW SK Wprowadzenie do sieci komputerowych
Wykład 01 Wprowadzenie do sieci telekomunikacyjnych
KW LAN Wprowadzenie do sieci LAN
M01 Wprowadzenie do sieci
Wprowadzenie do praktyki stosowania sieci neuronowych
Analiza porównawcza zastosowania sieci neuronowych do klasyfikacji obiektów
Zastosowanie sztucznych sieci neuronowych do szacowania spadków napiecia w sieciach n
WYKŁAD 1 Wprowadzenie do biotechnologii farmaceutycznej
Medycyna manualna Wprowadzenie do teorii, rozpoznawanie i leczenie
01 Wprowadzenie do programowania w jezyku C

więcej podobnych podstron