Praca magisterska



Pobieranie 1,5 Mb.
Strona16/16
Data24.02.2019
Rozmiar1,5 Mb.
1   ...   8   9   10   11   12   13   14   15   16

Prezentacja programu komputerowego


W tym rozdziale opiszemy sposób posługiwania się edukacyjnym programem komputerowym. Określimy zakres zmian oraz znaczenie poszczególnych parametrów udostępnionych użytkownikowi w kolejnych modułach. Parametry te umożliwiają: określić wartości wagi oraz wejście neuronu czy prostej sieci, ustawiać parametry procesu uczenia sieci, testować wytrenowaną sieć itp.
    1. Opis konstrukcji programu


Dydaktyczno - symulacyjny program komputerowy realizujący stawiany w temacie pracy cel, zbudowany jest na zasadzie podziału na odrębne, aczkolwiek wspólne w sferze konstrukcji oraz obsługi, obszary tematyczne odpowiadające przykładom prezentowanych zagadnień sieci neuronowych. Staraliśmy się ujednolicić obsługę jak i konstrukcję aplikacji. Z jednej strony było to podyktowane wybranym środowiskiem Windows 95 (lub Windows NT) i narzędziem implementacyjnym Delphi 3.0. Z drugiej zaś chodziło nam aby określony parametr, cecha sieci neuronowej bądź aspekt procesu uczenie lub testowania dla wszystkich przypadków był ujednolicony.
    1. Poszczególne moduły programu komputerowego

      1. Moduł pierwszy - Prezentacja neuronu


Przykład zaimplementowany w module pierwszym pozwala zrozumieć procesy które zachodzą w sztucznym neuronie. Taki neuron charakteryzuje się następującymi cechami:

  • wektorem wag – w programie jest udostępniony do modyfikacji przez użytkownika pięcioelementowy zbiór pól edycyjnych zgrupowanych w sekcję Wagi neuronu widoczną na poniższym rysunku:




  • wektor sygnałów wejściowych – jest to zestaw sygnałów jakie będą podawane na wejście neuronu w przykładzie zestaw ów zgrupowany jest w sekcję Sygnały wejściowe – udostępnione są tam pola do zadawania wartości – obszar jest widoczny na poniższym rysunku:




  • parametry pracy neuronu – zestaw danych informujący w jaki sposób neuron przetworzył wektor sygnałów wejściowych przez wektor wag aż do wyliczenia odpowiedzi jako wartości funkcji aktywacji. Neuron posiada możliwość (modelowo) odpowiedzi w wartościach dwóch funkcji aktywacyjnych: ciągłej funkcji sigmoidalnej oraz dyskretnej, unipolarnej funkcji binarnej. Dla funkcji sigmoidalnej użytkownik może określić parametr przez wprowadzenie odpowiedniej wartości w pole Lambda. Wyliczane przez program wartości: moc sygnału wejściowego, moc śladu pamięciowego (wagi neuronu), łączne pobudzenie, wartości ciągłej funkcji aktywacji, wartość binarnej funkcji aktywacji są zgrupowane w sekcję Parametry pracy neuronu. Opisane informacje można zobaczyć na załączonych poniżej rysunkach:


Wszystkie powyższe sekcje są umieszczone na oknie stworzonym do prezentacji oraz symulacji działania pojedynczego, sztucznego neuronu który w swej definicji prezentacyjnej posiada odpowiedzi właściwe zarówno dla neuronów liniowych (Łączne pobudzenie) jak i neuronów z nieliniową funkcją aktywacji (Ciągła funkcja aktywacji, Binarna funkcja aktywacji). Czyli użytkownik może zaobserwować działanie jakby trzech różnych neuronów, które mając takie same wejście oraz wagi ale różne elementy odpowiadające za „jakość” pracy, odpowiedzi.

Ekran zawierający główne okno modułu Prezentacja pojedynczego neuronu załączony został na poniższym rysunku:

Na powyższym oknie są umieszczone dwa przyciski operacyjne: Przelicz oraz Zeruj. Po wprowadzeniu wartości w sekcjach Sygnały wejściowe, Wagi neuronu oraz Lambda należy użyć przycisku Przelicz w celu obliczenia odpowiedzi neuronu zgrupowanej w sekcji Parametry pracy neuronu. Zadaniem przycisku Zeruj jest ustawienie prezentacji w jej stanie początkowym.



      1. Moduł drugi - Prosta sieć neuronowa (z WAT)


Przykład składa się z dwóch ekranów znajdujących się pod dwoma zakładkami - „Określenie sieci” i „Testowanie sieci”.

Ekran „Określenie sieci” zawiera opis pięciu cech oraz trzech neuronów, dla których użytkownik ma możliwość edytowania i modyfikacji poszczególnych wag jak i skojarzonych z poszczególnymi wagami cech.



Cechy określamy dla wszystkich obiektów - neuronów. Co jest widoczne na umieszczonym poniżej rysunku pól zgrupowanych w sekcję Informacje o cechach. Określenie cechy polega na nazwaniu wejścia neuronu tzn. określamy, że pierwsze wejście będzie stanowić o ilości nóg rozpoznawanego obiektu, tak ustanowiona uwaga pozwala nam na odpowiednie konstruowanie wag odpowiednich neuronów jak i podawanie w sposób oczywisty parametrów dla badanych obiektów.


Następnie dla każdej klasy obiektów określamy jej cech indywidualne. Np. jako cechę wybieramy ilość nóg, klasy obiekty to ssak - ma 4 nogi, ptak - 2 nogi, płaz - brak (0) nóg, co zapisujemy jako bezpośrednie wartości poszczególnych neuronów A, B, C.



Dla każdego neuronu automatycznie wyliczana jest jego moc zestawu wag – co inaczej jest nazywane moc śladu pamięciowego.

