Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Systemy wspomagania decyzji

Podobne prezentacje


Prezentacja na temat: "Systemy wspomagania decyzji"— Zapis prezentacji:

1 Systemy wspomagania decyzji
Sieci wielowarstwowe Sieci rekurencyjne (Hopfielda, Hamminga)

2 (ang. multi-layer, feedforward)
Sieci wielowarstwowe jednokierunkowe (ang. multi-layer, feedforward) Sieć wielowarstwową tworzą neurony ułożone w wielu warstwach, przy czym oprócz warstwy wejściowej i wyjściowej istnieje co najmniej jedna warstwa ukryta. Czasami sieć taka określa się mianem perceptronu wielowarstwowego.

3 Ogólny schemat uczenia sieci neuronowej z nauczycielem (ang
Ogólny schemat uczenia sieci neuronowej z nauczycielem (ang. supervised)

4 Jednowarstwowa i jednokierunkowa sieć
N=liczba wejść K=liczba wyjść Dla wygody progi (bi) włączamy w powyższej sumie jako wagi odpowiadające impulsowi x0=1. Tak więc wk,0=bk.

5 Jednowarstwowa sieć jest opisana przez macierz wag, W=[wi,j]:
gdzie wi,j jest wagą pomiędzy j-tym wejściem a i-tym neuronem. Czasami – dla wygody i jednolitości opisu – macierz wag może zawierać także progi. Będą one wtedy umieszczone w macierzy jako pierwsza kolumna:

6 Jednowarstwowa sieć perceptronowa
Sieć jednowarstwową jednokierunkową uczymy metodą analogiczną do algorytmu, które opisywaliśmy dla pojedynczego perceptronu. Jak pamiętamy do uczenia musimy mieć dany ciąg uczący gdzie x(t) oraz d(t) są w ogólnym przypadku wektorami: Przebieg uczenia jest następujący: podajemy na wejście sieci kolejny wektor wejściowy x(t), obliczamy wartości na wyjściu y1,…,yK, a następnie porównujemy z wartościami których oczekujemy, czyli d(t)=[d(t)1,…,d(t)K]. Na tej podstawie modyfikujemy wagi (patrz dalej).

7 Jeżeli x=[x1,…,xN] oraz d=[d1,…,dK] oznaczają odpowiednio aktualny wektor uczący i wektor żądanych odpowiedzi, to modyfikacja wg algorytmu perceptronowego, przy założeniu, że funkcja aktywacji jest unipolarna (f(s)=1 lub 0) : Tak naprawdę chodzi tu o to, że modyfikacja jest tylko wtedy, gdy di≠yi. W tym przypadku wykonujemy w+hx lub w-hx. Zauważmy, że gdy w perceptronie jako funkcji aktywacji użyjemy funkcji bipolarnej (f(s)=+1 lub -1), to formuła na modyfikację, Dwi,j, będzie następująca

8 Przykład Rozważmy jednowarstwową sieć perceptronów jak na rysunku poniżej. Składa się ona z N=2 normalnych wejść (x0=1 odpowiada progowi) oraz K=3 wyjść. W przykładzie użyto funkcji bipolarnej (f(s)=±1).

9 Ciąg uczący składa się z następujących trzech (T=3) par
Jeżeli dla wygody dołączymy do wektorów wejściowych wartość sygnału dla progu (x0=1), to ciąg będzie miał postać Przyjmujemy, że macierz wag (zwykła i rozszerzona o progi) na początku mają postać

10 Krok 1. Bierzemy parę i obliczamy:

11 Mamy więc dla wektora x(1) następujące wartości na wyjściach
Jeżeli porównamy teraz ten wynik z oczekiwanym, czyli d(1): to widzimy, że w tym kroku tylko wagi prowadzące do neuronu numer 3 będą zmienione

12 Ostatecznie, po pierwszym kroku („przepuszczenie” przez sieć pierwszego wektora z ciągu uczącego) macierz wag (zawierająca w pierwszej kolumnie progi) ma postać Wykonując dalsze obliczenia (podając kolejne dwa wektory) i w razie potrzeby wykonując dalsze epoki otrzymujemy ostatecznie następującą macierz wag (Pamiętajmy: pojedynczy wiersz o numerze „i” zawiera wagi dla połączeń prowadzących do neuronu o numerze „i”.)

13 Sieci neuronowe w MATLAB-ie
MATLAB jest komputerowym środowiskiem do obliczeń numerycznych. Pierwotnie powstał jako pakiet wspomagający obliczenia w algebrze liniowej, stąd posiada ogromne możliwości operacji na macierzach. Jego nazwa nawiązuje do tych źródeł (MATLAB od Matrix Laboratory). Obecnie jest to jednak wszechstronne środowisko obliczeniowe oferujące możliwości obliczeń w praktycznie każdej dziedzinie metod numerycznych. Niezwykle cenną rzeczą w MATLAB-ie są tzw. toolbox-y, czyli wyspecjalizowane pakiety do obliczeń i zastosowań w konkretnych obszarach. Jednym z takich pakietów jest Neural Network.

14 Podstawowe funkcje aktywacji neuronów – nazwy zgodne z pakietem Neural Network MATLAB-a
hardlim = funkcja unipolarna (Heaviside’a) purelin = funkcja liniowa, f(s)=s logsig = funkcja sigmoidalna

15 Standardowa symbolika używana w opisie neuronów w MATLAB-ie.
Dla pojedynczego neuronu nie ma w zasadzie potrzeby używania dla wag notacji z podwójnym indeksem w1,j. Można posługiwać się pojedynczym indeksem i oznaczać wagi przez wj.

16 Przykład (neuron liniowy)
Ciąg uczący składa się z czterech par, Q=4: Wejście: Wyjście: Wagi początkowe i próg:

17 Komendy MATLAB-a P=[1 2 2 3; 2 1 3 1]; T=[-100 50 50 100];
Przygotowanie tablic z danymi. P=wejścia, T=oczekiwane wartości na wyjścia. P=[ ; ]; T=[ ]; net=newlin(P,T); W=[1 2]; b=[0]; net.IW{1,1}=[1 2]; net.b{1}=0; sim(net,P); net=train(net,P,T) Komenda tworząca nowy neuron liniowy. Obiekt jest zapisany do zmiennej net. Ustawienie początkowe wag i progu (nie jest konieczne). Uczenie neuronu (z nauczycielem – T). Obliczenie co zwraca sieć (symulacja). Na razie sieć jest tylko zainicjalizowana – nie była uczona.

18 Przykład Problem funkcji logicznej OR

19 Podstawowa idea przy konstrukcji procedury uczenia sieci wielowarstwowej jednokierunkowej jest oparta o minimalizacje funkcji błędu. Dla danej pary uczącej Definiujemy błąd sieci gdzie y=(y1,…, yK) są aktualnymi odpowiedziami sieć dla zadanego wektora wejściowego x=(x0, x1,…, xN). Funkcja błędu zależy w dość skomplikowany sposób od wszystkich wag: Na przykład aby obliczyć yk stosujemy sygnały wyjściowe pierwszej warstwy v1,…,vM jako wejścia do drugie warstwy:

20 Tak zdefiniowana funkcję błędu chcemy w kolejnych krokach minimalizować. Jedną z procedur jest metoda najszybszego spadku (prosa gradientowa), która wymaga policzenia gradientu funkcji E(W), czyli w praktyce wszystkich pochodnych cząstkowych względem Jeżeli następnie wstawimy te pochodne do metody najszybszego spadku, to otrzymamy procedurę modyfikowanie wag, która nazywana jest w sieciach neuronowych metodą wstecznej propagacji błędu. Podstawowa idea wstecznej propagacji błędów jest taka. Dla warstwy wyjściowej znamy korekty wag, gdyż znamy oczekiwane wyjście. Zatem Dla warstwy ukrytej nie znamy błędów, bo nie znamy oczekiwanych wartości na wyjściach neuronów z tej warstwy. Dlatego używamy średniej wartości błędów z warstwy wyjściowej z wagami, które odpowiadają połączeniom danego neuronu ukrytego z wszystkimi neuronami warstwy wyjściowej. Zatem

21 Jeżeli funkcja aktywacji neuronów w sieci jest typu sigmoidalnego, to
oraz jej pochodna czyli w skrócie

22 Jednowarstwowa sieć ciągłych perceptronów:
J  liczba sygnałów wejściowych K  liczba sygnałów wyjściowych

23 Uczenie sieci jednowarstwowej sieci ciągłych perceptronów  reguła delta
Dla funkcji sigmoidalnej zachodzi f’(s)=f(s)(1-f(s)), zatem f’(sk)=f(sk)(1-f(sk))=ok(1-ok). Stąd mamy:

24 Dla każdej epoki obliczamy skumulowany błąd
Trenowanie sieci uważamy za skończone, gdy po danej epoce całkowity skumulowany błąd jest mniejszy od przyjętej tolerancji błędu:

25

26 Metoda wstecznej propagacji błędu
Dla neuronów z sigmoidalną funkcją aktywacji mamy f’(sk)=f(sk)(1-f(sk))=yk(1-yk), więc

27 Metoda wstecznej propagacji błędu z członem momentum
Do standardowej poprawki Dw dodajemy człon, który zawiera współczynnik oznaczany najczęściej przez a. Współczynnik ten uzależnia wartość nowej wagi nie tylko od aktualnej jej wartości, ale też od wartości w kroku jeszcze wcześniejszym: Ogólnie działanie czynnika momentum jest widoczne na płaskich odcinkach funkcji celu, jak również w pobliżu minimum lokalnego. Dzięki temu często możemy przyspieszyć proces uczenia.

28 Komendy MATLAB-a net=newp([-2 2;-2 2],1); P=[1 1 0 0; 1 0 1 0];
Tym razem użyjemy perceptronu a nie neuronu liniowego. Dlatego funkcja tworzącą sieć będzie newp. net=newp([-2 2;-2 2],1); P=[ ; ]; T=[ ]; net=train(net,P,T) sim(net,P)

29 (wycena wartości nieruchomości)
Przykład (wycena wartości nieruchomości) Wykorzystamy przykładowe dane zapisane w pliku house_dataset.mat. Zawiera on dane na temat runku nieruchomości. Plik ten zawiera dwie tablice: houseInputs oraz houseTargets. Dane wejściowe zawierają 506 przykładowych wektorów, każdy o 13-tu elementach opisujących cechy danej nieruchomości. Z kolei tablica houseTargets zawiera 506 elementów (macierz 1x506), które są wartościami nieruchomości dla odpowiadających im zestawów parametrów z tablicy houseInputs. load house_dataset size(houseInputs) size(houseTargtes) houseInputs(:,1), houseTargets(1,1) net = newff(houseInputs,houseTargets,20); net = train(net,houseInputs,houseTargets);

30 Sieci rekurencyjne

31 Sieci rekurencyjne W dotychczas omawianych sieciach nie rozważaliśmy przypadku, w którym sygnał otrzymany na wyjściu trafiał powtórnie na wejścia sieci. Taki obieg sygnału nazywamy sprzężeniem zwrotnym, a sieci w których to występuje nazywamy sieciami rekurencyjnymi. Najbardziej znane sieci rekurencyjne to: sieć Hopfielda siec Hamminga sieć RTRN (ang. Real Time Recurrent Network) sieć Elmana sieć BAM (ang. Bidirectional Associative Memory)

32 Przykład sieci rekurencyjnej
S, f w11 w12 w13 w21 w22 w23 w31 w32 w33 y1 y2 y3 Na rysunku widać jednowarstwową sieć ze sprzężeniem zwrotnym. Widać, że wyjścia z poszczególnych neuronów mogą być także kierowane na wejścia (tych samych jak i innych neuronów). Na rysunku nie zaznaczono sygnałów wejściowych, x1, x2, x3, gdyż są one wprowadzane do sieci tylko raz.

33 Model sieci Hopfielda (n=3)
w12 w13 w21 w23 w31 w32 y1 y2 y3 -1 1 Klasyczna sieć Hopfielda nie posiada sprzężenia neuronu z samym sobą, tzn. waga takiego połączenia jest równa zero, wii=0. Dlatego często na rysunkach z tymi sieciami nie jest w ogóle rysowane połączenie i—i.

34 Klasyczna sieć Hopfielda jest siecią jednowarstwową składającą się z neuronów połączonych każdy z każdym z wyjątkiem sprzężenia neuronu samego ze sobą. Dlatego zakładamy, że odpowiednie wagi są zerowe: dla Ponadto zakładamy, że wagi tej sieci są symetryczne Zatem waga łącząca neuron j-ty z i-tym jest taka sama, jak waga łącząca i-ty z j-tym. Funkcja aktywacji w klasycznej sieci Hopfielda jest dwustanowa (np. bipolarna {-1, +1} lub unipolarna {0,+1}).

35 Sposób funkcjonowania sieci Hopfielda jest odmienny od dotychczas poznanych modeli sieci jednokierunkowych. Po pierwsze w trybie uczenia (czyli dobóru wag) jednorazowo przypisuje się odpowiednie wartości (nie stosujemy procedur iteracyjnych jak np. wsteczna propagacja). W trybie odtworzeniowym (po nadaniu wag) sygnał wejściowy inicjuje pobudzenie sieci, która dzięki mechanizmowi sprzężenia zwrotnego wielokrotnie przyjmuje na swoje wejście zmodyfikowany sygnał pierwotny, aż do ustabilizowania odpowiedzi. Ta ustabilizowana wartość jest traktowana jako wynik działania sieci. W trybie odtworzeniowym sygnał wielokrotnie przechodzi przez sieć aż do ustabilizowania się odpowiedzi, tzn. do momentu w którym sygnał nie ulega już dalszej zmianie. Ta ustabilizowana odpowiedź jest przyjmowana jako wynik działania sieci.

36 Dobieranie wag w sieci Hopfielda
Jedną z metod uczenia sieci Hopfielda jest uogólniona metoda Hebba. Zgodnie z tą regułą wagi definiowane są następująco gdzie jest ciągiem wektorów uczących, a n jest liczbą neuronów w sieci. Taki tryb uczenia sprawia, że wagi przyjmują wartości wynikające z uśrednienia wielu próbek uczących. Niestety ta prosta reguła nie daje zbyt dobrych rezultatów, gdyż pojemność sieci przy takim sposobie uczenia stanowi tylko 13,8% liczby neuronów. Ponadto prowadzi do licznych przekłamań. Dlatego częściej stosuje się metodę pseudoinwersji.

37 Dobieranie wag w sieci Hopfielda (c.d.)
W zapisie macierzowym wzory na wagi wg uogólnionej reguły Hebba można zapisać następująco gdzie I jest macierzą jednostkową (jedynki na przekątnej, poza nią zera), X jest macierzą której kolumnami są wektory ciągu uczącego, XT oznacza transponowanie macierzy X, stała T jest liczbą wektorów uczących). Jak już wiemy funkcje aktywacji w sieci Hopfielda są dwustanowe. W praktyce używa się funkcji bipolarnej {-1, 1} lub unipolarnej {0, 1}. Podobnie jest z wektorami sygnałów: składają się z współrzędnych bipolarnych lub unipolarnych. Jeżeli stosujemy wektory unipolarne, to uogólniona reguła Hebba (formuła powyżej lub poprzedni slajd) przyjmie postać

