© Copyright StatSoft, Inc., 1984-2024
Przeszukaj Internetowy Podręcznik Statystyki
Sieci neuronowe


Wiele pojęć z metodologii sieci neuronowych lepiej można wytłumaczyć, jeśli są one zilustrowane przykładami zastosowania konkretnego programu do sieci neuronowych. Dlatego też ten rozdział zawiera wiele odwołań do pakietu STATISTICA Sieci Neuronowe (w skrócie, ST Sieci Neuronowe). Jest to rozbudowany pakiet analityczny do sieci neuronowych stworzony przez firmę StatSoft.
Wstęp

Zainteresowanie sieciami neuronowymi systematycznie rośnie. Są one z powodzeniem stosowane w bardzo wielu, bardzo różnych dziedzinach jak finanse, medycyna, technika, geologia czy fizyka. Sieci neuronowe mogą być zastosowane wszędzie tam, gdzie pojawiają się zadania związane z predykcją, klasyfikacją czy sterowaniem. Olbrzymi sukces metody sieci neuronowych związany jest z kilkoma czynnikami:

Ciekawa jest również ta własność sieci neuronowych, że naśladują one działanie ludzkiego umysłu. Wprawdzie sieci oparte są na bardzo prostym modelu, przedstawiającym wyłącznie najbardziej podstawową istotę działania biologicznego 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.

Indeks

Zastosowania sieci neuronowych

Sieci neuronowe mogą być stosowane w praktycznie każdej sytuacji, gdzie pomiędzy zmiennymi zależnymi i niezależnymi istnieje rzeczywista zależność lub zespół zależności, nawet jeśli są one bardzo skomplikowane i niewyrażalne w klasyczny sposób, poprzez korelacje czy różnice pomiędzy grupami przypadków. Niżej wymieniono kilka przykładów efektywnego zastosowania sieci neuronowych:

Indeks

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ą (telodendron).

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 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 - przyjrzymy się odrobinkę 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), zaś wpływając 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 Pawłowa, 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 codzień 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 ustalony poziom progowy.

Indeks

Sztuczne sieci

Chcąc odwzorować jedynie podstawową istotę biologicznych systemów nerwowych twórcy sztucznych sieci neuronowych zdecydowali, że sztuczny neuron zostanie zdefiniowany następująco:

Zachowanie neuronu (i całej sieci neuronowej) jest silnie uzależnione od rodzaju użytej funkcji aktywacji . Jeśli zostanie zastosowana progowa funkcji 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 (przy pewnych założeniach upraszczających) można przyjąć, ż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 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 funkcji 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 za pomocą 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 to są 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 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ących 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 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órca 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 bardzo interesującym 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.

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.

[Neural Network Example]

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 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 za pomocą programu komputerowego 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 maja być ze sobą łączone. Jak wiadomo struktura połączeń ma wpływ na działanie sieci, więc jej racjonalny wybór może znacząco 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ć potencjalnie n2 możliwych połączeń i o każdym z nich zadecydować - czy ma ono w budowanej sieci występować, czy nie? Takie "ręczne" 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 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 na komputerze. 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ść znaczących 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 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 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.

Indeks

Używanie sieci neuronowych

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 przy rozwiązywaniu 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), zaś jej wyjścia 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 WIG. 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 wnioskodawcy: 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, zaś 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 z pomocą sieci są znacząco lepsze, niż rozwiązania uzyskiwane z 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ściową 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 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 z 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 znaczący 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ąć znaczący 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.

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ść 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.

Indeks

Zbieranie 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 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 jakich przypadków należy zgromadzić.

Wybierając zmienne (przynajmniej początkowy ich zestaw) kierujemy się intuicją. Posiadana przez nas znajomość specyfiki badanych zagadnień jest podstawą do pewnych wyobrażeń dotyczących wyboru sygnałów oddziaływujących na wyjścia sieci, którym zamierzamy nadać status zmiennych wejściowych. Przy pierwszej próbie tworzenia sieci dla rozwiązania określonego zadania 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 istnieją metody 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 może być 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 Płeć = {Mężczyzna, Kobieta}. Zmienne o wartościach nominalnych mogą być reprezentowane w sposób numeryczny. Jednakże sieci neuronowe nie sprawdzają się zbyt dobrze w trakcie działań na zmiennych nominalnych posiadających znaczną liczbę możliwych wartości.

W charakterze przykładu 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 miasta 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 za pomocą 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.

Określenie rozmiaru zbioru uczącego, czyli właściwej liczby przypadków wymaganych do nauczenia sieci neuronowej, stwarza w ogólnym przypadku 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. 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; zaś bardzo rzadko 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).

Rozwiązywanie wielu rzeczywistych problemów bywa także utrudnione z uwagi na niepełnowartościowość danych tworzących zbiór uczą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ć.

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 stopniu odbiegające od typowych wartości zmiennej, to 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 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

