• Nie Znaleziono Wyników

Badanie algorytmów i struktur sieci neuronowych

N/A
N/A
Protected

Academic year: 2021

Share "Badanie algorytmów i struktur sieci neuronowych"

Copied!
6
0
0

Pełen tekst

(1)

KATEDRA SYSTEMÓW MULTIMEDIALNYCH

Inteligentne Systemy Decyzyjne

Ćwiczenie nr 3:

Badanie algorytmów i struktur sieci neuronowych

Opracowanie: dr inż. Andrzej Kaczmarek

1. Wprowadzenie

Sieci neuronowe są narzędziem matematycznym służącym do modelowania procesów i przetwarzania informacji. Ich stworzenie zostało zainspirowane biologicznym systemem nerwowym. Choć znane już w pierwszej połowie XX wieku, popularność zyskały wraz z rozwojem komputerów. Sieci neuronowe najczęściej stosowane są w zadaniach związanych z predykcją i klasyfikacją danych. Podstawową i elementarną częścią sztucznej sieci neuronowej jest pojedynczy neuron (Rys. 1).

Rys. 1. Elementarny model neuronu.

Neuron może posiadać dowolną liczbę wejść, z których każde ma przypisaną odpowiednią wagę. W ogólności wielkości te mogą być zmienne w czasie, mówimy wtedy o adaptacyjnych sieciach neuronowych. Wartości wag wpływają pośrednio na stan neuronu, co określane jest mianem jego aktywności:

i i i

x

w

s

Aktywność neuronu to wartość pośrednio związana z jego wartością wyjściową. Zależność ta przedstawia się w postaci funkcji f nazywanej funkcją aktywacji neuronu. Funkcje te można podzielić

(2)

na trzy zasadnicze grupy:

 progowe – wartość na wyjściu przybiera jeden z dwóch poziomów (0/1 lub -1/1)

 liniowe – wartości wyjściowe zmieniają się proporcjonalnie względem wartości wejściowych  nieliniowe – wartości funkcji zmieniają się nieliniowo

Rys. 2. Przykładowe funkcje aktywacji neuronu.

Modelowanie złożonych zadań, odbywa się poprzez zwielokrotnianie pojedynczych neuronów. Neurony te formują tak zwane warstwy, z których połączenia powstaje sieć. Najprostsza sieć neuronowa składa się z warstwy neuronów wejściowych i warstwy neuronów wyjściowych, gdzie każde z wyjść warstwy wejściowej połączone jest z wejściami warstwy wyjściowej. Jednak typowe sieci neuronowe składają się z co najmniej jednej dodatkowej warstwy pośredniczącej, zwanej warstwą ukrytą.

(3)

zadania struktury, każdy neuron powinien posiadać przypisaną wagę. Ustalanie odpowiednich wartości wag dla wszystkich neuronów, a tym samym ustalenie żądanych odpowiedzi sieci

neuronowej na konkretne pobudzenia odbywa się w procesie treningu sieci. Metody treningu można podzielić na dwie zasadnicze grupy: z nauczycielem/nadzorem i bez nauczyciela/nadzoru. Sieci wykorzystujące trening bez nauczyciela określane są często mianem samoorganizujących. Prostsza w użyciu, a tym samym bardziej popularna jest metoda treningu z nadzorem (Rys. 3).

Rys. 3. Schemat metody treningu sieci neuronowej z nadzorem.

W takim przypadku do treningu sieci neuronowej konieczne jest przygotowanie odpowiednio dużego zbioru danych wraz z oczekiwanymi odpowiedziami sieci. Istnieje wiele algorytmów