38 (regułą Hebba dla sieci Hopfielda)
Przykład (regułą Hebba dla sieci Hopfielda) Dany jest zbiór wektorów (wzorców) kodowanych bipolarnie ({-1,+1}) Stosując omawiane już wzory na macierz wag gdzie T=3, n=5 otrzymujemy Podkreślmy, że uzyskana macierz wag została zbudowana wg uogólnionej reguły Hebba. Dalej pokażemy inny sposób nadawania wag dla sieci Hopfileda.

39 Metoda pseudoinwersji dla sieci Hopfielda
Punktem wyjścia w tej metodzie jest założenie, że przy właściwie dobranych wagach wij każdy wzorzec x(t) z ciągu uczącego podany na wejście generuje na wyjściu samego siebie, prowadząc zatem do natychmiastowego stanu ustalonego. Mamy więc warunek Wx(t)=x(t) co można zapisać tak: Jeżeli wprowadzimy pomocniczą macierz X, której kolumnami są kolejne wektory uczące to warunki Wx(t)=x(t) można zapisać w postaci następującego równania macierzowego gdzie W jest macierzą wag o wymiarach n x n, a X jest macierzą prostokątną o wymiarach n x T.

40 Rozwiązanie takiego układu (pamiętajmy, że macierz X jest dana a szukana jest macierz W) jest następującej postaci gdzie X+ oznacza tzw. pseudoinwersję (pseudoodwrotność) macierzy X. Jeżeli wektory uczące są liniowo niezależne, to macierz W może być wyrażona przy pomocy zwykłej odwrotności (nie musimy używać pseudoinwersji):