Używamy tych zmiennych, o których sądzimy, że mają wpływ na modelowane zjawisko.

Zmiennych liczbowych i nominalnych używamy bezpośrednio, inne zmienne przekształcamy do jednej z tych postaci lub rezygnujemy z nich.

Liczba niezbędnych przypadków może być rzędu setek lub tysięcy; im więcej zmiennych tym więcej trzeba przypadków.

Jeżeli jest to konieczne, to można użyć niekompletnych przypadków (z "brakami danych" dla niektórych zmiennych). Jednak wartości nietypowe mogą być przyczyną problemów, dlatego należy je raczej usunąć. Jeżeli mamy dużo przypadków, to należy także odrzucić przypadki z brakami w danych.

Jeżeli mamy mało danych, spróbujmy użyć zespołów sieci i próbkowania.

Indeks

Przekształcanie wejściowe i wyjściowe

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.

Poniższy rysunek przedstawia jedną z najczęściej stosowanych funkcji przejścia - tak zwana funkcję 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), zaś 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.

[Neural Network Example]

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 i procesu algorytmicznego przekształcenia i odpowiedniej interpretacji danych wyjściowych otrzymywanych z sieci (Bishop, 1995). W tym miejscu zwrócimy 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. 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 STATISTICA Sieci Neuronowe. Ale przed transferem danych do programu STATISTICA Sieci Neuronowe możemy dokonać skalowania zmiennej korzystając z możliwości programu STATISTICA.

Wartości nominalne. Zmienne nominalne mogą mieć charakter dwustanowy (na przykład: Płeć = {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 = 1, Kot = 2), ale powodować to może 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 - wartość papużki jest pośrednia pomiędzy wartością psa i kota. 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 = {0,1,0}, Kot = {0,0,1}. STATISTICA Sieci Neuronowe posiada mechanizmy przekształcające zarówno dwustanowe jak wielostanowe zmienne nominalne do postaci, w której będą mogły one 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 typu jeden-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 predykcyjne dzielą się na dwie kategorie:

Klasyfikacja. 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.

Regresja. 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.

Sieci neuronowe mogą realizować jednocześnie kilka zagadnień regresyjnych lub klasyfikacyjnych , przeważnie jednak sieci realizują tylko jedno zadanie. Dlatego też w większości przypadków sieć ma pojedynczą zmienną wyjściową, chociaż w przypadku wielostanowych problemów klasyfikacyjnych, zmiennej tej może odpowiadać kilka neuronów wyjściowych (wartości uzyskane na wyjściach tych neuronów przekształcane są w wartości odpowiedniej pojedynczej zmiennej wyjściowej - najczęściej typu nominalnego).

Indeks

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. Koncepcja ta została po raz pierwszy opisana przez Rumelharta oraz McClellanda (1986), a jej dokładne omówienia znajdują się 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 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ściwych liczebności liczby warstw i liczby neuronów w warstwach zostanie dodatkowo omówiony dalej, 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. 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 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.

W tradycyjnym podejściu do modelowania matematycznego różnych złożonych systemów (np. w modelowaniu liniowym ) 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 z 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 za pomocą 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" to 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 nie zadowalające.

Sieci neuronowe wnoszą w modelowaniu nową jakość. Sieć w trakcie procesu uczenia może całkiem sama 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ą 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 zaś wartość błędu, 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 poszukiwaniu 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ącym przypadku) może być minimum globalnym.

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) (obie dostępne w programie STATISTICA Sieci Neuronowe) 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 - przede wszystkim jest bezspornie najprostszym algorytmem do zrozumienia. Obecnie zostanie bliżej scharakteryzowany algorytm BP, zaś opis metod bardziej zaawansowanych zamieszczony jest dalej. Warto może dodać, że istnieją również pewne wypracowane na drodze empirycznej (heurystyczne) 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). Algorytmy te są również dostępne w programie STATISTICA Sieci Neuronowe.

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 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 zwanego momentum (bezwładność). Znaczenie członu momentum 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.

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 miedzy 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 (to my dokonujemy wyboru odpowiedniego warunku zatrzymania algorytmu uczenia).