Po określeniu parametrów sieci użytkownik może przejść do jej testowania (zakładka „Testowanie sieci”).

Na ekranie testowania sieci użytkownika określa sygnał testowy (dane dla badanego obiektu skojarzone z jego cechami), po czym testuje sieć. Sieć podaje odpowiedź dla zdefiniowanego przez użytkownika obiektu i wskazuje, który z neuronów rozpoznał testowany obiekt. Wyznaczane przez sieć wartości to moc sygnału wejściowego, odpowiedzi ilościowe każdego z neuronów, klasyfikacja jakościowa odpowiedzi – porównanie z zadanym progiem poprawnej klasyfikacji, wskazanie jednego (WTA) obiektu najlepiej pasującego swoimi wagami do wektora sygnałów wejściowych oraz spełniającego wymogi jakości klasyfikacji (ponad próg).




      1. Moduł trzeci - Uczenie pojedynczego neuronu


Moduł ten ilustruje uczenie neuronu o charakterystyce liniowej, o 5 wejściach.

Użytkownik ma w tym przykładzie do dyspozycji 2 ekrany, znajdujące się pod odpowiednimi zakładkami – ekran wczytywania ciągu uczącego oraz ekran nauki i testowania neuronu. Na pierwszym ekranie użytkownik określa jaki jest ciąg uczący użyty do uczenia sieci.



W tym celu może wykonać jedną z poniższych operacji:

  • może otworzyć (ikona koperty w górnej części ekranu) jeden z przygotowanych ciągów uczących





  • może wygenerować własny ciąg uczący (przycisk „Generuj” w górnej części ekranu)

Plik wczytany do edytora może być przez użytkownika dowolnie modyfikowany i zapisywany. Format pliku jest stały, następują w nim po sobie (wielokrotnie powtórzone):


linia komentarza (rozpoczynająca się średnikiem)

5 liczb będących sygnałami wejściowymi

sygnał wyjściowy
Po wczytaniu ciągu uczącego (i ewentualnym naniesieniu na nim poprawek) użytkownik ma możliwość użycia tego ciągu do uczenia i testowania sieci. W tym celu należy wybrać zakładkę „Uczenie i testowanie” w dolnej części ekranu.

Na oknie Uczenia i testowania użytkownik może uczyć neuron (jednorazowe użycie przycisku „Uczenie neuronu” jest równoznaczne z podaniem na wejście sieci jednego elementu wybranego ciągu uczącego „),

a również może w dowolnym momencie przeprowadzić test neuronu (określając poszczególne wejścia i naciskając przycisk „Testowanie neuronu” ).

Wtedy dla określonych przez użytkownika sygnałów wejściowych neuron wyliczy sygnał wyjściowy.




      1. Moduł czwarty - Uczenie prostej sieci


Przykład ten obrazuje proces uczenia prostej liniowej sieci neuronowej.

Zaprojektowaliśmy dla tego przykładu ciąg zawarty w pliku uczący_s.ctg. Struktura sieci jest stała i użytkownik nie może jej zmieniać. Ciąg uczący ma następującą strukturę:


;komentarz

zestaw sygnałów wejściowych



wzorcowy zestaw sygnałów wyjściowych
W zestawie sygnałów wejściowych podawane będą pięcioelementowe wektory (porcje po pięć sygnałów dla pięciu wejść rozważanego neuronu), zaś wzorcowych sygnałów jest 3.

Podobnie jak w poprzednim przykładzie użytkownik programu pracuje na dwóch oknach – na pierwszym wczytuje i modyfikuje ciąg uczący, na drugim uczy i testuje działanie sieci.

Konstrukcja tego przykładu jest bardzo zbliżona do przykładu poprzedniego. Na pierwszym ekranie użytkownik pracuje z ciągiem uczącym (podobnie jak w poprzednim przykładzie może go wczytać z pliku bądź wygenerować i zmodyfikować). Po zakończeniu pracy z ciągiem uczącym użytkownik przechodzi do etapu uczenia i testowania.

Na oknie uczenia i testowania użytkownik może uczyć sieć (jednorazowe użycie przycisku „Uczenie sieci” jest równoznaczne z podaniem na wejście sieci jednego elementu ciągu uczącego), a również może w dowolnym momencie przeprowadzić test sieci (określając poszczególne wejścia i naciskając przycisk „Testowanie sieci” ).

Test sieci polega na tym, że dla określonych przez użytkownika wejść sieci sieć wylicza wszystkie sygnały wyjściowe.


      1. Moduł piąty - Sieć neuronowa jako filtr sygnału z zakłóceniami


Przykład ten prezentuje działanie sieci neuronowej stanowiącej autoasocjacyjny filtr sygnałów z zakłóceniami. Okno prezentacyjne posiada dwie zakładki a co za tym idzie dwa ekrany robocze: Ciąg uczący oraz Uczenie sieci – wykresy. Operacje na ekranie Uczenie sieci – wykresy możliwe jest dopiero po określeniu ciągu uczącego: wygenerowaniu nowego lub wczytani wcześniej przygotowanego w pliku tekstowym (istotne jest aby plik posiadał rozszerzenie .cgn)

Po wskazaniu zakładki Ciąg uczący otrzymujemy obrazek jak na poniższym rysunku:



Okno to zawiera listę na której są umieszczone przyciski oraz kontrolki operacyjne. Przycisk Generuj służy do automatycznego wygenerowania ciągu uczącego (zawiera on sygnał sinusoidy jako sygnał wzorcowy oraz jego losowo zakłócony obraz). Przycisk Wczytaj pozwala powtórnie wczytać zawartość wskazanego pliku z ciągiem uczącym. Przycisk otwarcia pliku powoduje wywołanie okna dla wybierania „Plik z ciągami uczącymi”. Znajduje się tu również pole z nazwą pliku, pasek określający postęp przeprowadzanej czynności (wczytywanie pliki, generacja nowego ciągu uczącego) oraz duży edytor zawierający obraz wczytanego lub wygenerowanego ciągu z danymi do uczenia i testowania sieci neuronowej.

