Temat: Sztuczne Sieci Neuronowe Instrukcja do ćwiczeń przedmiotu INŻYNIERIA WIEDZY I SYSTEMY EKSPERTOWE Dr inż. Barbara Mrzygłód KISiM, WIMiIP, AGH mrzyglod@ agh.edu.pl
1 Wprowadzenie Sztuczne sieci neuronowe to struktury matematyczne, których zasada działania jest uproszczonym odwzorowaniem działania ludzkiego mózgu. Sztuczna sieć neuronowa składa się z zespołu powiązanych ze sobą komórek (neuronów) równolegle przetwarzających informacje. Rysunek 1 Model sztucznego neuronu Neuron posiada określoną ilość sygnałów wejściowych x 1 - x i,, z którymi powiązane są wagi połączeń synaptycznych w 1 -w i. Neuron posiada również wartość progową aktywacji w 0, dla której sygnał wejściowy x 0 =1 (tzw. bias). Neuron oblicza ważoną sumę swoich wejść, a wyznaczony w ten sposób poziom pobudzenia s staje się argumentem funkcji przejścia (funkcji aktywacji), która oblicza wartość wyjściową neuronu. Mnożenie sygnałów wejściowych przez wagi synaptyczne jest odpowiednikiem naturalnego procesu wzmacniania lub osłabiania impulsów przez synapsy. s w x w i Funkcja aktywacji decyduje o możliwościach uczenia się neuronu lub rozpoznawania przez niego wzorców. Wykaz najpopularniejszych nieliniowych funkcji aktywacji został przedstawiony w Tabela 1. Modyfikacja wartości wag synaptycznych za pomocą odpowiedniego algorytmu, umożliwia uczenie sztucznego neuronu. Współczynniki wagowe stanowią źródło wiedzy, inteligencji neuronu. Im większa jest wartość wagi przypisanej do połączenia danej zmiennej wejściowej, tym dana zmienna jest istotniejsza [10]. Tabela 1. Wykaz najpopularniejszych nieliniowych funkcji aktywacji 0 n i 1 i y f(s) (1) Funkcja progowa (unipolarna dyskretna) Funkcja sigmoidalna (unipolarna ciągła) Funkcja signum (bipolarna dyskretna) Funkcja tangesoidalna (bipolarna ciągła) 0 y 1 gdy gdy s 0 s 0 1 y 1 exp( s) 1 y 1 gdy gdy s 0 s 0 1 exp( s) y 1 exp( s)
Sieć neuronowa składa się z połączeń wielu neuronów ułożonych w warstwy. Warstwa pierwsza to warstwa wejściowa, która nie wykonuje żadnych obliczeń, a jej zadanie ogranicza się do podawania sygnału wejściowego na kolejne warstwy. Są warstwy pośrednie (tzw. ukryte). Ilość warstw ukrytych zależy od stopnia złożoności modelowanej funkcji. Większość istniejących rozwiązań wykorzystuje jedną warstwę ukrytą. Zazwyczaj każdy neuron warstwy poprzedniej połączony jest ze wszystkimi neuronami warstwy następnej. Neurony w ramach jednej warstwy nie są ze sobą połączone. Warstwa wyjściowa to warstwa zwracająca wynik działania sieci dla analizowanych parametrów wyjściowych. Przesyłanie sygnałów w sieci, najczęściej odbywa się w kierunku od wejścia do wyjścia - bez sprzężeń zwrotnych. Istnieje wiele typów i rodzajów sieci neuronowych, różniących się między sobą strukturą i zasadami działania, najpopularniejszą jest architektura sieciowa związana z koncepcją wielowarstwowego perceptronu (MLP Multi Layer Perceptron). Rysunek 2 Model jednowarstwowej sieci neuronowej Odpowiednio zaprojektowane sieci neuronowe potrafią samodzielnie sformułować zależności występujące pomiędzy parametrami zjawiska podczas procesu uczenia, na podstawie empirycznych przypadków. Proces uczenia jest procesem iteracyjnym, powtarzanym wielokrotnie, krok po kroku, którego zasadniczym celem jest optymalizacja parametrów sieci, tj. współczynników wagowych. Rysunek 3 Cel uczenia: wartości wyjściowe sieci mają być zgodne z wartościami rzeczywistymi (zawartymi w zbiorze uczącym)
Każda ze zmiennych wprowadzanych na wejściu sieci początkowo dostaje losowo przydzieloną wagę, czyli siłę jej wpływu na wartość zmiennej wyjściowej. Współczynniki wagowe ustalane są w procesie uczenia, co stanowi źródło wiedzy, inteligencji neuronu. Im większa jest wartość wagi, tym dana zmienna jest istotniejsza. Rysunek 4 Schemat procesu uczenia sieci neuronowej Odległość pomiędzy rzeczywistą a pożądaną odpowiedzią sieci jest miarą błędu używaną do korekcji wag sieci. Typowym przykładem jest uczenie sieci wielowarstwowej algorytmem wstecznej propagacji błędu; każdy neuron lokalnie zmniejsza swój błąd stosując metodę spadku gradientu. W procesie uczenia cały zbiór danych empirycznych dzielony jest na trzy podzbiory, które odpowiadają za określone czynności: Zbiór uczący modyfikacja wag; Zbiór testowy bieżące monitorowanie procesu uczenia; Zbiór walidacyjny ocena sieci po zakończeniu uczenia. Rysunek 5 Podział zbioru danych empirycznych Głównym sposobem korzystania z sieci neuronowej jest tworzenie modeli, czyli sformalizowanej struktury, odwzorowującej pewien proces, czy zjawisko. Jedną z bardzo istotnych kwestii jest odpowiedni zestaw danych empirycznych opisujących dane zjawisko.
2 Na proces budowy modelu składają się następujące etapy: 1. określenie zmiennych objaśniających i zmiennych objaśnianych; 2. wybór typu i określenie struktury sieci neuronowej; 3. uczenie sieci neuronowej; 4. ocena modelu sieci. Różnorodność istniejących typów sieci neuronowych, a także duża liczba parametrów (wielkość sieci, sposób uczenia, dobór funkcji aktywacji) jest często przyczyną trudności przy wyborze najlepszego rozwiązania. STATISTICA Automatyczne Sieci Neuronowe (SANN) może wspomóc użytkownika w realizacji najistotniejszych etapów konstruowania sieci, umożliwia zastosowanie najnowocześniejszych architektur sieci i metod uczenia.
Ćwiczenie Ad.1. określenie zmiennych objaśniających i zmiennych objaśnianych; Do wykonania ćwiczenia wykorzystano zestaw danych empirycznych opisujących eksperyment: wpływ parametrów obróbki cieplnej (czas i temperatura wyżarzania izotermicznego) na wybrane własności żeliwa ADI o określonym składzie chemicznym. Zmiennymi wejściowymi (objaśniającymi) były: T i temperatura przemiany izotermicznej, t i czas przemiany izotermicznej, Zmienne zależne (objaśniane) to: R m - wytrzymałość na rozciąganie, A 5 - wydłużenie, HRC - twardość. Dane eksperymentalne, zawarte w pliku analizani-mo.sta należy wczytać do programu STATISTICA. Będą stanowiły podstawową wiedzę do uczenia i weryfikowania sieci neuronowej. Ad.2. wybór typu i określenie struktury sieci neuronowej; Do określenia szczegółowej, a zarazem optymalnej, architektury sieci, wykorzystano program STATISTICA i jego moduł Automatyczne Sieci Neuronowe. Po wywołaniu go z menu głównego Data Mining/Automatyczne Sieci Neuronowe, wybieramy typ zadania dla sieci neuronowej.
Zadania regresyjne sieć ma za zadanie przewidzieć wartość zmiennej objaśnianej tak dobrze jak to możliwe (zmienna objaśniana jest wtedy w skali ilościowej) Wybór zmiennych w programie: Można zmienić proporcje podziału zbioru danych na próbki: uczącą, testową i walidacyjną
Automatyczne tworzenie sieci neuronowej Neurony liniowe (MLP) minimalnie (3) maksymalnie (10) neuronów w ukrytych warstwach wygeneruj 20 różnych wariantów sieci wybierz 5 najlepszych, Funkcja błędu: suma kwadratów różnic między wartością oczekiwaną a wartością rzeczywistą Ad.3. Uczenie sieci Zbiór danych, opisujących modelowane zjawisko, został podzielony na zbiór uczący (70%), walidacyjny (15%) i testowy (15%). Na etapie uczenia sieci wykorzystywany jest zbiór uczący oraz zbiór walidacyjny, dzięki któremu możemy kontrolować przebieg uczenia przez sprawdzanie stopnia wytrenowania neuronów. W rzeczywistości uczenie obejmuje dwie fazy: dobór wag dla zbioru uczącego i testowanie wag na próbkach ze zbioru walidacyjnego. Modyfikacja wartości wag trwa do momentu osiągnięcia minimum błędu aproksymacji lub gdy błąd w zbiorze walidacyjnym zaczyna rosnąć. Sieć poprawia swoje działanie wyłącznie w oparciu o dane ze zbioru uczącego zatem jeśli w trakcie uczenia zaobserwujemy, że spadek błędu walidacyjnego zatrzymał się, lub też błąd ten zaczyna rosnąć, to świadczy to, że sieć zaczęła zbytnio dopasowywać się do danych uczących i traci zdolność do generalizacji wyników uczenia. Ostateczna postać modelu (nauczonego za pomocą zbioru uczącego i sprawdzonego za pomocą zbioru walidacyjnego) jest dodatkowo testowana za pomocą zbioru testowego. Funkcja błędu jest sumą kwadratów odchyleń między wartością zadaną a wyjściem sieci (SOS). Po zakończeniu procesu uczenia rozpoczyna się proces testowania z wykorzystaniem zbioru testowego, który zawiera wartości nie wykorzystywane wcześniej w procesie uczenia sieci.
Wynik uczenia: Mamy 5 najlepszych znalezionych typów sieci neuronowych. Jak widać nie wszystkie mają tę samą liczbę neuronów w warstwie ukrytej. Do dalszej analizy wybieramy sieć o najlepszych parametrach (opcja: wybór sieci). Parametry wybranej sieci: Nazwa sieci MLP 2-9-3 Jakość (uczenie) 0,973678 Jakość (testowanie) 0,959685 Jakość (walidacja) 0,925851 Błąd (uczenie) 290,9976 Błąd (testowanie) 1573,894 Błąd (walidacja) 1694,737 Algorytm uczenia BFGS 199 Funkcja błędu SOS Aktywacja (ukryte) Wykładnicza Aktywacja (wyjściowe) Liniowa podane błędy (uczący, walidacyjny i testowy) dotyczą całkowitego błędu sieci obliczonego jako średnia kwadratów reszt dla wszystkich zmiennych wyjściowych. metoda uczenia: BFGS (Broyden-Fletcher-Goldfarb-Shanno); funkcja błędu: SOS Sum of Square (suma kwadratów). liczba wykazywana w opisie zastosowanego algorytmu uczenia wskazuje w której epoce nastąpiło zakończenie uczenia sieci. W przypadku sieci MLP2-9-3 zakończenie uczenia nastąpiło w 199 epoce.
Ad. 4. Ocena modelu sieci Na karcie SANN Wyniki, analiza: mamy możliwość dokonania analizy sieci a) Przewidywania Analiza i porównanie numeryczne wyników: tych eksperymentalnych (zmienna zależna) i tych które proponuje sieć (wyjścia) dla każdej lub wybranej próby (uczącej, testowej, walidacyjnej). Po wciśnięciu przycisku predykcja, dla każdego analizowanego wyjścia (tu np. Rm, HRC, A5), wyświetlany jest arkusz z wartościami przekazanymi jako dane uczące (Zm.zal) oraz wynikami obliczonymi przez skonstruowaną i nauczoną sieć (Wyjście). Wyniki te można wzbogacić o obliczenie różnic pomiędzy tymi wartościami dla poszczególnych przypadków, itd. b) Wykresy Opracowane wyniki można analizować również poprzez przedstawienie ich graficznie na wykresach. Zakładka wykresy daje nam możliwość wykonania ich dla dowolnej konfiguracji parametrów. Np. porównanie opracowanego modelu z danymi eksperymentalnymi.
c) Szczegóły W dziale szczegóły możemy dokonać analizy wybranych parametrów statystycznych opisujących sieć (wsp. korelacji, statystyki predykcji, itd.) oraz wyświetlić wagi połączeń pomiędzy poszczególnymi neuronami, jakie zostały ustalone w procesie uczenia dla danej sieci.
d) Przewidywania dla nowych danych W oparciu o zaprojektowaną i nauczoną sieć można dokonać procesu wnioskowania, dla nowych danych. Ad. 5. Przeprowadź następujące analizy: porównanie wyników wartości własności oszacowanych z wykorzystaniem zbudowanego modelu sztucznej sieci neuronowej z wynikami rzeczywistymi; opracowanie wykresów obrazujących wyznaczone zależności zarówno dla modelu jak i danych rzeczywistych i porównanie; testowanie sieci dla nowych danych.