Przeuczenie a generalizacja

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 (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=3x2+4x+1

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.

[Neural Network Example]

Opisany wyżej 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 proste zależności liniowe.

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żnych 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 to, ż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ść. 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 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 się nie pojawi, 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.

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 za pomocą 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, to powinien być użyty tylko jeden raz - jeśli zostanie on ponownie użyty do uregulowania i ponownego przeprowadzenia procesu uczenia, to zacznie on spełniać faktycznie funkcję zbioru walidacyjnego i utracimy możliwość niezależnej weryfikacji uczenia.

Podział zbioru danych na podzbiory jest niezbyt mile widziany w typowym przypadku posiadania raczej małej liczby przypadków. Problem ten można obejść przez próbkowanie. Można, mianowicie eksperymentować z różnymi podziałami posiadanego zbioru danych na podzbiory: uczący, walidacyjny i testowy. Możemy realizować takie próby na wiele sposobów: próbkując przypadki losowo (Monte-Carlo), poprzez sprawdzian krzyżowy i metodą bootstrap. Jeżeli podstawą naszych decyzji co do architektury sieci są wielokrotne próby wykonane dla różnych podziałów zbioru danych, to otrzymane, końcowe wyniki będą bardziej godne zaufania. Możemy przy tym, albo wykorzystać te eksperymenty do wybrania typów sieci by następnie sieci takie uczyć od nowa, z nowym podziałem danych (zapewniając sobie niezależność od podziału); albo możemy pozostać przy najlepszych sieciach, znalezionych podczas próbkowania, lecz uśredniając wyniki w zespole sieci (co najmniej osłabiając wpływ podziału danych na próbki).

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 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. 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 trudność opisywanego problemu uzasadnia, że warto dokładniej scharakteryzować tu różne typy problemów mogące negatywnie wpływać na zbiór uczący:

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.

Wszystkie 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, zaś w danych uczących 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. Ekstrapolowanie zawsze jest niebezpieczne, ale sieć neuronowa może w takiej sytuacji zachować się wyjątkowo niedobrze.

Sieć neuronowa 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 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.).

Brak równowagi w zbiorze danych może powodować kłopoty. 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 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ły zdrowe. W takich okolicznościach może zajść konieczność dodatkowej obróbki zbioru danych, w trakcie której uwzględniona zostanie kwesta 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 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 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". 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. Strome zbocza "urwiska" sigmoidalnego odpowiadają dużym wartościom wag. Na przykład, w wyniku podwojenia wartości wszystkich wag uzyskuje się taka samą orientację tego "urwiska" - ale inne (bardziej strome) jego nachylenie. Na poniż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.

[Neural Network Example]

Sieć wielowarstwowa działa (w uproszczeniu) w taki sposób, że łączy razem pewną liczbę powierzchni odpowiedzi sieci poprzez wielokrotne zastosowanie kombinacji liniowej sygnałów wyjściowych i nieliniowej funkcji aktywacji . Poniż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. 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".

[Neural Network Example]

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 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łowej 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.

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, to 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, zaś po drugiej stronie znajduje się obszar położony wysoko.

Urwisko sigmoidalne może być utożsamiane 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 posiadają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 istnieje 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), 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 służącej do rozwiązania problemu XOR: widać, że przestrzeń podzielona jest wyraźnie w kierunku wyznaczonym przez przekątną.

[Neural Network Example]

Sieć posiadająca dwie warstwy ukryte ma znacząco 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 obszarów 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, zaś liczba boków każdego plateau odpowiada liczbie neuronów w pierwszej warstwie ukrytej.

Konsekwencją tych rozważań jest stwierdzenie, że MLP 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ść 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. 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 momentum 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 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. Te techniki obejmują: 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 oraz metod opartych na przyjętym modelu obszaru.

Algorytm poszukiwania wzdłuż prostej działa zgodnie z następującą regułą: obierany jest pewien sensowny 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. 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. Obliczenia rozpoczyna się od pewnego punktu startowego i w tym punkcie wyznacza się kierunek zgodny z gradientem funkcji. Następnie wzdłuż tak wyznaczonego kierunku przeprowadza się proces poszukiwania minimum funkcji błędu. Przyjmijmy, że wzdłuż rozpatrywanego kierunku funkcja błędu przyjmuje najmniejszą wartość dla pewnego wektora wag w1. Po wyznaczeniu punktu w1 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 w1 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 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 back propagation , że jest ona zbieżna do lepszego (dokładniej osiąganego) minimum.

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. 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 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. 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, którego wartość modyfikowana jest w trakcie uczenia. Jeśli zbliża się on do zera, to wektor wag uzyskany za pomocą metody Levenberga-Marquardta będzie bardzo zbliżony do wartości wyznaczonych przy zastosowaniu formuły Newtona. Zwiększaniu wartości współczynnika towarzyszy wzrost znaczenia kierunku poprawy wyznaczonego w oparciu o gradient funkcji błędu. Warto zauważyć, że nie tylko spełnia on 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ść współczynnika, to tym mniejszy krok.