minimalizujących błąd trenowanej sieci, jednak nawet dla zbioru uczącego, nie zawsze odpowiedź sieci jest w 100% poprawna. Charakter odpowiedzi sieci określa się analizując pobudzone neurony na jej wyjściu. Przykładowo, jeżeli sieć posiada 5 neuronów w warstwie wyjściowej, z których każdy może znajdować się w 2 możliwych stanach (pobudzony/niepobudzony), liczba klas które mogą zostać w ten sposób opisane sięga 32. Częściej jednak, stosuje się podejście, gdzie każdy z neuronów warstwy wyjściowej przyporządkowany jest do odpowiadającej mu klasy. Stworzona w ten sposób sieć staje się bardziej rozbudowana, jednak znacznie upraszcza to proces analizy odpowiedzi. Ze względu na topologie, sieci neuronowe można podzielić na 2 grupy. Pierwsza grupa to sieci ze sprzężeniem zwrotnym, gdzie występują połączenia wsteczne między warstwami. Druga grupa to sieci jednokierunkowe, gdzie dany sygnał przechodzi przez każdy neuron jednokrotnie. Taka właśnie sieć jest przedmiotem badań w omawianym ćwiczeniu.

2. Cel i przebieg ćwiczenia

Celem ćwiczenia jest zbadanie, jak struktura sieci neuronowej i parametry treningu wpływają na skuteczność rozpoznawania przez sieć neuronową dźwięków dziesięciu instrumentów muzycznych. W ćwiczeniu wykorzystywane są dwa skrypty w Matlabie. Pierwszy z nich o nazwie trening.m służy do treningu sieci neuronowej zgodnie z parametrami zdefiniowanymi w nagłówku tego skryptu.

Wytrenowana sieć jest zapisywana w pliku siec.mat. Skrypt trening.m wywołuje przed swoim zakończeniem skrypt testuj.m (może on być również wywoływany niezależnie), który na podstawie

(4)

danych z pliku siec.mat wyświetla na ekranie wyniki klasyfikacji. Parametry dźwięków instrumentów muzycznych wykorzystywane w procesie klasyfikacji są zapisane w pliku parametry.mat. Liczba instrumentów wynosi 10, zatem liczba neuronów w warstwie wyjściowej też wynosi 10. Na wejście sieci podawane są wektory składające się z 48 parametrów, wobec czego sieć neuronowa posiada 48 wejść. Wartości parametrów są normalizowane do przedziału [-1, 1]. Na wyjściu sieci znajduje się 10 neuronów, każdy odpowiadający jednemu rozpoznawanemu instrumentowi, stąd jednoznacznie wynika struktura sieci bez warstwy ukrytej.

Wektory zapisane w pliku parametry.mat dzielone są na dwie części: wektory uczące i testowe parametr podział w skrypcie trening.m oznacza jaka część tej bazy danych jest używana do treningu. Wstępnie jest ustalony jako 0.5. W procesie treningu oczekiwaną odpowiedź sieci stanowi wektor zawierający same zera i jedną jedynkę na wyjściu neuronu skojarzonego z rozpoznawaną klasą instrumentów. Wynikiem klasyfikacji jest instrument skojarzony z neuronem o największej wartości na wyjściu sieci. Ustawienie w nagłówku skryptu testuj.m wartości zmiennej wykresy na 1 sprawi, ze będą rysowane wykresy przedstawiające odpowiedzi neuronów wyjściowych sieci na wszystkie wektory testujące.

UWAGA 1: Ze względu na losowy charakter inicjacji wag sieci neuronowej, przy wszelkich

badaniach sieć neuronową należy trenować trzykrotnie, a następnie brać pod uwagę średni wynik (średnia arytmetyczna lub mediana – wybór należy uzasadnić; wyboru należy dokonać po próbach z siecią bez warstw ukrytych).

UWAGA 2: Katalog roboczy należy ustawić jako c:\isd\cw7. Do tego katalogu należy zapisać

potrzebne skrypty i dane, które są dostępne na portalu katedralnym (Instrukcje do zajęć) w pliku

isd-7.zip.

UWAGA 3: Po każdej modyfikacji skrypt należy zapisać. Pierwszą niezbędną modyfikacją, po

