AKADEMIA GÓRNICZO - HUTNICZA
IM. STANISŁAWA STASZICA W KRAKOWIE
______________________________________________________
WYDZIAŁ ELEKTROTECHNIKI AUTOMATYKI INFORMATYKI I ELEKTRONIKI
KATEDRA INFORMATYKI
Praca dyplomowa
Temat pracy:
System do poglądowego przedstawienia właściwości sieci neuronowych.
Autorzy:
Piotr Swatowski
Tomasz Góźdź
Kierunek:
Informatyka
Ocena:
.................................
Promotor:
Prof. dr hab. inż. Ryszard Tadeusiewicz
Recenzent:
Kraków 1998/99
5
1 Cel 4
2 Sztuczne sieci neuronowe 5
2.1 Rys historyczny rozwoju sieci neuronowych 5
2.2 Definicja i podstawowe właściwości sieci neuronowych 7
2.3 Opis działania neuronu 9
2.4 Uczenie sieci neuronowych 10
2.4.1 Uczenie z nauczycielem 10
2.4.2 Uczenie bez nauczyciela 11
2.5 Organizacja uczenia sieci 11
2.6 Projektowanie zbioru uczącego dla sieci neuronowej 13
2.6.1 Rozmiar zbioru 13
2.6.2 Błędy przypadkowe 13
2.6.3 Zależność rozmiaru sieci i rozmiaru zbioru uczącego 14
2.6.4 Rozwarstwienie zbioru uczącego 14
2.6.5 Ukryte błędy systematyczne 14
2.7 Reguły uczenia 15
2.7.1 Reguła Delta 15
2.7.2 Reguła Hebba 16
3 Opis implementacji poglądowej prezentacji wybranych przykładów sieci neuronowych 19
3.1 Prezentacja neuronu 19
3.2 Prosta sieć neuronowa (z WAT) 23
3.3 Uczenie pojedynczego neuronu 25
3.4 Uczenie prostej sieci 28
3.5 Sieć neuronowa jako filtr sygnału z zakłóceniami 31
3.6 Rozpoznawanie obrazu 33
3.7 Backpropagation - najpopularniejsza metoda uczenia liniowych sieci neuronowych 38
3.8 Sieć Kohonena 44
3.9 Samouczenie sieci neuronowej 48
3.10 Sieć Hopfielda 53
4 Opis środowiska Delphi jako przykład narzędzia typu RAD 59
4.1 Charakterystyka środowiska 59
4.1.1 Język programowania: Pascal (zarys) 60
4.1.2 Środowisko RAD: Delphi 61
4.1.3 Komponenty – nowa jakość w programowaniu 62
4.1.4 Mocne i słabe strony Delphi 63
5 Prezentacja programu komputerowego 65
5.1 Opis konstrukcji programu 65
5.2 Poszczególne moduły programu komputerowego 65
5.2.1 Moduł pierwszy - Prezentacja neuronu 65
5.2.2 Moduł drugi - Prosta sieć neuronowa (z WAT) 68
5.2.3 Moduł trzeci - Uczenie pojedynczego neuronu 71
5.2.4 Moduł czwarty - Uczenie prostej sieci 74
5.2.5 Moduł piąty - Sieć neuronowa jako filtr sygnału z zakłóceniami 76
5.2.6 Moduł szósty - Rozpoznawanie obrazu 81
5.2.7 Moduł siódmy - Backpropagation - najpopularniejsza metoda uczenia liniowych sieci neuronowych 86
5.2.8 Moduł ósmy - Sieć Kohonena 95
5.2.9 Moduł dziewiąty - Samouczenie sieci neuronowej 99
5.2.10 Moduł dziesiąty - Sieć Hopfielda 103
6 Podsumowanie 110
6.1 Wnioski 110
6.2 Propozycje dalszej ewolucji programu 110
7 Literatura 112
Celem naszej pracy jest stworzenie środowiska (dydaktyczno - symulacyjnego programu komputerowego) umożliwiającego użytkownikowi zapoznanie się z możliwościami zastosowań oraz ze sposobem działania sieci neuronowych. Program ten w założeniu jest narzędziem edukacyjnym i służyć ma do wizualizacji wybranych właściwości sieci neuronowych oraz przykładów istotnych aspektów uczenia, testowania i wykorzystania sieci.
Do aplikacji dołączamy również system pomocy dla użytkownika (Help), zawierający wstęp teoretyczny i szczegółowe omówienie prezentowanych przez nas zagadnień.
W rozdziale tym zawrzemy informacje o sieciach neuronowych, ich częściach składowych – neuronach, konstrukcji, typach, sposobach uczenia oraz testowania.
Naszkicujemy również historyczny aspekt ewolucji zainteresowania, budowy teorii jak i jej praktycznego wykorzystania w materii sztucznych sieci neuronowych.
W początkowym okresie, gdy nie było formalnych podstawa nauki sztucznych sieci neuronowych zainteresowanie badaczy osadzonych mocno w dziedzinie neurofizjologii czy bioniki skierowane były na opisie mechanizmów działania mózgu czy pojedynczych komórek układu nerwowego. Dziedzina sieci neuronowych zaistniała samodzielnie wraz z wydaniem historycznej pracy [5], w której po raz pierwszy pokuszono się o matematyczny opis komórki neuronowej. W tejże pracy istotnym elementem było również określenie zasad przetwarzania informacji opartego na kanwie modelu sztucznego neuronu.
Kolejnym kanonem wyznaczającym na długi czas rozwój wiedzy o sieciach neuronowych stanowią dwie pozycje: książka [6] prezentująca tę problematykę od strony rozwiązań technicznych oraz książka [7] stanowiąca podstawowe źródło wiadomości biologicznych, które to od zarania dziedziny sztucznych sieci neuronowych są niedoścignionym wzorem i źródłem inspiracji dla kolejnych pokoleń badaczy.
Pierwszym szeroko znanym przykładem znanej sieci neuronowej był Perceptron [8]. Sieci ta jako układ częściowo elektromechaniczny a częściowo elektroniczny została zbudowana w 1957 w Cornell Aeronautical Laboratory. Sieć ta miała za zadanie rozpoznawać znaki. Programowanie tego rozwiązania oparto na zasadach prostego uczenia co stanowiło o wielkim kroku na przód w dziedzinie sieci neuronowych. Po ogłoszeniu wyników przez twórców nastąpił gwałtowny rozwój tego typu sieci neuronowych na całym świecie. Oczywiście większość naśladowców nie wyszło ponad odtworzenie pierwotnego rozwiązania, ale znaleźli się i tacy którzy twórczo przekształcili pomysły Rosenblatta i Wightmana.
Bardzo istotnym tu przykładem jest rozwiązania zaproponowane przez Bernarda Widrowa z Uniwersytetu Standforda sieć Madaline zbudowana w 1960 roku. Sieć ta składała się z pojedynczych elementów Adaline (ang. Adaptive linear element), który powielony oraz połączony dało układ Madaline (ang. Many Adaline). [9, 10]
W owych pionierskich czasach próbowano nawet tworzyć model całego mózgu. Obecnie gdy o mózgu wiemy już znacznie więcej nikt nie porywa się na takiego rodzaju zaangażowania.
Tempo rozwoju badań nad problematyką sztucznych sieci neuronowych zostało gwałtownie zahamowane na początku lat 70-tych po publikacji książki [11], która to zawierała formalny dowód, że sieci jednowarstwowe (podobne do perceptronu) mają bardzo ograniczony zakres zastosowań. Taki stan - impasu utrzymywał się przez około 15 lat aż do ukazania się serii publikacji, które w sposób bardzo sugestywny pokazywały, że sieci nieliniowe wolne są od ograniczeń pokazanych w pracy [11]. Jednocześnie mniej więcej w tym czasie ogłoszono kilka bardzo efektywnych, formalnych przepisów na uczenie sieci wielowarstwowych.
Okres lat 70-tych nie jest jednak zupełnie bezpłodny jeśli chodzi o tworzone nowe konstrukcje sieci neuronowych. Wymienić tu należy, chociażby zbudowaną przez Stephena Grossberga na uniwersytecie w Bostonie sieć Avalanche. Służyła ona do rozpoznawania mowy oraz sterowaniem ramieniem robota. Z kolei w MIT powstaje Cerebellatron skonstruowany przez badaczy Davida Mara, Jamesa Albusa i Andresa Pollioneze, służący także do sterowania robota. Odmienne zastosowanie miała sieć Brain State in the Box, zbudowana przez Jamesa Andersona z uniwersytetu Browna w 1977 roku. Funkcjonalnie była odpowiednikiem pamięci asocjacyjnej z dwustronnym dostępem (BAM), ale jej działanie nie było związane z iteracyjnym procesem poszukiwania, lecz polegało na szybkich zależnościach typu wejście – wyjście.
W momencie opracowania technologii wytwarzania sztucznych modeli komórek nerwowych w postaci układów scalonych pojawiły się w latach 80-tych pierwsze konstrukcje o dużych rozmiarach oraz znaczących mocach obliczeniowych.
W tym czasie pojawiają się pierwsze sieci ze sprzężeniami zwrotnymi. Istotnym przykładem takiej konstrukcji jest opracowana przez Johna Hopfielda z AT&T Bell Labs sieć wykorzystywana do odtwarzania obrazów z ich fragmentów, a także stosowana do rozwiązywania zadań optymalizacyjnych – słynny problem komiwojażera.
Renesans szerokiego zainteresowania tematyką sieci neuronowych datuję się na drugą połowę lat 80-tych. Wtedy to swoją przełomową książkę publikuje J.A. Anderson [12], , a J.J.Hopfield wprowadza rekurencyjną architekturę pamięci neuronowych i opisuje w swoich pracach obliczeniowe własności sieci ze sprzężeniem zwrotnym. Ożywienie wniosło także opublikowanie monografii opracowanej przez McClellanda i Rumelharta [19] na temat równoległego przetwarzania rozproszonego – publikacja ta spowodowała wzrost zainteresowania możliwościami sieci warstwowych.
Począwszy od lat 1986-87 datuje się wzrost liczby projektów badawczych w dziedzinie sieci neuronowych. Wzrasta również liczba zagadnień, które można rozwiązać przy użyciu sieci neuronowych – dokładna analiza różnego rodzaju zag...
saturn3231