W typowych przypadkach algorytm Levenberga-Marquardta jest najszybszym algorytmem uczenia sieci jednokierunkowych. Niestety 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ń i 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. Ponadto jego wymagania w zakresie pamięci są proporcjonalne do W2 (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ń.

Klasyczna metoda uczenia z wykorzystaniem wstecznej propagacji błędów nadal jest bardzo użyteczna, 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. 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, to wówczas 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.

Modyfikacjami metody wstecznej propagacji błędów jest algorytm szybkiej propagacji (Fahlman, 1988) oraz metoda 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 znaczący 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.

Indeks

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 i Lowe, 1988; Moody i 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 może być zmieniana, tak również można zmienić nachylenie funkcji gaussowskiej neuronu radialnego (porównaj poniższy rysunek).

[Neural Network Example]

Neuron MLP (perceptronu wielowarstwowego) 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ę. W przeciwieństwie do tej sytuacji neuron radialny jest zdefiniowany przez swoje centrum oraz parametr określany jako "promień". Punkt w przestrzeni N-wymiarowej jest definiowany przy użyciu N liczb, co dokładnie odpowiada liczbie wag w neuronie liniowym. 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 nazwy stosowane są te same, co w neuronach perceptronów wielowarstwowych.

Sieć o radialnych funkcjach bazowych (RBF - Radial Basis Function) 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 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ć o 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).

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 za pomocą 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 . Ale z drugiej strony trzeba przypomnieć, że sieci RBF wymagają krótszego uczenia, co czasami może być istotniejszym 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.

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 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:

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 przykrywały się wzajemnie zbyt silnie. Dostępne są różne metody ustalania tego parametru, które są 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 (przypadków ze zbioru danych). 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 i Kahan, 1965).

Sieci RBF stosowanych do klasyfikacji dotyczą te same problemy co perceptronów wielowarstwowych - wyjście sieci to raczej odległość od płaszczyzny decyzyjnej niż probabilistyczny poziom ufności. Jednak można sieć RBF zmodyfikować dodając warstwę wyjściową z normalizującą funkcją logistyczną lub softmax, by wyjście można było interpretować jako prawdopodobieństwo. Tracimy wtedy zaletę szybkiej, liniowej optymalizacji warstwy wyjściowej, jednak powierzchnia błędu nieliniowej warstwy wyjściowej całkiem dobrze nadaje się do optymalizowania szybkim, iteracyjnym algorytmem gradientów sprzężonych.

Sieć o radialnych funkcjach bazowych (RBF) może być na różne sposoby hybrydyzowana. Ukryta warstwa radialnych funkcji bazowych może być na przykład uczona algorytmem Kohonena i LVQ, co jest alternatywą do przypisywania centrów odzwierciedlającego rozkład danych. Warstwa wyjściowa (liniowa lub nie) może być uczona którymkolwiek z iteracyjnych algorytmów dla warstw z iloczynem skalarnym.

Indeks

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ę (Parzen, 1962). Rozważania na ten temat najczęściej prowadzone są na gruncie statystyki bayesowskiej. Statystyka konwencjonalna może, mając znany model, zazwyczaj 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 symetrycznej 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 a posteriori (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ą aproksymacji funkcji gęstości prawdopodobieństwa (jest to z reguły najtrudniejsza część zadania), resztę procesu rozpoznawania może realizować prosty system przekształcania 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.

Alternatywne podejście do estymacji funkcji gęstości prawdopodobieństwa jest oparte na tak zwanej aproksymacji jądrowej (Parzen, 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 charakteryzuje 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ą o rozwiązywaniu problemów klasyfikacyjnych , zaś sieci GRNN służą do rozwiązywania problemów regresyjnych . Oba te 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, i 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, 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ń, 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, wykonuje się procedurę "ważenia" surowych prawdopodobieństw wyznaczonych przez sieć poprzez zastosowanie "czynników straty", które odzwierciedlają koszty błędnej klasyfikacji. W sieci PNN można w tym celu zdefiniować formalnie dodatkową, czwartą warstwę sieci, która zawiera macierz strat zadawanych przez użytkownika, 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. (Macierz strat może być również dołączona do innych typów sieci klasyfikujących ).

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, 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 znaczącym 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 oraz 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.

Indeks

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 jak 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 ""zwon" 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ść pewną 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.

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 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 swojego odpowiednika, 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 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 sieci Kohonena).

Sieć GRNN posiada zalety i wady w większości podobne do odpowiednich cech sieci PNN - jedyna znacząca 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 problems. 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). Podobnie jak sieć RBF, sieć GRNN nie posiada zdolności do ekstrapolacji danych.

Indeks

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ę znacząco lepiej do posiadanych danych. Stosując terminy charakterystyczne dla aproksymacji funkcji, można stwierdzić, że najprostszym modelem aproksymującym matematycznie pewną zaobserwowaną praktyczną zależność jest model liniowy . W problemach klasyfikacyjnych 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. Model liniowy jest zwykle reprezentowany przy użyciu macierzy współczynników kierunkowych o wymiarach NxN i wektora wyrazów wolnych o wymiarach Nx1.

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 - wektorowi wyrazów wolnych. W trakcie działania sieci wykonywana jest operacja mnożenia wejść przez macierz wag, a następnie do uzyskanego wyniku dodawany jest wektor wyrazów wolnych, co łącznie tworzy wektor sygnałów wyjściowych.

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.

Indeks

Samoorganizujące się mapy cech (sieci Kohonena)

