„sieci neuronowe” - marek...
TRANSCRIPT
Michał Rutkowski 133350
Wrocław, 4 czerwca 2007
„Sieci neuronowe”
praca zaliczeniowa z przedmiotu „Informatyka systemów autonomicznych”
PROWADZĄCY:
dr inż. Marek Piasecki
1 Trzy słowa wstępu
W niniejszej pracy postaram się przedstawić zagadnienie sztucznych sieci neuronowych (SSN)
lub jak kto woli z angielskiego artificial neural network (ANN). Zagadnienie te jest spore, więc nie
będzie to kompleksowe przedstawienie problemu, a raczej krótka próba przybliżenia zagadnienia,
wraz z omówieniem pewnych cech SSN będących ich unikalnymi właściwościami oraz pokazanie
pewnych interesujących przykładów zastosowania SSN.
Od czego więc zacząć. SSN jak to często w świecie nauki bywa zostały zainspirowane przyrodą,
a dokładniej mózgiem, a dokładniej rzecz ujmując sposobem jakim mózg działa i pracuje. Należy więc
zadać pytanie:
2 Jak pracuje mózg
Czytając przeróżne czasopisma popularno naukowe czy też oglądając różne filmy z gatunku
dokumentalnego / edukacyjnego można się spotykać z określeniem, że mózgu to biologiczny
komputera. Porównanie to jest trafne jeśli chodzi o funkcje mózgu – można mózg traktować jako
centralną jednostkę obliczeniowa (z ang. CPU, czyli potocznie procesor) która podejmuje
najważniejsze decyzje w organizmie oraz steruje jego pracą. Jeśli jednak odnieść się do zasady
działania mózgu porównanie go do procesora jest zgoła nie właściwe. Mózg pracuje na odmiennych
zasadach, niż tradycyjny komputer. W zwykłym komputerze procesor wykonujący obliczenia jest
oddzielony od pamięci. W mózgu zaś rolę pamięci spełnia sama jego budowa. Mózg sam w sobie jest
czymś na miarę pamięci asocjacyjnej w której indeksami są obrazy, zapachy, wspomnienia czy też
rozmaite inne impulsy dostarczane do mózgu (np. ból, zachwianie równowagi, wzrost temperatury itp.,
itd).
Również, operacje jakie wykonuje mózg są znacznie prostsze niż operacje jakie wykonuje nasz
procesor AMD czy Intela, no bo czy ktoś umie w głowie policzyć sumę 2 liczb zmienno przecinkowych
(notabene działanie takie mózgowi nie jest do niczego potrzebne). Operacje jakie wykonuje mózg to
co najwyżej dodawania, odejmowanie, dzielenie i mnożenie. Nasuwa się, więc pytanie w czym tkwi
sekret, skoro mózg jest taki prosty to jak to się dzieje, że działa tak dobrze? Odpowiedz na to pytanie
jest dość prosta, mózg stawia na ilość operacji, a nie na ich skomplikowanie (coś jak procesory RISC),
a te ilości są naprwadę ogromne.
Ludzki mózg zbudowany jest z ok. 100 miliardów pojedynczych komórek nerwowych zwanych
neuronami. Pomiędzy neuronami znajdują się cieniutkie połączenia - aksony. Aksonów jest około 1015,
a liczba operacji na sekundę jaką wykonuje mózg to około 108GHz (dla porównania procesor Intel
Core 2 Duo zmuszono do pracy z częstotliwością 6GHz, tyle że procesor był chłodzony ciekłym
azotem).
Podsumowując, porównanie mózgu do procesora można nazwać obrazą, jeśli wziąć pod uwagę
zakres operacji jakie mózg wykonuje i nadzoruje oraz z jaką gracją mu to wychodzi. Mózg można
raczej przyrównać do klastra, gdzie ogromne ilości operacji i danych są wykonywane w ułamkach
sekund (przy czym klastra bardzo wyspecjalizowanego i prostego).
Przyjrzyjmy się, więc budowie neuronu.
3 Neuron
Żywy neuron przedstawia się następująco:
Rysunek 1. Neuron.
Objaśnienie:
Jądro - "centrum obliczeniowe" neuronu. To tutaj zachodzą procesy kluczowe dla funkcjonowania
neuronu.
Akson - "wyjście" neuronu. Za jego pośrednictwem neuron powiadamia inne neurony o swojej reakcji
na dane wejściowe. Neuron ma tylko jeden akson.
Wzgórek aksonu - stąd wysyłany jest sygnał wyjściowy, który wędruje dalej poprzez akson.
Dendryt - "wejście" neuronu. Tędy trafiają do jądra sygnały mające być w nim później poddane
obróbce. Dendrytów może być wiele.
Synapsa - możne być traktowana jako brama do jądra neuronu. Może ona zmienić moc sygnału
napływającego poprzez dendryt.
Wzorując się na żywym neuronie można przyjąć model :
Rysunek 2. Model neuron.
Mamy już jeden neuron. Właściwie to nawet jeden neuron można zmusić do działania, gdyż
właściwie jest to sieć jednoelementowa. Aby jednak móc użyć sieci w jakimś poważnym celu, trzeba
użyć większej ilości neuronów. Jak widać z rysunków 1 i 2 , neuron może mieć jeden lub więcej
dendrytów (a dla każdego po jednej synapsie) i dokładnie jeden akson. Łączymy je w prosty sposób:
po pierwsze układamy je warstwami. Można zbudować sieć o jednej, dwóch, trzech lub więcej
warstwach – przy czym przy typowych zastosowaniach stosuje się najczęściej trzy warstwy. Neurony
należące do danej warstwy nie mają ze sobą żadnego kontaktu (w najprostszym modelu). Wygląda to
mniej więcej tak:
Rysunek 3. Model sieci neuron.
Na rysunku powyżej przedstawiono sieć jednokierunkową. W takiej sieci sygnały płyną równo i
spokojnie od wejścia poprzez warstwy ukryte do wyjścia. Inną odmianą SSN są sieci rekurencyjne
(rysunek 4). Różnica polega na tym, że w sieci rekurencyjnej występują tzw. sprzężenia zwrotne. Za
ich pośrednictwem sygnały mogą po przejściu danej warstwy wracać na jej wejście, zmieniając przy
tym swoje wartości, co powtarza się wiele razy, aż do osiągnięcia pewnego stanu ustalonego.
Wyjścia sieci
Wejścia sieci
NEURON NEURON NEURON NEURON NEURON
NEURON NEURON
Warstwapierwsza
Warstwawewnętrzna
Warstwawyjściowa
NEURONNEURONNEURONNEURON
NEURON
Rysunek 4. Model sieci neuron ze sprzężeniem zwrotnym.
Czarna strzałka sprzężenie zwrotne z wyjścia na wejścia neuronów.
4 Co potrafią sieci neuronowe
• Klasyfikacja i rozpoznawanie – sieć uczy się podstawowych cech prezentowanych wzorców i
na jej podstawie podejmuje odpowiednią decyzję klasyfikacyjną.
Rysunek 5a i b. Klasyfikacja i rozpoznawanie
• Aproksymacja – siec pełni rolę uniwersalnego apoksymatora funkcji wielu zmiennych,
realizując funkcję nieliniową postaci y=f(x)
• Asocjacja – sieć zapamiętuje zbiór wzorców w taki sposób, aby po zaprezentowaniu nowego
wzorca reakcją sieci było wytworzenie zapamiętanego wzorca, który jest najbardziej podobny
do nowego.
Rysunek 6. Asocjacja
• Heteroasocjacja – sieć zapamiętuje i kojarzy pary obrazów i nawet zniekształcony obraz
wejściowy może wywołać właściwą heteroasocjację na wyjściu (heteroasocjacja obejmuje
problem klasyfikacji)
Rysunek 7. Heteroasocjacja
• Optymalizacja – pozwala na minimalizację pewnych funkcji kosztu, zwykle zadanych przez
użytkownika. Sieć samoczynnie poszukuje minimum tzw. funkcji energii (wartości zależnej od
stanu sieci), dochodzi do stanu o minimalnej energii i w nim zostaje (np. problem
szeregowania zadań)
• Grupowanie danych i wykrywanie cech:
o grupowanie danych – sieć samoczynnie wykrywa podobieństwo w przetwarzanych
danych
o wykrywanie cech – często jest związane z redukcją wymiarów. Mogą realizować
odwzorowanie cech wielowymiarowego sygnału wejściowego o złożonej strukturze na
płaszczyznę (np. prowadzone są eksperymenty z kompresją obrazów za pomocą
SSM, wyniki takiej kompresji są lepszej jakości niż kompresji algorytmami
tradycyjnymi, ale niestety czas takiej kompresji jest znacznie dłuższy)
5 Uczymy się
Sieć, podobnie jak człowiek, może zarówno być uczona przez nauczyciela, jak i zdobywać
wiedze całkiem samodzielnie.
SSNX Y
BŁĄDODP
Rysunek 8a. Uczenie nadzorowane Rysunek 8b. Uczenie nienadzorowane
Uczenie nadzorowane – dla każdej wartości wchodzącej w skład sygnały wejściowego znana jest
poprawna odpowiedz (wartość wyjściowa). Na podstawie różnicy między wartością rzeczywistą, a
wartością pożądaną następuje korekcja wag.
Uczenie nie nadzorowane - różni się od zwykłego uczenia głównie tym, że sieć otrzymuje tylko obiekt
wejściowy, bez narzuconego dla niego wyjścia. Nikt jej nie sugeruje, jak ma na dany obiekt reagować.
Wagi każdego z neuronów w uczeniu nie nadzorowanym zmieniają się zgodnie z zasadą, że:
• neurony, które silnie zareagowały na sygnał wejściowy (akceptacja), zostają nauczone tak,
aby reagować na ten sygnał jeszcze silniej
• neurony, które zareagowały słabo (obojętność), nie są uczone;
• neurony, które zareagowały silną odpowiedzią ujemną (odrzucenie), są uczone tak, aby
jeszcze bardziej zdecydowanie odrzucały ten sygnał.
6 Zastosowania SSN Rozpoznawanie obrazów.
Jest najstarszym z zastosowań sieci neuronowych. W zagadnieniu rozpoznawania obrazu wyróżnia
się szczególnie dwa procesy: wyodrębnianie obiektów i ich identyfikację. Wyodrębnianie obiektów
polega na ich wykryciu na analizowanym obrazie. Wykonuje się przy tym kilka działań takich jak:
wykrywanie krawędzi, wyznaczanie konturów, ocenę powierzchni. W realizacji tych zadań wygrywają
sieci neuronowe w szczególności dzięki ich zdolności do funkcjonowania w warunkach zakłóceń. W
odróżnieniu od pozostałych algorytmów analizy obrazów sieci neuronowe nie potrzebują wstępnego
preprocessing obrazu.
Prognozowanie
Prognozowanie polega na przewidywaniu na podstawie zdobytej wiedzy następnych wydarzeń. Sieci
neuronowe są narzędziami, które znalazły sobie miejsce w dziedzinie ekstrapolacji, czyli
przewidywaniu przyszłego rozwoju zjawiska na podstawie obserwacji jego dotychczasowego
przebiegu. Jakość prognoz może być różna, w dużej mierze zależy to od stopnia nauczenia sieci.
Możliwe jest jednak stworzenie sieci wykorzystującej adaptacyjne zdolności sieci i zbudować taką sieć
neuronową, która nie tylko będzie uwzględniała wiedzę o prognozowanym zjawisku, nabytą w trakcie
treningu, ale także pozytywne lub negatywne doświadczenia zdobywane podczas realnego
prognozowania. W takim wypadku mamy do czynienia z douczaniem sieci. Prognozowanie przez sieci
neuronowe znalazło zastosowanie w przewidywaniach finansowych.
Sterowanie.
SSN są wykorzystywane do sterowania robotami przeznaczonymi do pracy w najtrudniejszych
warunkach. Wykorzystuje je się również w planowaniu do racjonalizacji ruchów robota w nieznanym
mu wcześniej otoczeniu, ponadto dobrze radzą sobie ze sterowaniem procesami produkcji.
Analiza sygnałów.
Pod sygnał można podciągnąć wszystkie przedstawione zależności różnych wielkości od siebie ( np.
natężenie prądu od czasu, mocy sygnału od jego częstotliwości) Sieci neuronowe potrafią wykrywać
istotne stany lub ich sekwencje co ma bardzo ważne znaczenie przy podejmowaniu odpowiedniej
reakcji na odpowiedni stan sygnału ( np. załamki zapisu EKG).
7 Zastosowania SSN w medycynie Spore możliwości działania mają sieci neuronowe w medycynie, sprawdzają się między innymi w:
• Inteligentnym wspomaganiu decyzji: diagnozy medyczne, zalecenia dodatkowych testów,
decyzje w nagłych przypadkach. Należy tu jednak zaznaczyć pewien opór i środowiska i
pacjentów gdyż ludzie nie chętnie składają swoje życie w ręce cudze, a już zupełnie nie jest
im po myśli gdy maszyna ocenia ich szanse na przeżycie (patrz [1] ) czy określa sposób
postępowania z nim
• Klasyfikacji struktur: rozpoznawanie symptomów, klasyfikacja stanu zdrowia, zachowań
człowieka, sensu wypowiedzi.
• Kontroli: sprawdzanie dawek leków, możliwych interakcji leków, potencjalnych
przeciwwskazań
• Planowaniu: terapii, diety, optymalizacja działań w trakcie jej przebiegu.
• Sterowaniu: urządzeń podtrzymujących funkcje życiowe, monitorowanie stanu pacjenta i
ostrzeganie w sytuacjach kryzysowych.
• Analizie obrazów: rozpoznawanie i interpretacja obrazów z aparatury medycznej, kontrola
jakości obrazu.
• Detekcji regularności: wykrywanie niebezpiecznych symptomów w sygnałach EKG, EEG i
innych.
• Separacji sygnałów z wielu źródeł: oczyszczanie obrazów z szumów, filtracja sygnałów
elektrycznych (np. mrugania powiek z EEG)
• Prognozowaniu: rozwój choroby.
8 Zastosowania SSN w medycynie – studium przypadku
Przytoczę tutaj rezultaty badań zawartych w [5]. Celem badań było stworzenie systemu
wspomagającego diagnostykę typu przewlekłego zespołu bólowego twarzy. Klasycznie wyróżnia się 5
głównych typów zachorowania:
• Trigeminal neuralgia Type 1
• Trigeminal neuralgia Type 2
• Trigeminal neuropathic pain
• Symptomatic trigeminal neuralgia
• Atypical facial pain
W oparciu o kwestionariusz z 18 pytaniami autorzy eksperymentu zaprojektowali i nauczyli ANN w celu
diagnozy choroby. Zaprojektowana przez nich sieć ma 4 warstwy (2 ukryte), 18 wejść (18 pytań tak/nie)
oraz 5 wyjść (5 typów zachorowania) i wygląda następująco:
Rysunek 9. ANN przeznaczona do diagnostyki zachorowań na przewlekły zespołu bólowy twarzy
Następnie 100 chętnych z zdiagnozowaną chorobą zostało poproszonych o wypełnienie
kwestionariuszy. Odpowiedzi z ankiet zostały poddane ocenie ANN. Sieć była w stanie wywnioskować
typ choroby w przypadku 95 osób na 100. Eksperyment dowodzi o sporym potencjale ANN w
zastosowaniu przy diagnostyce przewlekłego zespołu bólowego twarzy, jaki i generalnie w medycynie.
Możliwe jest również zastosowanie ANN do auto-diagnostyki pacjentów – wystarczy zbudować
odpowiednią stronę WWW i podpiąć pod nią sieć neuronową co umożliwi pacjentom wstępną
diagnozę przed wizyta u lekarza.
9 Quo vadis
Jaka jest przyszłość SSN? Wydaje się, iż SSN jako narzędzia identyfikacji obiektów i
rozpoznawania mają już pozycje ugruntowana. Podobnie ma się sprawa z wspomaganiem decyzji,
gdzie sieci neuronowe dobrze sprawdzają się w akcji szczególnie użyteczne są systemy hybrydowych
gdzie łączy się SSN z inną metodą poszukiwania rozwiązania np. zbiorami rozmytymi, algorytmami
genetycznymi czy ewolucyjnymi. Jeśli chodzi o obróbkę, analizowanie i rozpoznawanie obrazów to
można pokazać pewne analogie w działania nowoczesnych procesorów przeznaczonych do ww.
zadań i sieci neuronowych, podobnie jak w sieciach w uP inżynierowie stawiają na ilość równolegle
wykonywanych operacji przez rdzenie autonomicznie działające (np. NEC produkuje układy
zawierające 40 rdzeni, z tym, że nie są to procesory ogólnego przeznaczenia, ale wysoce
wyspecjalizowane jednostki obróbki obrazu).
Jednak jak każda dziedzina wiedzy tak i ta ma swoje ograniczenia. Podstawowym problemem
rozwoju sztucznych sieci neuronowych jest to, że nie wiem jak działa do końca żywa sieć, na której
wzorujemy ANN, oczywiście prowadzone są badania i tworzone nowe metody grupowania neuronów,
pobudzania ich wyliczania wag itp. Itd., lecz jest to po części takie naukowe zgadywanie, przy czym
jak dokładnie przełożyć model biologiczny nie wiem i jeszcze długo przy naszym stanie wiedzy i
techniki nie będziemy w stanie tego dokonać.
Jeśli chodzi o hardwarowe implementacje SSN, czyli o tematy poruszane w filmach takich jak
„Terminator” czy „Matrix”, to obecny stan techniki nie jest w stanie nawet zamarzyć o układzie
cyfrowym działającym podobnie do naszego mózgu. Jest kilka czynników uniemożliwiających
stworzenie inteligentnych procesorów: jako że mózg zawiera miliardy komórek nerwowych a liczba
tranzystorów w obecnie produkowanych procesorach liczona jest w milionach (tranzystorach nie
mówiąc o bramkach logicznych), to mamy tutaj różnice kilku wielkości, po drugie nawet jeśli udałoby
się upakować tyle bramek na krzemie układ taki byłby fizycznie wielki, a co za tym idzie realizacja jego
seryjna (czy jakakolwiek inna) nie byłaby możliwa wystąpienie zanieczyszczenia w krzemie na którym
produkowane są uP jest proporcjonalne do wielkości powierzchni (im większa tym wystąpienie
zanieczyszczenia większe), po trzecie wiem że powinno być dużo elektronicznych neuronów, ale do
końca też nie wiadomo jak to powinno wyglądać.
10 Literatura
1. “Decision-Support Systems designed for Critical Care”, M. Frize, H.C.E. Trigg, F.G. Solven,
M. Stevenson. B.G. Nickerson, University of New Brunswick, Fredericton, N.B. , Canada E3B 5A3
2. Artificial Neural Networks in Medicine World Map, http://www.phil.gu.se/ann/annworld.html
3. “Zastosowanie sieci neuronowych w systemach hybrydowych”, Monika Joanna Pabich,
http://aragorn.pb.bialystok.pl/~radev/ai/se/zal04/selic/pabich.htm,
4. “Comparison of artificial neural network and logistic regression models for prediction of mortality in
head trauma based on initial clinical data”, Behzad Eftekhar, Kazem Mohammad,
Hassan Eftekhar Ardebili , Mohammad Ghodsi, Ebrahim Ketabchi
5. “Design of an Artificial Neural Network for Diagnosis of Facial Pain Syndromes”, Kim J. Burchiel ,
Farhad M. Limonadi, Shirley McCartney, Department of Neurological Surgery, Oregon Health &
Science University, Portland, Oreg. , USA
6. “Sztuczne sieci neuronowe”, Joanna Szumowska, http://www.neuron.kylos.pl/pliki/start.html