Wybrany ciąg może zostać przegenerowany przez użytkownika (na tym etapie użytkownik ma możliwość dowolnej modyfikacji ciągu testowego – np. w edytorze Notepad.exe), a następnie jest wczytywany do



Okno do wyboru pliku z ciągiem uczącym, jeśli wprowadzimy tu nazwę nieistniejącego pliku a następnie wykonamy operację Generuj nastąpi utworzenie nowego pliku z ciągiem uczącym o podanej nazwie.


Następnym etapem jest przystąpienie do uczenia oraz testowania sieci neuronowej co możemy wykonać przełączając okno na ekran skojarzony z zakładką Uczenie sieci – wykresy. Po wybraniu akcji przerysowania wykresu (przycisk Przerysuj) otrzymujemy obraz jak na rysunku poniżej:


Ekran ten zawiera duże pole do prezentacji wykresów oraz standardowo listę z narzędziami dostępnymi w tej części prezentacji. Możliwe operacje to wskazanie parametrów dla akcji Przerysuj (przełączniki: sygnał wzorcowy, sygnał zaszumiony, sygnał przefiltrowany – kolory tych przełączników odpowiadają odpowiednim krzywym i łamanym na wykresie), wykonanie akcji Przerysuj – co można wykonywać po dowolnej ilości kroków uczących przez co łatwym staje się proces podglądania postępu uczenia oraz jego jakości. Następną bardzo istotną częścią listwy operacji jest klasa parametrów i funkcji związanych z procesem uczenia sieci neuronowej filtrowania sygnału zakłóconego. Do tej grupy należą: parametr ile kroków – poprzez ustawienie tego parametru określamy ile pełnych prezentacji ciągu uczącego ma zostać wykonana w danym cyklu treningu, przełącznik waga środkowa – pozwala wprowadzić do procesu zadawania początkowych (losowych) wag neuronów ustaloną wartość na środku wag (w naszym wypadku na wadze numer 3) wartość stałą dla wszystkich neuronów równą 1, parametr współczynnik – jest to wartość określająca szybkość uczenia (im większy typ proces uczenia jest bardziej forsowny – wagi w każdym kroku są mocno modyfikowane).



Listwa narzędziowa sekcji Uczenie sieci – wykresy jest zobrazowana na poniższym rysunku:

Po ustaleniu tych wartość możemy przystąpić do uczenia poprzez wybór przycisku Ucz sieć. zakończenie procesu uczenia obrazowane zatrzymaniem się zmian wartości pola wykonany krok na liczbie ilości kroków do wykonanie pozwala nam wykonać funkcję przerysowania przez co możemy ocenić jakość przeprowadzonego procesu uczenia.

Złożenie wykresów po wykonanym procesie uczenia (parametry: wykonane kroki uczące w ilości 3, współczynnik postępu uczenia równy 0,15, bez wagi środkowej) obrazuje poniższy rysunek:

Ja łatwo zaobserwować dobre efekty przy filtrowaniu zakłóconych (nie za mocno) sygnałów można otrzymać przy użyciu bardzo prostej sieci liniowej – jedna warstwa oraz bardzo krótkim procesie uczenia – 3 iteracje pokazowe. (Uwaga: wszystkie okienka tej prezentacji są wykonywane na tym samym zestawie ciągu uczącego)




      1. Moduł szósty - Rozpoznawanie obrazu


Moduł zawiera mechanizmy pozwalające skonstruować prostą figurę płaską złożoną z nakładających się kół, następnie określić jak zbudowana jest sieć neuronowa (ile i jak licznych warstw ukrytych posiada), dla tej sieci umożliwia prowadzenie przyrostowego procesu uczenia (użytkownik podaje ile ma być wykonanych prezentacji ciągu uczącego, złożonego z losowo wybieranych punktów z określonego wcześniej obrazka) każdy etap (epoka) procesu uczenie kończy się wizualizacją możliwości sieci w rozpoznawaniu powyższego obrazka. Tempem uczenia użytkownik steruje poprzez ustalenie początkowych wartości parametrów uczenia: (eta) oraz (alfa).

Obszar roboczy jaki dostaje użytkownik po wybraniu modułu Rozpoznawanie obrazów wygląda jak na poniższym rysunku.



Dla tego okna wyróżniamy obszar w dolnej części ekranu (około 2/3) zawierający elementy związane z prowadzonym przez użytkownika procesem uczenia i testowania wielowarstwowej, nieliniowej sieci neuronowej zaimplementowanej w typ programie. Górna część wygląda jak poniższy rysunek