Samoorganizujące się mapy cech (zwane też od ich twórcy sieciami Kohonena) stosowane są całkowicie odmiennie niż wszystkie inne sieci. Podczas gdy wszystkie inne sieci uczone są w trybie "z nauczycielem" , to sieć Kohonena uczona jest "bez nauczyciela" (Kohonen, 1982; Haykin, 1994; Patterson, 1996; Fausett, 1994).

Różnica polega na czym, że 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 obejmujące same tylko zmienne wejściowe.

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ę kojarzyć razem podobne klasy danych. 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 oznaczać będzie sygnał ostrzegawczy, ż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 zwana jest również jako warstwa tworząca mapę topologiczną . 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 w wyobrażamy je sobie jako węzły dwuwymiarowej siatki o kwadratowych oczkach, chociaż program STATISTICA Sieci Neuronowe umożliwia również tworzenie jednowymiarowych sieci Kohonena w postaci długich łańcuchów.

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 z metodami powtórnego próbkowania i z metodą 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 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.

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 . 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ść, tak aby zachować oryginalną strukturę danych. Jest jednak rzeczą oczywistą, że próba reprezentacji N-wymiarowej przestrzeni wejściowych sygnałów w dwóch wymiarach definiujących topologię sieci spowoduje nieuchronna utratę pewnych szczegółów; jednakże użyteczność techniki sieci Kohonena przejawia się tym, że pozwala ona wizualizować dane, których zrozumienie w inny sposób mogłoby być trudne, albo wręcz niemożliwe.

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:

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 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 rozumieć 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 jej 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. Częstość zwycięstw (ukazująca jaką liczbę razy każdy z neuronów zwyciężył podczas prezentacji danych uczących) może służyć do sprawdzenia, czy na mapie Kohonena uformowane zostały już wystarczająco wyraźne skupienia.

Sieci Kohonena w trakcie realizacji klasyfikacji wejściowych danych korzystają 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 sieć 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 znaną, 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.

Indeks

Klasyfikacja

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. 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.

Zmienne nominalne są zwykle reprezentowane w sieciach za pomocą jednej z dwóch technik: techniki dwustanowej i techniki 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. 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ą 1, pojawiającą się na odpowiadającym temu stanowi neuronie, podczas gdy wartości na wszystkich pozostałych neuronach wynoszą 0.

Opisane powyżej metody umożliwiają przekształcenie wejściowych i wyjściowych sygnałów sieci do/z postaci zmiennych nominalnych. Opisane metod kodowania muszą być stosowane konsekwentnie, zarówno w trakcie uczenia jak i w trakcie eksploatacji (roboczego działania sieci). Jednakże w trakcie eksploatacji sieci określenie klasy wyjściowej wyznaczonej przez sieć wymaga na ogół więcej wysiłku.

Każdy z neuronów wyjściowych może generować ciągłe wartości z przedziału od 0,0 do 1,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 wykorzystamy wartości progowe, czyli tak zwane poziomy 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 1,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 są poniżej poziomu odrzucenia. Jeśli podany warunek 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 bardzie 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 pokazywanych jej danych. 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:

Zauważmy, ze przy poziomie akceptacji równym 0,0, neuron zwycięski na pewno zostanie zaakceptowany, a przy poziomie odrzucenia równym 1,0 żaden z innych neuronów nie będzie mieć wartości wyższej od poziomu odrzucenia. 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.

Chociaż korzystanie z opisanej wyżej konwencji ustalania numeru (identyfikatora) rozpoznawanej klasy bezspornie wymaga pewnego przyzwyczajenia, to jednak pozwala ono na definiowanie 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 grupujących. Natomiast sieci Kohonena (samoorganizujące się mapy cech) pracują zupełnie inaczej.

W sieci Kohonena, przy rozpoznawaniu posługujemy się neuronem zwycięskim znajdującym się 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. 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 neurony zwycięskiego niż określa to ustalona parametrem poziom akceptacji maksymalna dopuszczalna odległość to przypadek taki nie jest klasyfikowany (sieć odpowiada "nie wiem"). Drugi z parametrów dyskutowanych przy sieciach klasyfikujących, a mianowicie poziom odrzucenia nie jest wcale wykorzystywany w sieci Kohonena.

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. Jednakże w pewnych okolicznościach bardziej dogodne może być użycie innego zakresu sygnałów wyjściowych. Również czasami 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ę.

Po pierwsze, zakres używanych wartości 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 1,0, dla której zakres wartości wynosi od -1,0 do +1,0. Przy użyciu tej funkcji rezultaty uczenia mogą być znacząco ulepszone ponieważ, funkcja bipolarna (w przeciwieństwie do unipolarnej funkcji logistycznej ) jest symetryczna względem zera, co powoduje, że wartość sygnału podawanego do dalszych elementów sieci rzadko przyjmuje wartość zero.

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 przy czym 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 Błą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 postaci statystyk klasyfikacyjnych. Przedstawiana tam informacja określa, ile przypadków zostało zaklasyfikowanych poprawnie, ile niepoprawnie, a ile nie zostało sklasyfikowanych wcale (odpowiedzi sieci typu "nie wiem"). 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.