której możliwy będzie trening sieci jest wpisanie jednej z 6 dostępnych funkcji aktywacji (poslin,

purelin, satlin, satlins, logsig lub tansig) w wierszu:

funkcja_wyjsciowa = {}; %np. { 'funkcja3' }

UWAGA 4: Wykres wykonany kolorem niebieskim oznacza błąd średniokwadratowy dla zbioru

treningowego (uczącego), natomiast wykonany kolorem zielonym oznacza błąd średniokwadratowy dla zbioru testowego.

UWAGA 5: Trening kończy się po 1000 krokach (obliczeń gradientu), które tutaj noszą nazwę

epok, lub po 10 krokach wzrastającego błędu dla zbioru testowego, lub po osiągnięciu określonej wartości błędu (np. 0.0001).

(5)

UWAGA 6: Trainrp - funkcja służąca do treningu, wykorzystana w niniejszym ćwiczeniu uaktualnia

wartości wag zgodnie z algorytmem propagacji wstecznej. Może służyć trenowaniu jakiejkolwiek sieci przy założeniu że wejścia sieci, wagi i funkcje aktywacji są różniczkowalne. Każda z wartości obliczana jest na podstawie poniższej zależności:

)

(

*

.

sign

gx

deltaX

dX 

gdzie wszystkie wartości deltaX inicjalizowane są wielkością delta0, a gX oznacza wartość gradientu. W każdym kroku iteracji elementy deltaX zostają zmodyfikowane. Jeżeli w kolejnym kroku iteracji gX zmienia znak na przeciwny, element deltaX zostaje zmniejszony o wartość delta_dec. W sytuacji kiedy znak elementu gX nie uległ zmianie, wartość wagi deltaX jest powiększana o delta_inc.

3. Zadania

3.1 Określić optymalną strukturę sieci neuronowej, zapewniającą najlepszą skuteczność klasyfikacji dźwięków instrumentów muzycznych. Modyfikacji podlegają: liczba warstw ukrytych sieci, liczba neuronów w każdej warstwie ukrytej oraz funkcje aktywacji neuronów w warstwach ukrytych i wyjściowej. Badania należy ograniczyć do sieci bez warstwy ukrytej, z jedną warstwą ukrytą i z dwiema warstwami ukrytymi. Badaniu podlegają następujące funkcje aktywacji neuronu: poslin, purelin, satlin, satlins, logsig i

tansig, które zobrazowano na Rys. 2. Eksperymenty należy przeprowadzić według kroków:

 znaleźć dwie najlepsze funkcje aktywacji warstwy wyjściowej dla sieci bez warstwy ukrytej

 do tych dwóch sieci dodać warstwę ukrytą z 24 neuronami i dobrać do nich dwie najlepsze funkcje aktywacji (spośród 6) – funkcje te należy wykorzystać w następnych krokach (wyniki mogą się różnić od wyników z poprzedniego kroku)

 dla najlepszej sieci z poprzedniego punktu zbadać wpływ liczby neuronów w warstwie ukrytej na wyniki (2 próby: w dół i w górę o kilka neuronów)

 do najlepiej wytrenowanej sieci dodać drugą warstwę ukrytą z 15 neuronami i dobrać do niej funkcję aktywacji (spośród dwóch uzyskanych w kroku 2)

 dla najlepszej sieci znaleźć optymalną liczbę neuronów w drugiej warstwie ukrytej (2 próby: w dół i w górę o kilka neuronów)

3.2 Zmodyfikować domyślne parametry treningu najlepszej sieci z zadania 1 (bez warstwy ukrytej, z jedną warstwą lub z dwoma) w celu dalszej poprawy osiąganych wyników. Modyfikacji podlegają dwa parametry: delt_inc, delt_dec. (4 próby, zmiany rzędu 0.1 przy zachowaniu warunków: delt_inc>1.0, delt_dec<1.0). Ich znaczenie, jak również wykorzystywany algorytm treningu umieszczono w sekcji uwag.

(6)

3.3 Dla najlepszej sieci z poprzednich zadań sprawdzić, jak na wyniki klasyfikacji wpływa sposób wyboru wektorów do klasyfikacji (tylko sprawdzające, tylko uczące, uczące i sprawdzające razem). W tym celu należy uruchamiać skrypt testuj.m z odpowiednio ustawioną wartością zmiennej tryb w nagłówku tego pliku. Po zakończeniu ustawić tryb = 2.

3.4 Dla najlepszej sieci z zadań 3.1 i 3.2 zbadać, jak stopień udziału wektorów uczących w wektorach ogółem wpływa na skuteczność treningu. Badania przeprowadzić dla trzech wartości parametru podział: 0.1, 0.5 i 0.9 (skrypt trening.m).

4. Opracowanie

4.1 W sprawozdaniu należy zamieścić wyniki przeprowadzonych eksperymentów, opisać wpływ zbadanych parametrów struktury sieci i parametrów treningu na skuteczność klasyfikacji oraz przedstawić wartości parametrów pozwalające uzyskać najlepsze wyniki rozpoznawania.

4.2 Dlaczego takie, a nie inne wartości zbadanych parametrów (w szczególności funkcje aktywacji) okazały się optymalne?

4.3 Jak liczba warstw (neuronów) w sieci i liczba wektorów uczących wpływają na czas trwania treningu sieci?

4.4 Dlaczego sam proces klasyfikacji (skrypt testuj.m) trwa znacznie krócej, niż trening sieci? (opisać sposób działania sieci neuronowej, czyli w jaki sposób po podaniu na jej wejście wektora X uzyskuje się na jej wyjściu wektor Y).

4.5 Dlaczego właściwym sposobem pracy z sieciami neuronowymi jest wykorzystywanie innych wektorów do treningu sieci, a innych do testowania skuteczności klasyfikacji?

5. Literatura

[1] Hertz J. et al, 1995, “Wstęp do teorii obliczeń neuronowych”, WNT, Warszawa 1995. [2] Korbicz J., Obuchowicz A., Uciński D., 1994, “Sztuczne sieci neuronowe. Podstawy i

zastosowania”, Akademicka Oficyna Wydawnicza PLJ, Warszawa 1994.

[3] Tadeusiewicz R., 1993, “Sieci neuronowe”, Akademicka Oficyna Wydawnicza RM, Warszawa, 1993.

[4] Żurada J., Barski M., Jędruch W., 1996, “Sztuczne sieci neuronowe”, PWN, Warszawa 1996.

Cytaty

Powiązane dokumenty

Oba algorytmy optymalizują (minimalizują) tą samą funkcję celu. Uzyskanie takich samych rozwiązań dwoma algorytmami zwiększa prawdopodobieństwo, że otrzymana

„hybrydowego” (algorytm symulowanego wyżarzania SW + algorytm genetyczny AG) do optymalizacji elektroenergetycznych struktur sieci promieniowych w celu określenia

Do modelu numerycznego można wprowadzać zmiany i modyfikacje w celu minimalizacji tych rozbieżności, dopasowanie modelu numerycznego do modelu fizycznego można

Przy bardzo dużych tłumieniach będących do skompensowania ze względu na dużą rozpiętość sieci kaskaduje się w praktyce wiele wzmacniaczy rozdzielczych z ich

1.2.7 Algorytm uczenia perceptronu (Simple perceptron learning algorithm, SPLA).. Jest to podstawowy

podczas dynamiki osiągane jest minimum (być może lokalne!) funkcji energetycznej w skończonym czasie. Wykorzystamy dynamikę asynchroniczną sieci do znajdowania rozwiązania

Sieci rekurencyjne Autoasocjator Hopfielda Zadania Przeliczenia.. Wstęp do sieci neuronowych, wykład 10

podczas dynamiki osiągane jest minimum (być może lokalne!) funkcji energetycznej w skończonym czasie. Wykorzystamy dynamikę asynchroniczną sieci do znajdowania rozwiązania