oraz zawiera następujące grupy funkcjonalności (są one wymienione w kolejności jak użytkownik powinien jej określać i używać):



  • Definicja figury płaskiej – określenie musi zawierać (przynajmniej jej fragment) figurę na płaszczyźnie w kwadracie ograniczonym punktami (-5,-5) – (5,5); można zdefiniować maksymalnie (również nakładające się na siebie) trzy koła; w przypadku określenia koła o promieniu R równym zero lub koła nie zawierającego się we wskazanym kwadracie nie będzie ono miało wpływu na uczenia a tym samym nie będzie rozpoznawane przez nauczoną sieć neuronową; po określeniu trzech kół (zaznaczone przełączniki „okrąg 1..3”) można przystąpić do następnego etapu definicji warunków symulacji – określenie sieci neuronowej;

  • Określenie struktury sieci neuronowej i początkowych parametrów uczenia – w tym module została zaimplementowana, wielowarstwowa sieć neuronowa dla której użytkownik definiuje ilość neuronów w dwóch warstwach ukrytych (warstwa wejściowa arbitralnie zawiera dwa neurony, zaś warstwa wyjściowa – jedne); maksymalna ilość neuronów w warstwach ukrytych wynosi; jeśli określone zostanie zero lub brak neuronów w warstwie ukrytej to użytkownik rezygnuje z jej istnienia w tej instancji sieci neuronowej; w skrajnym wypadku sieć składa się z dwu neuronów wejściowych i jednego wyjściowego; następnie można zmodyfikować wartości parametrów: intensywności eta oraz zależności od wyników poprzednich kroków – alfa; kolejnym etapem jest naprzemienne wykonywanie w dwóch poniższych punktach

  • Gęstość próbkowania losowego wyznaczania ciągu uczącego – użytkownik może określić krok (siatkę próbkowania) z jakim losowane będą kolejne elementy ciągu uczącego danej epoki; położenie suwaka w skrajnie górnym położeniu jest to ustawienie największego oka siatki próbkowania; po ustawieniu w skrajnie dolnym położeniu próbkowanie zachodzi w sposób ciągły (no może jest zakłócone to dyskretną reprezentacją liczby zmiennopozycyjnej w komputerze);

  • Ilość pokazów (Kroków ucznia) i uruchomienie (również zatrzymanie- na żądanie) procesu uczenia – w tym kroku użytkownik określa ile ma być wykonanych losowań punktów uczących w jednej epoce; następnie należy uruchomić akcję (przycisk) Ucz sieć; napis na tym samym przycisku (dla dużej ilości kroków i wolnego komputera) zmienia się na Stop – to aby można było przerwać uczenie w dowolnej chwili; po zakończeniu uczenia nastąpi automatyczne testowanie sieci poprzez zapełnienie kolejnego wolnego obszaru testowego ekranu prezentacji (2/3 od dołu).

W czasie procesu uczenia użytkownik ustala kolejne epoki (ich liczebność) i następuje automatyczne testowanie w postaci wyrysowania przez program aktualnych umiejętności sieci. Użytkownik ma możliwość również prowadzenia eksperymentów z generowaniem pokazów o określonej gradacji poprzez użycie do tego udostępnionego suwaka zmiany kroku próbkowania. Na załączonym poniżej rysunku widać prowadzony proces kolejnych iteracji uczenia i testowani:

Jak można zauważyć z tych eksperymentów wielowarstwowe sieci nieliniowe stanowią - nawet w tak prostej konstrukcji, jakim dysponuje użytkownik w tym module do dwóch warstw ukrytych, do dziewięciu neuronów w każdej z niech – potężne, wydajne i stosunkowo proste w konstrukcji i uczeniu środowisko równoległego przetwarzania danych a co za tym idzie i jak w tym przykładzie skutecznego rozpoznawania obrazów.


      1. Moduł siódmy - Backpropagation - najpopularniejsza metoda uczenia liniowych sieci neuronowych


Backpropagation to najpopularniejsza metoda uczenia sieci wielowarstwowych. Umożliwia ona w takich oszacowanie błędów warstw pośrednich, oraz uczenie tych warstw poprzez rzutowanie błędów poszczególnych warstw sieci na warstwy poprzednie.

Program pokazuje szczegółowo działanie sieci złożonej z czterech neuronów tworzących trzy warstwy - wejściową, nie podlegającą uczeniu (w dolnej części ekranu), wyjściową, której sygnały będą podlegały uczeniu (w górnej części ekranu) oraz warstwę ukrytą, w centralnej części ekranu.

Użytkownik ma do dyspozycji 2 ekrany, znajdujące się pod dwiema zakładkami – „Działanie sieci” oraz „Uczenie sieci”
Działanie sieci wielowarstwowych

Wybierając zakładkę „Działanie sieci” użytkownik programu ma możliwość zapoznać się z działaniem sieci warstwowej składającej się z 2 wejść, 2 neuronów w warstwie ukrytej i 2 neuronów w warstwie wyjściowej.



Program ustala współczynniki wagowe dla wszystkich neuronów w całej sieci. Użytkownik ma możliwość modyfikacji parametrów sieci, ale tylko gdy przełącznik „ustaw parametry sieci” na ekranie pokazującym uczenie sieci nie jest zaznaczony.


Po prawidłowym określeniu parametrów (i zaznaczeniu przełącznika) sieci użytkownik może zacząć prezentację. Kolejne kroki prezentacji są uruchamiane poprzez wybranie myszką przycisku „Krok”.

Pierwszym krokiem jest obliczenie iloczynów sygnałów wejściowych oraz wag warstwy ukrytej, drugim obliczenie odpowiedzi warstwy ukrytej, a kolejnym. Wszystkie wyliczane w tych krokach parametry są kolejno umieszczane na oknie programu.

Poniżej prezentujemy zrzut ekranu z tego etapu pracy programu.

Ostatnim etapem prezentacji jest wyliczenie odpowiedzi warstwy wyjściowej. Po zakończeniu prezentacji użytkownik może przystąpić do uczenia sieci metodą backpropagation.

Uczenia sieci wielowarstwowych – Backpropagation

W tym celu należy wybrać zakładkę „Uczenie sieci – BACKPROPAGATION”. Na pierwszym ekranie tego przykładu pokazana jest struktura sieci (analogiczna jak w poprzedniej prezentacji) oraz początkowe (zainicjowane losowo) wartości wag neuronów warstwy ukrytej i wyjściowej.

Użytkownik może modyfikować współczynnik (learning rate) oraz momentum.