41 Przykład Użyjemy sieci Hopfielda do rozpoznawania trzech cyfr: 1, 4 i 7. Cyfry będą definiowane na matrycy 3x4 Ciąg uczący tworzymy wg kodowania: biały piksel = -1; czarny piksel = +1.

42 Wektory kodujące cyfry 1, 4, 7
Wektory zapisane kolumnowo i macierz X zawierająca te wektory jako kolejne kolumny

43 Mnożymy macierz transponowaną XT przez macierz X i otrzymujemy macierz kwadratową (wymiaru takiego, jakiego była liczba wektorów uczących – w tym przypadku 3). Teraz macierz XTX musimy odwrócić (jest to możliwe, gdyż wektory x(1), x(2), x(3) są liniowo niezależne).

44 Po wykonaniu mnożeń macierzy uzyskamy ostatecznie macierz wag W=X(XTX)-1XT dla przykładowej sieci. Jest to macierz kwadratowa wymiaru 12x12 (liczba wejść do sieci – w przykładzie jest to związane z liczbą pikseli matrycy).

45 0,404762 0,190476 0,02381 -0,02381 0,619048 -0,04762 -0,38095 0,047619 0,119048 -0,11905

46 Opis działania sieci Hopfielda w trybie odtworzeniowym
Część liniowa i-tego neuronu w iteracji k+1: Oczywiście wyjście z części sumacyjnej jest jak zwykle poddawane działaniu funkcji aktywacji f, więc ostatecznie sygnał wyjściowy jest następujący Zakładamy, że wszystkie neurony mają taką samą funkcję aktywacji.