Indeks

Regresja

W zagadnieniach regresyjnych celem jest oszacowanie wartości ciągłej zmiennej wyjściowej, w sytuacji gdy znane są wartości zmiennych wejściowych. Problemy regresyjne mogą być rozwiązywane przy użyciu następujących typów sieci MLP , RBF , GRNN i sieci liniowych. Problemy regresyjne reprezentowane są w 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 .

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 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. Nie jest to sprawa prosta, zaś pewne jej konsekwencje są bardzo subtelne.

Zagadnienie to omawiane jest poniżej.

W pierwszej kolejności stosujemy algorytm skalowania zapewniający, że wartości wyjściowe sieci będą w "rozsądnym" przedziale. Najprostszą taką funkcją skalującą 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ę korzystną, 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 .

[Neural Network Example]

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 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.

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 następujących dwóch 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 ciągu korzysta się z logistycznych lub hiperbolicznych funkcji aktywacji. Ponieważ liniowa funkcja aktywacji nie ma poziomu nasycenia, dlatego 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 spowodują 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 "trick". 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 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. To podejście ma bardzo intuicyjną interpretację: 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. 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 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 polecane, 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 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ąć wygodniejsze dla użytkownika zachowanie sieci RBF należy przy rozwiązywaniu problemów regresyjnych z wykorzystaniem sieci radialnych skorzystać z funkcji skalowania nazywanej średnia - odchylenie standardowe. Dane uczące 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.

Jakość działania sieci regresyjnej może być sprawdzana na kilka sposobów.

  1. 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, 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 realizuje sieć stawiane jej zadania.

  2. 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. 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. 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.

    Podsumowania regresji zawierają także współczynnik korelacji R Pearsona, między obserwowanymi wartościami a wartościami wyznaczanymi przez sieć. W modelowaniu liniowym, współczynnik ten często wykorzystywany jest do sprawdzenia, czy model liniowy jest dopasowany (identyfikacja korelacji pomiędzy wartościami teoretycznymi modelu a wartościami empirycznymi). Jest to wygodny sposób porównania trafności prognostycznej sieci neuronowych z trafnością modelu liniowego.

  3. Możemy wygenerować obraz powierzchni odpowiedzi sieci. Rzeczywista powierzchnia odpowiedzi sieci jest oczywiście rozpostarta w przestrzeni N+1 wymiarowej, gdzie N jest liczbą neuronów wejściowych, zaś ostatni 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).
Indeks

Prognozowanie szeregów czasowych w STATISTICA Sieci Neuronowe

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 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 możliwe jest również prognozowanie szeregów czasowych w postaci ewoluujących w czasie zmiennych nominalnych.

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. 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.

Do prognozowania szeregów czasowych może zostać użyty dowolny typ sieci. 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. 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. 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. 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, zgodnie z tym co zostało już powiedziane, zwykle 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 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ę. 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 Liczba wartości opóźnionych oraz Horyzont prognozy ) obserwacji rozważanego sygnału (wartości rozważanej zmiennej) poprzedzających pewien moment wyróżniony czasu w przeszłości - oraz z obserwacji następującej po tym momencie. 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. Na 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 Liczba wartości opóźnionych = 2 a parametr Horyzont prognozy = 1. 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 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. 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.

W konsekwencji pierwszych kilka przypadków rozważanego szeregu czasowego może wyłącznie służyć 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. Ponadto 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.

Indeks

Dobór zmiennych i redukcja liczby wymiarów

Najpopularniejszym sposobem redukcji wymiaru przestrzeni sygnałów wejściowych jest analiza głównych składowych (Bishop, 1995). 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ą. 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 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. 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 (np. poprzez wyzerowanie wag wychodzących od wybranego wejścia sieć MLP może całkowicie zignorować daną zmienną wejściową). Niemniej problem wymiaru wejściowych danych dla sieci neuronowych nadal 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, a więc 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 mogą razem dostarczać istotnych informacji, podczas gdy każdy podzbiór takiego zestawu zmiennych informacji takich 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, 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 z 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). Przewaga stosowania podzbioru skorelowanych zmiennych zamiast korzystania z pełnego ich zbioru jest oczywistą konsekwencją dyskutowanego wyżej problemu wymiaru wejściowego wektora danych.