Współczynnik uczenia musi być wybierany z dużą rozwagą, gdyż zarówno zbyt duża, jak i zbyt mała jego wartość źle wpływa na przebieg procesu uczenia. Zbyt mała wartość tego współczynnika powoduje, że uzcenie się sieci jest bardzo długotrwałe (wagi są poprawiane w każdym kroku bardzo słabo, żeby więc osiągnęły pożądane wartości trzeba wykonać bardzo dużo takich kroków). Z kolei wybór za dużego współczynnika uczenia powoduje bardzo gwałtowne zmiany parametrów sieci, które w krańcowym przypadku prowadzić mogą nawet do niestabilności procesu uczenia



Drugi współczynnik - momentum - określa stopień "konserwatyzmu" procesu uczenia. Określa on stopień zależności zmian wag od zmian stosowanych w procesie uczenia na poprzednim wzorcu. Im większa wartość współczynnika momentum, tym bardziej stabilny i bezpieczny jest proces uczenia - chociaż zbyt duża wartość może prowadzić do trudności z wykryciem przez sieć najlepszych (optymalnych) wartości współczynników wagowych dla wszystkich wchodzących w grę neuronów.

Po podaniu współczynników oraz wartości obydwu sygnałów wejściowych, jakie sieć ma otrzymać na swoich wejściach program zaczyna demonstrację. Na początku pokazuje on tylko strukturę sieci (miejsca, gdzie znajdują się poszczególne neurony oraz miejsca, gdzie wyświetlone będą poszczególne sygnały). W górnej części okna wyświetlany jest tytuł „Prezentacja struktury sieci z wagami”.

Po naciśnięciu przycisku Krok, sieć pokazuje wartości sygnałów wejściowych (podawane z zewnątrz przez neurony wejściowe), a także wartości współczynników wagowych - dla wszystkich wejść wszystkich neuronów (wyświetlane w kolorze fioletowym).

Następnie jest wczytywany kolejny element ciągu uczącego (o czym informuje zmiana tytułu w oknie – na „Nauczyciel podał sygnały wejściowe i wyjściowe”).

Kolejne naciśniecie klawisza „Krok” rozpoczyna proces symulacji przetwarzania sygnałów w sieci. Początkowo obliczane są odpowiedzi warstwy wejściowej. W każdej kolejnej warstwie obliczane są i wyświetlane (na niebiesko) sumy wartości przemnażanych przez odpowiednie wagi sygnałów wejściowych (wraz ze składnikiem BIAS). Drogi przesyłania tych sygnałów oznaczone są w postaci niebieskich linii.

Po kolejnym naciśnięciu przycisku „Krok” uruchamiany jest proces symulacji procesu przesyłania i przetwarzania sygnałów w modelowanej sieci. Początkowo wyliczane są odpowiedzi warstwy wejściowej (tytuł okna zmienia się na „Obliczanie odpowiedzi warstwy wejściowej”).W każdej kolejnej warstwie obliczane są i wyświetlane (na niebiesko) sumy wartości przemnażanych przez odpowiednie wagi sygnałów wejściowych (wraz ze składnikiem BIAS). Drogi przesyłania tych sygnałów oznaczone są w postaci niebieskich linii.

Następnie pokazywane są obliczone wartości sygnałów wyjściowych poszczególnych neuronów, powstałych po przepuszczeniu zsumowanych sygnałów wejściowych przez funkcję przejścia neurony. Potem odpowiedzi neuronów niższej warstwy stają się wejściami dla neuronów wyższej warstwy.

W momencie, gdy sieć (jako całość) popełni błąd - obliczane są błędy poszczególnych neuronów. Najpierw wyznaczane są wartości błędów dla wyjściowych neuronów sieci. Potem błędy te przeliczane są na odpowiadające im wartości na wejściach neuronów.


Po wyznaczeniu wartości błędów dla wszystkich neuronów w sieci - kolejny krok programu prowadzi do wyznaczenia nowych (poprawionych) wartości współczynników wag w całej sieci. (patrz rysunek poniżej). Potem następuje kolejna iteracja procesu uczenia.

Zaprezentowany moduł przedstawia w szczegółowy i czytelny dla użytkownika sposób przebieg sygnałów w sieciach neuronowych.


      1. Moduł ósmy - Sieć Kohonena


Moduł prezentuje model sieci Kohonena, której zadaniem będzie nauczenie się rozpoznawania wskazanej figury geometrycznej. Dla określonej struktury sieci (podano ile sieć prostokątna zawiera elementów na krawędzi poziomej oraz pionowej) należy ustawić parametry: szybkości uczenia, zakresu sąsiedztwa, zmiany szybkości uczenia oraz zakresu sąsiedztwa wraz z kolejnymi prezentacjami, ilość prezentacji losowych punktów figury, której rozpoznawania na się nauczyć szkolona sieć Kohonena.

Główne okno modułu, na którym wyróżniamy w górnej części sekcje funkcjonalności sterujących eksperymentem, zaś w dolnej są umieszczone obszary, na których będą prezentowane efekty kolejnych etapów prowadzonych symulacji.

Ekran okna głównego modułu jest umieszczony na rysunku poniżej:

Jak już wcześniej wspominaliśmy, w górnej części powyższego ekranu znajduje się sekcja funkcjonalności sterujących procesem definicji rozpoznawanej figury poprzez określenie struktury sieci samoorganizującej Kohonena, aż po ustalenie parametrów procesu uczenia oraz sterowanie kolejnymi etapami uczenia i testowania i otrzymywanych wyników. Mechanizmy ustalania warunków i parametrów przeprowadzania eksperymentu znajdują się na poniższym rysunku:


gdzie możemy wyróżnić następujące sekcje funkcjonalności:



  • Wybór figury geometrycznej – użytkownik wskazuje tu w polu przełącznika radiowego (ang. radio-set) jedną z dostępnych tam figur: kwadrat, trójkąt, krzyż, koło, gwiazda, elipsa; po wyborze następuje w obszarze obok (biały kwadrat) następuje wizualizacja wskazanej figury, która w dalszej części eksperymentu będzie podlegała najpierw uczeniu przez sieć a później rozpoznawaniu (testowaniu),

  • Określenie struktury sieci Kohonena oraz „rozrzutu” wag początkowych – strukturę sieci użytkownik może określić jako pewnego rodzaju sieć płaską opartą o konstrukcję prostokąta: podawana jest ilość neuronów na boku i podstawie prostokąta; istotnym dla późniejszego procesu uczenia parametrem jest rozrzut (trzecie pole edycyjne – wartość rzeczywista), który to mające małą „ustaloną wartość” określa, że początkowe wagi są losowane z przedziału [-ustalona wartość, ustalona wartość] przez co użytkownik może sterować „rozrzutem” struktury sieci odwzorowanej na płaszczyźnie w czerwonych kwadracikach połączonych przez szarymi kreseczkami obrazującymi najbliższe sąsiedztwo;

  • Określenie parametrów uczenia sieci – użytkownik może określić tu wartości początkowe parametrów sterujących procesem uczenia: Alfa0, Alfa1, Eps(Alfa), Sąsiedztwo, Eps(Sąsiedztwo) – znaczenie tych parametrów wyjaśnia wstęp teoretyczny i zamieszczony algorytm uczenia dla tego przykładu,

  • Sterowanie procesem uczenia i testowania – użytkownik określa ile kroków (losowań) musi zostać wykonana dla danego etapu uczenia, po typ procesie następuje automatyczne odrysowanie struktury sieci (sieć wag na następnym wolnym obszarze prezentacji); każda epoka może mieć inną liczebność co użytkownik definiuje przed naciśnięciem Ucz sieć; na obszarze po prawej stronie (biały kwadrat na wysokości przycisku Ucz sieć) wizualizowany jest proces losowania punktów z epoki uczącej; poniżej przycisku znajduje się pasek postępu procesu oraz pole informacyjne pokazujące ile pozostało losowań do końca procesu uczenia; użytkownik może przerwać w każdej chwili proces uczenia poprzez wciśnięcie przycisku Ucz sieć który kontekstowo przy trwającym procesie uczenia zmienia swój opis i znaczenia na Stop.

Ekran prezentujący etap określenia figury geometrycznej do rozpoznawania oraz definicji struktury sieci (została określona jako prostokąt o boku sześciu neuronów oraz postawie piętnastu neuronów) znajduje się na poniższym rysunku:

Ekran po dziewięciu krokach uczenia i testowania jest pokazany na kolejnym rysunku:

Zaimplementowany przez nas moduł prezentujący zasadza się na idei samoorganizującej mapie podobieństwa cech, generowanych w sieci neuronowej Kohonena w trakcie procesu uczenia. [15]


      1. Moduł dziewiąty - Samouczenie sieci neuronowej


Moduł prezentuje procesy jakie zachodzą w sieciach neuronowych w czasie przeprowadzanie uczenia bez nadzoru według reguł podanych przez Hebba. Model sieci oparty jest na neuronie posiadającym dwa wejścia przez co można taki neuron zobrazować w postaci punktu na płaszczyźnie układu współrzędnych. W momencie wylosowania punktu odpowiadającego sygnałowi uczącemu następuje pokazanie go na ekranie – duży kwadrat. Następnie obrazowany jest proces samouczenia sieci poprzez odrysowanie starych i nowych wag, uczonych na plus przy pomocy koloru czerwono – czarnego oraz neuronów którym wagi modyfikowane są na minus – kolorem niebieskim.

Moduł zawiera okna gdzie w większej części po lewej stronie umiejscowiony ,jest obszar układu współrzędnych (z naniesionymi osiami współrzędnych) prezentacji neuronów (punkty o współrzędnych odpowiadających wagom neuronów), z prawej strony u góry znajdują się przyciski, pola edycyjne oraz suwak sterujący pracą symulacji procesu samouczenia, z prawej stronie u dołu znajduje się legenda zawierająca informacje o ilości pokazów i neuronów znajdujących się w poszczególnych ćwiartkach płaszczyzny symulacyjnej. Poniższy rysunek obrazuje wygląd ekranu przed rozpoczęciem procesu samouczenia:


Sekcja okna widoczna na poniższym rysunku zawiera następujące parametry udostępnione użytkownikowi celem inicjacji oraz sterowania procesem samouczenia:



Pięć grup elementów udostępnionych dla sterowania procesem symulacji zawiera następujące mechanizmy:



  • Przycisk uruchomienia i zatrzymania symulacji – rozdziela on w sposób operacyjny etap definicji struktury sieci oraz właściwego procesu prezentacji samouczenia

  • Parametry definiujące początkową strukturę sieci – użytkownik określa tu ile neuronów w sieci będzie poddawane procesowi uczenia; przełącznik czy generacja początkowych wartości wag ma odbywać się w przedziale [-2,2] – skupione czy te [-10,10] wokół losowego punktu startowego

  • Informacje o przebiegu samouczenia –  (eta) – parametr określający tempo procesu samouczenia (wielkość zmian wag w kolejnych krokach), iteracje – ilość wykonanych pokazów w procesie samouczenia

  • Określenie sposobu generacji sygnałów uczących – losowe pokazy – generacja sygnału z wybranej arbitralnie ćwiartki układu współrzędnych lub całości udostępnianej do symulacji płaszczyzny (od punktu [-10,-10] do [10,10]), ćwiartka oraz grupa przełączników {1,2,3,4} – pozwala na arbitralne wskazanie ćwiartki w której ma być prezentowany jedynie punkt sygnału uczącego

  • Sterowanie tempem procesu symulacji – umieszczenie suwaka w lewym skrajnym położeniu wyłącza opóźnienie, przesuwanie się w prawą stronę powoduje wzrost przerw pomiędzy kolejnymi krokami symulacji aż do pojawienia się przycisku Krok – prawe skrajne położenie – który umożliwia pracę krokową symulacji; ten element jest widoczny na rysunku poniżej, który zawiera legendę wraz ze statystyką prowadzonego procesu uczenia:

Rysunek następny zawiera krok procesu samouczenia zdefiniowanej sieci neuronowej:

Powyższy moduł prezentuje najistotniejsze cechy procesu samouczenia opartego na regułach Hebba wykorzystujące możliwości nowoczesnego narzędzia programistycznego.

      1. Moduł dziesiąty - Sieć Hopfielda


Pamięcią asocjacyjną nazywamy zdolność sieci do prawidłowego zinterpretowania danych zniekształconych lub niekompletnych. Sieć taka może także usuwać zakłócenia i zniekształcenia różnych sygnałów - także wtedy, gdy stopień „zaszumienia” sygnału wejściowego wyklucza praktyczne użycie jakichkolwiek innych metod filtracji

Moduł prezentuje model sieci Hopfielda pracującej jako pamięć autasocjacyjna.

Zadaniem będzie zapamiętywanie i odtwarzanie prostych obrazów.

Sieć potrafi odtworzyć pierwotny wzorzec na podstawie sygnału silnie zniekształconego lub zakłóconego, działa więc jako pamięć asocjacyjna. Użytkownik podaje sieci ciąg wzorców, a następnie wygenerowany sygnał zbliżony do jednego z tych wzorców.

Zadaniem sieci jest rozpoznanie wybranego wzorca („podobnego” do sygnału na wejściu).

Poniżej prezentujemy ekran początkowy programu – przed wprowadzeniem wzorców przez użytkownika.



Pierwszym krokiem użytkownika przy pracy z programem jest określenie wzorców, które program ma rozpoznawać.

Ciąg wzorców może być generowany przez użytkownika automatycznie lub manualnie.

Przy generacji automatycznej użytkownik ma możliwość określenia czy chce generować ciąg wzorców (przycisk „Generuj wzorce” w górnej części okna programu).



  • losowych

  • ortogonalnych (w stosunku do ostatniego z wprowadzonych wcześniej manualnie wzorców)

  • ortogonalnych z inwersją (w stosunku do ostatniego z wprowadzonych wcześniej manualnie wzorców)

Przy manualnej generacji (klikając na „Numer wzorca” użytkownik ma możliwość wejść do okna edycji wzorca) wzorca użytkownik określa, które punkty w matrycy wzorca są zapalone, a które „wygaszone”. Istnieje też możliwość przepisania znaku z klawiatury bezpośrednio do matrycy - należy w tym celu wprowadzić znak do pola edycyjnego i nacisnąć przycisk „Przepisz”.


Poniżej prezentujemy zrzut okna edycji wzorca.


Za pomocą przycisku „Inwersja” użytkownik ma możliwość wygenerowania wzorca „odwrotnego” od poprzednio wprowadzonego. Check-box „Użyj definicji symbolu” określa czy dany wzorzec jest wykorzystywany przez sieć, czy tez nie.

Dodatkowo użytkownik programu ma możliwość edycji i wprowadzenia zmian na dowolnym ze wzorców (przycisk „Numer wzorca” pod wzorcem) oraz przepisania ciągu wzorców z łańcuchu znaków (przycisk „Przepisz wzorce” w górnej części okna programu ).

Po zbudowaniu ciągu wzorców użytkownik wybiera jeden z nich (klikając dwukrotnie na tym wzorcu) i zaburza go w określonej przez siebie liczbie punktów.

Proces rozpoznawania uruchamiany jest za pomocą przycisku „Rozpoznaj”. Kolejne kroki procesu rozpoznawania obrazu są przedstawiane w matrycach w dolnej części okna programu.

W edytorze w centralnej części ekranu wyświetlane są parametry rozpoznawania – iloczyn skalarny oraz odległość Hamminga (ilość punktów w których sygnały się różnią) pomiędzy zaburzonym wzorcem, a kolejnym krokiem rozpoznawania wzorca.

Poniżej prezentujemy zrzut ekranu, na którym sieć w sposób prawidłowy rozpoznała zaburzony wzorzec.

Sieć może nie być w stanie rozpoznać wzorca w sposób prawidłowy.

Wiąże się to z tzw. efektem „przesłuchów” występującym gdy podane wzorce są do siebie podobne. Przy podobnych wzorcach ślady pamięciowe bardziej nakładają się na siebie. Jeśli jednak są bardzo podobne, to ich zapisy w postaci składników wag poszczególnych neuronów tak bardzo mieszają się, że w gotowej sieci zaczyna być problematyczne prawidłowe odtworzenie któregokolwiek z zapamiętanych obrazów

Dlatego uzasadnione i sensowne jest korzystanie z ciągu wzorców różniących się od siebie w stopniu jak największym. Taką właśnie rolę spełnia generacja ciągu wzorców ortogonalnych – dla takich wzorców sieć wykazuje mniejszą „wrażliwość na podobieństwo wzorców”.

Poniżej zrzut ekranu z sytuacji, gdy rozpoznanie nie zakończyło się powodzeniem

Zjawisko odtwarzania poprawnych obrazów z bardzo mocno zakłóconych wzorców w sieci Hopfilelda zapamiętującej ortogonalne sygnały też ma swoje granice. Jeśli zostanie zniekształcony zbyt mocno - nastąpi bezpowrotna utrata możliwości jego odtworzenia.