47 Wprowadzając jak zwykle pomocniczy sygnał polaryzacji y0(k)=1, możemy zapisać powyższe wzory w sposób bardziej zwarty następująco gdzie sumowanie zaczyna się od zera, a k=0,1,… (kolejne iteracje pętli pobudzenia). Ponadto należy jeszcze wprowadzić sygnał wejściowy początkowy, który pobudza sieć, tak więc mamy przy czym x0=1.

48 Sieć jest ustabilizowana, jeżeli zachodzi warunek
dla każdego neuronu, i=1,…,n. Oczywiście zachodzi podstawowe pytanie: czy powyższy warunek stabilizacji zostanie osiągnięty? W ogólnym przypadku warunek stabilizacji może oznaczać, że wartości sygnałów yi(k) dążą (w sensie granicy matematycznej) do jakiejś wartości co sugerowałoby słabszy warunek zakończenia obliczeń, a mianowicie

49 Okazuje się, że w ogólności taka stabilność nie musi zachodzić
Okazuje się, że w ogólności taka stabilność nie musi zachodzić. Wszystko zależy od wartości wag wij oraz od postaci funkcji aktywacji. Także wybór wektorów sygnałów początkowych może mieć wpływ na końcową stabilność. W każdym razie dalej zajmiemy się takimi przypadkami, które dają odpowiedzi stabilne. Klaysczna sieć Hopfielda ma funkcję aktywacji typu signum (nieciągła bipolarna) oraz symetryczną macierz wag z zerami na przekątnej: Przy tych założeniach sieć jest stabilna.