Powyższe uwagi wskazują, że wybór zmiennych wejściowych jest krytycznym elementem projektowania sieci neuronowej . Przy wyborze zmiennych wejściowych możemy 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. Program STATISTICA Sieci Neuronowe udostępnia użytkownikowi sporo narzędzi, za pomocą których można przetestować różne kombinacje zmiennych wejściowych. Program ten 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 wyniki uczenia spowoduje, że błędna czy zbędna informacja będzie w trakcie pracy sieci ignorowana i nie dowiemy się, że była ona niepotrzebna. W praktyce takie "izolowanie" niektórych zmiennych wejściowych dosyć często zachodzi (w sposób całkowicie nie zauważ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 (te 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.

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) i istnieje wiele algorytmów eliminacji zmiennych, łącznie z tak zwanym algorytmem genetycznym (Goldberg, 1989). 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 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ę.

Indeks

Zespoły sieci i próbkowanie

Problem przeuczenia sieci był już omawiany. Sieć, która zbyt dokładnie nauczy się "pokazanych jej" danych nie będzie sobie radziła z nowymi danymi, czyli nie potrafi uogólnić, zgeneralizować wiedzy zawartej w danych uczących. Ważnym sposobem ominięcia tego problemu jest tworzenie zespołów sieci neuronowych. Wyjścia sieci składowych są uśrednianie bądź najlepsza wartość wybierana jest wtedy na zasadzie głosowania. Tworzeniu zespołu sieci towarzyszy najczęściej próbkowanie (pobieranie losowych próbek) zbioru danych. Podejście takie poprawia znacznie zdolność generalizującą a także pozwala ocenić stopień generalizacji wiedzy.

Dane, poza tym, że są z natury ograniczone co do liczebności zawierają też pewną dozę szumu, tzn. zmienna wyjściowa nie ma dokładnie takiej wartości jaka wynikałaby z wartości zmiennych wejściowych i hipotetycznego modelu. Tak więc nawet doskonała sieć nie będzie funkcjonowała bezbłędnie. A tym bardziej rzeczywista sieć, uczona na bazie skończonego (zwykle za małego) zbioru danych. Błąd predykcji sieci ma dwa składniki: obciążenie charakterystyczne dla modelu (typu sieci i sposobu jej uczenia) i wariancję związana ze zmiennością (szumem) danych. Porównajmy te dwa źródła błędu. Rozpatrzmy skrajny przypadek modelu, który zupełnie ignoruje dane wejściowe. Otrzymamy wtedy zerową wariancję, gdyż model razem z danymi ignoruje też błędy zwarte w danych. Jednak będziemy wtedy mieli ogromną odchyłkę od właściwej predykcji, jako, że w ogóle nie bierzemy pod uwagę danych. Inną skrajnością jest zbudowanie bardzo złożonego modelu (przeuczonego), który dla każdego przypadku uczącego daje bezbłędną odpowiedź. Mamy tu zerową odchyłkę ale dużą wariancję związaną ze zmianą danych (model jest silnie związany z konkretnym zestawem danych). Pomiędzy tymi skrajnymi przypadkami istniały będą bardziej sensowne rozwiązania charakteryzujące się przewagą odchyłki nad wariancją (proste modele, np. liniowe) lub przewagą wariancji nad odchyłką (skomplikowane modele). Przypomnijmy, że proste modele charakteryzują się małą liczbą neuronów.

Jaki to ma związek z zespołami sieci i z próbkowaniem? Posiadany zbiór danych dzielimy na podzbiory: uczący, walidacyjny i testowy. To pewna strata, nie użyć wszystkich danych do uczenia sieci. Można jednak postąpić tak: dokonać wielu próbkowań, wiele razy dzielić zbiór na podzbiory i uczyć na nich sieci. Wtedy każdy przypadek będzie miał szanse uczyć przynajmniej którąś z sieci. Otrzymany zespół sieci wykorzystywany jest w całości, wszystkie sieci obliczają wynik dla nowego przypadku a końcowy wynik to średnia z wyjść wszystkich sieci. Uśrednianie zmniejsza wariancję, przy tym nie zwiększa odchyłki. Można sobie więc pozwolić na tworzenie nieco bardziej złożonych modeli.

Zespół sieci ma większą zdolność do generalizacji wiedzy niż najlepsza, pojedyncza sieć należąca do zespołu. Wydaje się to intuicyjnie jasne, choć sytuacja zależała będzie od tego o ile gorsze są pozostałe sieci. Niestety nie da się stwierdzić czy zachodzi taki niekorzystny przypadek. Są jednak opracowania teoretyczne wskazujące, że mimo wszystko zespoły są lepsze.

Po pierwsze, zakładając zerową wartość oczekiwaną błędów sieci składowych i ich nieskorelowanie, otrzymuje się (Bishop, 1995) zmniejszenie błędu zespołu o czynnik N, gdzie N jest liczbą sieci w zespole. W rzeczywistości oczywiście błędy będą skorelowane, zespół będzie więc tym lepszy im mniej skorelowane będą jego składniki. Powinniśmy więc używać różnych typów sieci.

Po drugie (i chyba ważniejsze), wykazać można, że oczekiwany błąd zespołu jest co najmniej tak mały jak średni oczekiwany błąd jej składników. Przy tym zwykle, w typowych sytuacjach błąd zespołu jest mniejszy. Oczywiście, tworząc zespół ponosimy pewne koszty wynikające ze zwiększonego czasu obliczeń, jednak nie powinno to być szczególnym problemem.

Jest kilka metod próbkowania, czyli wybierania podzbiorów przypadków z całego zbioru danych.

Najprostsze jest losowe próbkowanie (metodą Monte Carlo). Podzbiór uczący, walidacyjny i testowy są po prostu losowane ze zbioru danych. Przy czym wielkość podzbiorów jest stała. Można też losowaniu poddawać jedynie podzbiór uczący i walidacyjny, testowy pozostawiając niezmienny dla ułatwienia porównań wyników.

Druga metoda próbkowania to często stosowany sprawdzian krzyżowy. Zbiór danych dzieli się tu na tyle równych części ile sieci chcemy mieć w zespole. Dla każdej sieci jedna z tych części stanowi podzbiór testowy, a reszta przypadków używana jest do uczenia sieci i do walidacji jej jakości. W skrajnym przypadku tego algorytmu - sprawdzianu krzyżowego z pozostawionym jednym przypadkiem, sieć uczy się tyle razy ile jest przypadków, za każdym razem pozostawiając do testowania dokładnie jeden (inny) przypadek. Algorytm ten wykorzystuje do uczenia sieci wszystkie dane, ale liczy długo.

Trzecia jest metoda bootstrap. Podzbiór uczący jest tu wylosowywany (ze zwracaniem) ze zbioru danych. Losowanie ze zwracaniem polega na tym, że każdy przypadek ma za każdym razem takie samo prawdopodobieństwo bycia wylosowanym do zbioru uczącego. Niektóre przypadki mogą więc pojawić się wielokrotnie w podzbiorze uczącym. Zbiór bootstrapowy ma typowo tyle samo przypadków co cały zbiór danych, jednak niekoniecznie musi tak być. Prawdopodobne jest, że niektóre przypadki nie zostaną nigdy wybrane, w żadnym losowaniu. Przypadki te utworzą podzbiór testowy. Inne przypadki będą za to wielokrotnie występowały w zbiorze uczącym lub walidacyjnym.

Metoda bootstrap tworzy nam, z ograniczonego zbioru danych wiele, nieco różniących się podzbiorów. W rezultacie otrzymujemy model o niskim odchyleniu i zmniejszonej przez "uśrednienie" wariancji. Zespoły pozwalają uśrednić również odchylenie. Wystarczy włączyć do zespołu różne typy sieci, o różnych konfiguracjach. Może się zdarzyć, że różne typy sieci będą miały systematyczne odchylenia w różnych obszarach przestrzeni wejściowej, w takim wypadku odchylenia te podlegać będą właśnie pewnemu "wyrównaniu" poprzez wzięcie średniego wyniku z wielu sieci.

Indeks

Zalecane podręczniki

Tadeusiewicz, R. (1993). Sieci neuronowe. Warszawa: Akademicka Oficyna Wydawnicza.

Tadeusiewicz, R. (1998). Elementarne wprowadzenie do sieci neuronowych z przykładowymi programami. Warszawa: Akademicka Oficyna Wydawnicza.

Bishop, C. (1995). Neural Networks for Pattern Recognition. Oxford: University Press. Znakomicie napisana praca współczesna. Wymaga wiedzy matematycznej, ale uważna lektura nagrodzona zostaje porządnym osadzeniem sieci neuronowych w kontekście statystycznym.

Carling, A. (1992). Introducing Neural Networks. Wilmslow, UK: Sigma Press. Łagodne wprowadzenie. Trochę odczuwany jest wiek pracy, ale nadal jest to lektura dająca wstępne wiadomości, od której warto zacząć.

Fausett, L. (1994). Fundamentals of Neural Networks. New York: Prentice Hall. Dobrze napisana książka, z wieloma szczegółowo opisanymi przykładami wyjaśniającymi działanie algorytmów.

Haykin, S. (1994). Neural Networks: A Comprehensive Foundation. New York: Macmillan Publishing. Obszerna książka oferująca wiedzę przekazaną z persepktywy inżynierskiej. Wymaga dobrego przygotowania matematycznego. Zawiera znaczną ilość postaw teoretycznych.

Patterson, D. (1996). Artificial Neural Networks. Singapore: Prentice Hall. Dobre opracowanie zawierające szeroką gamę tematów, jednakże nie tak szczegółowe, jak pozostałe prace.

Ripley, B.D. (1996). Pattern Recognition and Neural Networks. Cambridge University Press. Bardzo dobra, zaawansowana dyskusja na temat sieci neuronowych, wiernie odzwierciedlająca je w szerokim kontekście modelowania statystycznego.

Indeks






© Copyright StatSoft, Inc., 1984-2024
STATISTICA is a trademark of StatSoft, Inc.