Poniżej – prawidłowe rozpoznanie wzorca zakłóconego w 14 punktach – dla wzorców ortogonalnych.

Powyższy moduł prezentuje najistotniejsze cechy sieci Hopfielda pracującej jako pamięć autoasocjacyjna.



  1. Podsumowanie

    1. Wnioski


Opracowana przez nas dydaktyczno - symulacyjna aplikacja komputerowa może być wykorzystywana przez osoby, które prowadzą zajęcia związane z szeroko rozumianą sferą sztucznych sieci neuronowych, stanowić będzie wtedy bardzo pomocny element pokazujący praktyczne aspekty wykładanych zagadnień teoretycznych. Pozwala „namacalnie” przekonać się o możliwościach, różnorodności oraz elementach mających wpływ na konstrukcję, uczenie, testowanie oraz wykorzystywanie sztucznych sieci neuronowych.

Dla osób samokształcących się w temacie sieci neuronowych nasza aplikacja stanowić może bardzo ciekawą ofertę, która z jednej strony pomoże zrozumieć konstrukcję oraz działanie sieci neuronowych zaś z drugiej strony stanowi szeroki pomost pomiędzy wiedzą teoretyczną (zawartą w Pomocy) a praktycznymi aspektami jej implementacji i wykorzystania. Istotą tego mariażu jest skumulowanie w jednym miejscu - programie komputerowym - tych dwu aspektów dydaktyki: wiedzy teoretycznej bezpośrednio przekładającej się na symulację i propozycję praktycznego wykorzystania.


    1. Propozycje dalszej ewolucji programu


Przyszłe rozwijanie naszego programu może być ukierunkowane na następujące ścieżki ewolucji:

  • można wprowadzać do zaimplementowanych modułów nowe parametry w celu bardziej szczegółowego oddania sfery symulacyjnej zagadnienia np. w przypadku konstrukcji sieci Kohonena można dodać bardziej wyrafinowaną funkcję określającą sąsiedztwo;

  • można dodawać nowe zagadnienia, które chcielibyśmy włączyć do kanonu uczenia przy pomocy tej aplikacji np. można dołączyć bardzo ciekawy aspekt dwuetapowego uczenia sieci typu Counter Propagation;

  • wykorzystanie nowszego środowiska programistycznego - może to dać np. efekt bardziej intuicyjnego przedstawienia prezentowanych zagadnień związanych z sieciami neuronowymi;

  • osobnym zagadnieniem jest rozwijanie Pomocy do programu, zarówno poprzez uszczegółowienie istniejących tematów jak i poprzez dodanie nowych.
  1. Literatura


  1. Ryszard Tadeusiewicz, „Sieci Neuronowe”, Państwowa Oficyna Wydawnicza RM 1993

  2. Timothy Masters, „Sieci neuronowe w praktyce”, Wydawnictwa Naukowo – Techniczne 1996

  3. J. Żurada, M. Barski, W. Jędruch, „Sztuczne Sieci Neuronowe”, Wydawnictwo Naukowe PWN 1996

  4. J. Korbicz, A. Obuchowicz, D. Uciński, „Sztuczne Sieci Neuronowe – podstawy i zastosowania”, Akademicka Oficyna Wydawnicza PLJ 1994

  5. W.S. McCulloch, W. Pitts, „A logical calculus of the ideas immanent in nervous activity”, Bulletin of Mathematica Biophysics, No 5, 1943, pp. 115-133

  6. J. von Neumann, „The Computer and the Brain”, Yale Univ. Press, New Haven, 1958

  7. W.K. Taylor, „Computers and the nervous system. Models and analogues in biology”, Cambridge Univ. Press, Cambridge, 1960

  8. F. Rosenblatt, „The perceprton. A theory of statistical separability in cognitive system”, Cornell Aeronautical ab. Inc. Rep. No. VG-1196-G-1, 1968

  9. B. Widrow, M.E. Hoff, „Adaptive switching circuits”, IRE WESCON Convention Record, New York, 1960, pp. 96-104

  10. B. Widrow, „The Original Adaptive Neural Net Broom-Balancer”, Proceedings of 1987 IEEE Int. Symp. on Circuits and Systems, Philadelphia, PA, May 1987 pp. 351-357

  11. M. Minsky, S. Papert, „Perceptrons”, MIT Press, Cambridge 1969

  12. J.A. Anderson, E. Rosenfeld, „Neurocomputing – Foundation of Research“, MIT Press, Cambridge, Mass., 1988

  13. T. Kohonen, „Associative Memory: A System – Theoretical Approch”, Springer – Verlag, Berlin, 1982

  14. T. Kohonen, „Adaptive, associative, and self-organizing functions in neural computing ”, Appl. Opt., 26(23), 4910-4918, 1987

  15. T. Kohonen, „The self-organizing map”, Proc. IEEE, 78, nr 9, 1494-1480, 1990

  16. D.O. Hebb, „The Organization of Behaviour, a Neuropsychological Theory”, Wiley, New York, 1949

  17. D. Rutkowska, M. Piliński, L. Rutkowski, „Sieci Neuronowe, Algorytmy Genetyczne i Systemy Rozmyte“ Wydawnictwo Naukowe PWN 1997

  18. Praca zbiorowa pod redakcją M. Rymarczyka, „Decyzje, Symulacje, Sieci Neuronowe“, Wydawnictwo Wyższej Szkoły Bankowej w Poznaniu 1997

  19. T.L. McClelland, D.E. Rumelhart, and the PDP Research Group, „Paralell Distributed Processing“, MIT Press, Cambrideg, Mass. 1986













1   ...   8   9   10   11   12   13   14   15   16


©operacji.org 2017
wyślij wiadomość

    Strona główna