Sztuczne sieci neuronowe Paweł Bęczkowski ETI 9.1 1 Czym określamy sztuczną sieć neuronową Sieć neuronowa (sztuczna sieć neuronowa) to ogólna nazwa struktur matematycznych i ich programowych lub sprzętowych modeli, realizujących obliczenia lub przetwarzanie sygnałów poprzez rzędy elementów wykonujących pewną podstawową operację na swoim wejściu, zwanych neuronami. Oryginalną inspiracją takiej struktury była budowa naturalnych układów nerwowych w szczególności mózgu. zbiór połączonych ze sobą układów scalonych zdolnych do przetwarzania danych i układów pamięci imitujących strukturę ludzkiego mózgu. uproszczony model biologicznego systemu nerwowego, dzięki któremu moŜemy próbować naśladować mózg, obserwować pewne jego zachowania i zasady działania, których nie jesteśmy w stanie wciąŜ zbadać w rzeczywistości. 1 Do czego słuŜy sieć neuronowa Przewidywanie SSN stosuje się głównie do opracowywania prognoz ruchów na giełdzie i do przewidywania pogody. Tak, nawet, zdawałoby się, tak przypadkowe zmiany, jak zmiany giełdowe, podlegają jakimś prawom. Doświadczony gracz potrafi przewidzieć, czy dana operacja zakończy się powodzeniem. Nazywamy to przeczuciem, szóstym zmysłem, lecz jest to jedynie podświadome korzystanie z wiedzy nabytej równieŜ nieświadomie przez lata obserwacji procesów giełdowych. A trzeba pamiętać, Ŝe mózg człowieka, choć ogromny (w porównaniu z SSN), zajmuje się przecieŜ niezliczoną ilością innych zadań. Sieć natomiast jest przeznaczona wyłącznie do jednego zadania i jemu poświęca cały swój potencjał. Do czego słuŜy sieć neuronowa Sterowanie Naukowcy próbujący stworzyć robota o postawie humanoidalnej borykają się głównie z problemem jego ruchu. Dość trudno jest zaprojektować i oprogramować robota w taki sposób, by utrzymywał równowagę. Niedoścignionym wzorem w tej dziedzinie jest mózg. Człowiek, pies, kot, mogą wyczyniać najprzeróŜniejsze ewolucje nie tracąc przy tym równowagi. Aby obliczyć wielkości i kierunki sił, z jakimi balansować musi organizm podczas gwałtownego ruchu, potrzeba matematyki na dość wysokim poziomie. Mózg zaś daje sobie radę z tymi obliczeniami w ułamku sekundy wykonując w tym czasie dziesiątki innych czynności. Odpowiednio zaawansowana sieć neuronowa mogłaby czynić to samo. Właśnie SSN są wykorzystywane do sterowania robotami przeznaczonymi do pracy w najtrudniejszych warunkach. 2 Do czego słuŜy sieć neuronowa Rozpoznawanie Człowiek bardzo łatwo i bardzo szybko rozpoznaje róŜne rzeczy (np..: twarz, dźwięk, kolor) pod warunkiem, iŜ wcześniej się z nimi zetknął i zapamiętał je. W klasycznym komputerze wzorce poszczególnych obiektów wypełniałyby jakąś bazę danych, a algorytmy porównywałby kaŜdą ujrzaną twarz z tymi, które są mu znane. Do czego słuŜy sieć neuronowa Kojarzenie Jest ono bardzo zbliŜone do rozpoznawania. Dwa obiekty (obrazki, dźwięki) mogą dla człowieka być podobne, natomiast klasyczny algorytm nie stwierdzi między nimi podobieństwa. Dla niego są to dwa róŜne ciągi znaków. MoŜna oczywiście programowo "obejść" to utrudnienie - "powiedzieć" komputerowi, jakie cechy obiektu są najbardziej znaczące i mogą zawaŜyć na podobieństwie (lub niepodobieństwie) dwóch (lub więcej) obiektów. Jest to jednak dla programisty wysoce trudne zadanie. Natomiast w przypadku SSN nie ma potrzeby nakazywania sieci brania pod uwagę tej czy innej cechy odnajdzie je sama. Więcej - moŜe zauwaŜyć takie zaleŜności, o których programista nawet nie wie. 3 Z czego składa się „Ŝywa” sieć neuronowa Co to jest neuron? Neuron jest to komórka nerwowa. W sieci neuronowej - podstawowy jej składnik. Jądro - "centrum obliczeniowe" neuronu. To tutaj zachodzą procesy kluczowe dla funkcjonowania neuronu. Akson - "wyjście" neuronu. Za jego pośrednictwem neuron powiadamia świat zewnętrzny 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 biologiczne neurony mają ich tysiące. Synapsa - jeśli dendryt jest wejściem neuronu, to synapsa jest jego furtką. MoŜe ona zmienić moc sygnału napływającego poprzez dendryt. Model neuronu Model neuronu • • Jak zbudowany jest sztuczny neuron? Model neuronu składa się z dokładnie tych samych elementów co neuron naturalny! Wejścia to dendryty, lub ściślej: sygnały przez nie nadchodzące. Wagi to cyfrowe odpowiedniki modyfikacji dokonywanych na sygnałach przez synapsy. Blok sumujący to odpowiednik jądra. Blok aktywacji to wzgórek aksonu, a wyjście - to akson. 4 Jak działa neuron? Na wejścia neuronu trafiają sygnały wejściowe (liczby opisujące postawione zadanie). Sygnały wejściowe są mnoŜone przez wartości wag (czyli waŜone), Wyniki mnoŜenia dodawane są do siebie w bloku sumacyjnym. W ten sposób powstaje konkretna liczba, którą określa się jako potencjał memebranowy. Uzyskana waŜona suma zostaje przetworzona zgodnie z zadana funkcja przejścia (aktywacji) prze blok aktywacji. Funkcja, według której Wyznaczona wartość jest wartością wyjściową neuronu potencjał membranowy neuronu jest przekształcany w jego sygnał wyjściowy. MoŜe ona mieć róŜny charakter Z czego składa się sztuczna sieć neuronowa ? Sieci neuronowe zawdzięczają swoją nazwę m.in. faktowi, Ŝe neurony tworzą pewną sieć – mianowicie formują się w warstwy. Neuron w warstwie zachowuje się dokładnie tak samo jak pojedynczy neuron. Zobaczmy zatem jak przedstawić moŜna schematycznie całą sieć neuronową. W sieciach neuronowych wyróŜniamy następujące warstwy: - wejściową, która dostarcza danych wejściowych, - wyjściową, zwracająca wynik działania sieci, - pośrednie warstwy neuronów tzw. „warstwy ukryte” (zwane niejawnymi), które występują pomiędzy warstwą wejścia i wyjścia; przy wykorzystywaniu sieci do skomplikowanych obliczeń potrzebujemy czasami kilku takich warstw, aby zapewnić efektywniejsze działanie sieci. 6 5 Sztuczna sieć neuronowa Aby uŜyć sieci w jakimś powaŜnym celu musi ona składać się z wielu neuronów. Neuron moŜe mieć jeden lub więcej dendrytów (a dla kaŜdego po jednej synapsie) i dokładnie jeden akson. Neurony łączy się wg. następujących zasad: układa się je warstwami. MoŜna zbudować sieć o jednej, dwóch, lub trzech warstwach, neurony naleŜące do danej warstwy nie mają ze sobą Ŝadnego kontaktu. Niczym nie połączone neurony moŜna nazwać siecią (jest to przykład sieci jednowarstwowej) Sztuczna sieć neuronowa Kolejne warstwy sieci tworzy się w ten sam sposób, co pierwszą. Aby utworzyły jedną sieć naleŜy warstwy połączyć: Neurony łączy się wg. zasady - kaŜdy z kaŜdym (wyjście kaŜdego neuronu z danej warstwy łączy się z wejściem kaŜdego neuronu warstwy następnej) W sieci neuronowej moŜna wyróŜnić tzw. warstwę wejściową. SłuŜy ona do wstępnej obróbki danych wejściowych. (Fakt istnienia warstwy wejściowej pomija się ją podając ilość warstw sieci. Oznacza to, Ŝe wyraŜenie: "sieć jednowarstwowa" oznacza de facto sieć dwuwarstwową, gdzie niejako "zerową" warstwą jest warstwa wejściowa, a dopiero po niej następuje pierwsza). Nie ma sensu budować sieci złoŜonej z więcej niŜ trzech warstw. 6 Podział sztucznych sieci neuronowych Sztuczne sieci neuronowe moŜna podzielić ze względu na: - ilość warstw (tutaj nie bierze się pod uwagę warstwy wejściowej) – wyróŜniamy sieci jednowarstwowe oraz sieci wielowarstwowe; -kierunek przepływu sygnałów - wyróŜnić moŜemy sieci jednokierunkowe, w których sygnał płynie zawsze w jednym kierunku oraz sieci rekurencyjne, w których 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 ustalonego stanu. Sieć jednowarstwowa Sieć wielowarstwowa rekurencyjna Sieć wielowarstwowa jednokierunkowa 7 Proces uczenia sztucznych sieci neuronowych Metoda z nauczycielem Nauczyciel podaje: - wzorcowe obiekty na wejściu; - oczekiwane wartości na wyjściu; Sieć: - uczy się wzorców „na pamięć” oraz nabywa zdolność uogólniania wiedzy (rozpoznawanie podobnych obiektów); - zmienia wartości wag w celu dopasowania swojego działania do wzorców (nauczonych wyników). Metoda samouczenia - brak wzorcowych wag (sieć generuje je losowo); - sieć odbiera sygnał wejściowy i na jego podstawie wyznacza swoje wyjście; - sieć ocenia wartość na wyjściu kaŜdego neuronu warstwy wyjściowej; - wagi poszczególnych neuronów zmieniane są zgodnie z określonymi w danej metodzie zasadami. 8 7 Zalety sieci neuronowych Nie wymagają programowania. Wystarczy stworzyć sieć, a ona uczy się sama. Rola programisty ogranicza się do zaprojektowania takiej struktury sieci, która najlepiej będzie nadawała się do rozwiązania danego problemu, a następnie do umiejętnego pokierowania procesem uczenia sieci. Są odporne na uszkodzenia Sieć neuronowa wykazuje duŜą odporność na uszkodzenia - nawet w przypadku uszkodzenia niektórych połączeń działa nadal (podobnie jak mózg)! Dopiero po przekroczeniu pewnego progu uszkodzeń sieć (podobnie jak mózg) odmawia posłuszeństwa. Zdolność do uogólniania Znaczy to dokładnie tyle, Ŝe jeśli sieć nauczy się, powiedzmy, rozpoznawać kolory: czerwony i Ŝółty, to moŜe równieŜ rozpoznać róŜowy i bladoŜółty, czyli kolory podobne do znanych. Wady sieci neuronowych Są mało precyzyjne Sieci neuronowe nie przydadzą się przede wszystkim tam, gdzie potrzeba jasnych i precyzyjnych wyników - czyli przy rozmaitych skomplikowanych obliczeniach, obsłudze kont bankowych, itp. SSN operuje tzw. pojęciami rozmytymi: wysoki, niski, duŜy, mały, średni, jasny... Często jeśli oczekujemy od sieci odpowiedzi "tak" lub "nie", ona odpowie: "raczej tak", lub: "chyba nie"... Ta ostatnia skłonność sieci moŜe być zarówno wadą, jak i zaletą - zaleŜy, jak na to patrzeć. Brak „rozumowania” wieloetapowego SSN nie zdaje egzaminu takŜe wtedy, gdy specyfika problemu wymaga zastosowania wieloetapowego rozumowania. Kiedy trzeba mozolnie dochodzić do pewnych wniosków na podstawie efektów wcześniejszego rozumowania, a z tych wniosków wyciągać kolejne - sieć nie daje sobie rady. Działanie sieci pozwala na wyciąganie jedynie bezpośrednich wniosków. Rozumownie wieloetapowe wymaga zastosowania kilu sieci. 8 Koniec 9