50 Przykład (c.d.) Teraz zaszumimy (ang. noise) trzy cyfry: 1, 4 i 7, aby sprawdzić jaka będzie odpowiedź sieci. Obrazy kodujemy wg schematu: biały piksel = -1; czarny piksel = +1.

51 Po kilku iteracjach sieć prawidłowo rozpoznaje cyfrę 1 i cyfrę 4
Po kilku iteracjach sieć prawidłowo rozpoznaje cyfrę 1 i cyfrę 4. Natomiast pojawiają się problemy z rozpoznawaniem zaburzonej cyfry 7. W tym przypadku wektor kodujący zaburzoną cyfrę, czyli podany na wejście sieci generuje na wyjściu samego siebie. Możemy to zinterpretować tak, że sieć nie rozpoznała zaburzonej cyfry 7. Jest to punkt stały sieci. Oczywiście przykład jest bardzo prosty, gdyż użyliśmy małej matrycy, 3x4. W praktyce musimy stosować większą liczbę pikseli.

52 Przykład Wykorzystamy sieć Hopfielda do zapamiętania i rozpoznawania cyfr 0-9. Wzorcowe cyfry są zdefiniowane na matrycy o wymiarach 7x7 pikseli. Przedstawione są poniżej – zostały ona użyte do uczenia sieci metodą pseudoinwersji. Liczba neuronów sieci jest równa liczbie pikseli matrycy: 7·7=49. W kodowaniu użyto schematu:  → (-1),  → (+1).

53 Pierwszy wiersz – wzorce.
Drugi wiersz – przykładowe zaburzone cyfry poprawnie rozpoznane. Trzeci wiersz – przykładowe obrazy, które nie zostały zakwalifikowane do kategorii z pierwszego wiersza. W przypadku cyfry 2 wydaje się to poprawne (mimo, że zaburzenie jest minimalne, ale dla cyfry 4 raczej uznalibyśmy to z błąd sieci. ` Cyfry wzorcowe Wzorce Rozpoznane Wzorce klasyfikowane do innych kategorii


Pobierz ppt "Systemy wspomagania decyzji"

Podobne prezentacje


Reklamy Google