740 likes | 892 Views
Warstwowe sieci jednokierunkowe - perceptrony. Warstwowe sieci jednokierunkowe zosta ł y nazwane perceptronami przez Franka Rosenblatta i Charlesa Wightmana, którzy jako pierwsi badali je w latach 50 i 60 ubiegłego stulecia. Sieci te mo ż na scharakteryzowa ć w nast ę puj ą cy sposób:.
E N D
Warstwowe sieci jednokierunkowe - perceptrony Warstwowe sieci jednokierunkowe zostały nazwane perceptronami przez Franka Rosenblatta i Charlesa Wightmana, którzy jako pierwsi badali je w latach 50 i 60 ubiegłego stulecia Sieci te można scharakteryzować w następujący sposób: Podstawowym elementem perceptronu jest sztuczny neuron, którego funkcją pobudzania (propagacji) jest funkcją sumy a funkcja aktywacji ma na ogół charakter nieliniowy; może to być jednak również funkcja liniowa Poszczególne neurony sieci ułożone są w warstwy; każdy neuron należy do jednej i tylko jednej warstwy. Neurony należące do jednej warstwy nie są ze sobą połączone
Warstwowe sieci jednokierunkowe - perceptrony Warstwy ułożone są jedna za drugą - określone jest ich uporządkowanie. Połączenia pomiędzy neuronami poszczególnych warstw są asymetryczne (jednokierunkowe) i skierowane zawsze zgodnie z uporządkowaniem warstw Sygnały wejściowe dostarczane są do sieci przez wejścia (warstwę wejściową), umiejscowione przed pierwszą warstwą neuronów Ograniczymy się na początek do rozważenia jednowarstwowych sieci jednokierunkowych. Są one często nazywane perceptronami prostymi
Perceptrony proste Struktury lub
Perceptrony proste Realizowane przetwarzanie Przypadki funkcji aktywacji: przekaźnikowa (perceptron prosty progowy) – zadania klasyfikacji liniowa (perceptron prosty liniowy) – zadania filtracji, predykcji nieliniowa (perceptron prosty nieliniowy) – zadania klasyfikacji, w ograniczonym zakresie aproksymacji (modelowania relacji we-wy)
Perceptron prosty progowy Realizowane przetwarzanie Funkcja przekaźnikowa symetryczna Funkcja przekaźnikowa niesymetryczna
Perceptron prosty progowy gdzie: Wagi warstwy perceptronu prostego można zapisać w postaci macierzy, a progi w postaci wektora
Neuron 1 Neuron k Neuron s Próg Wejście 1 Wejście j Wejście m Perceptron prosty progowy Notacja 1
Neuron 1 Neuron k Neuron s Wejście 1 Wejście 2 Wejście m Wejście 0 - próg Perceptron prosty progowy Notacja 2 (rozszerzona przestrzeń wejść i wag)
Perceptron prosty progowy W perceptronie prostym - poszczególne neurony warstwy są niezależne ponieważ nie istnieją połączenia pomiędzy neuronami warstwy. Można zatem rozpatrywać poszczególne neurony warstwy jako niezależne sieci z m lub m + 1 wejściami (w zależności od notacji). Indeks k można wówczas opuścić- macierz wag staje się wektorem a wektor progów skalarem Notacja 1 Notacja 2
Perceptron prosty progowy Fakty Pojedynczy perceptron jest najprostszą formą sieci neuronowej używanej do klasyfikacji wzorców, które posiadają własność liniowej separowalności tzn. wzorce należące do dwóch różnych klas leżą po przeciwnych stronach hiperpłaszczyzny w przestrzeni atrybutów klasyfikowanych obiektów Pojedynczy perceptron prosty progowy można nauczyć rozpoznawania wzorców należących do dwóch klas. Używając większej liczby neuronów można wykorzystywać perceptron prosty progowy do klasyfikacji wzorców należących do większej liczby klas
Perceptron prosty progowy Fakty Algorytm modyfikacji wag i progu oparty na odpowiedniej regule uczenia podał Rosenblatt (1958, 1962) – zaproponowana reguła uczenia nazywa się regułą perceptronu Rosenblatt'a Rosenblatt udowodnił też, że jeżeli wzorce (wektory) używane do uczenia perceptronu prostego progowego są wybierane z dwóch liniowo separowalnych zbiorów (klas) wówczas algorytm uczenia wykorzystujący regułę perceptronu jest zbieżny – sieć można nauczyć zadania klasyfikacji wzorców do dwóch klas w skończonej liczbie epok
Przykład zadania klasyfikacji: Interesuje nas czy pokazywana litera należy do zbioru liter „C”? – przykład klasyfikacji do dwóch zbiorów Niech: Litery „C” zapisywane w matrycach 4x4 – czy należą do zbioru liter „C”? ... TAK? TAK NIE
W jaki sposób pokazujemy sieci litery ze zbiorów C i nieC? Wejścia do sieci neuronowej: wektory 16 bitowe jedynek (1) i zer (0)
Sieć neuronowa Zewnętrzny obraz rozwiązywania zadania Tak
p n p 1 Jak można opisać zadanie klasyfikacji? Badamy pewien zbiór obiektów (przestrzeń rozważań) – w naszym przykładzie: zbiór dużych liter drukowanych Każdy z obiektów zbioru charakteryzujemy za pomocą n atrybutów lub cech pi , takich jak na przykład ciężar, wysokość, gęstość czy częstotliwość – w naszym przykładzie: 16 atrybutów przyjmujących wartości ze zbioru {0,1} i określanych, czy pole o numerze k (k=1,2, ....., 16) w obszarze zapisu litery jest zajęte zapisem litery czy też nie Każdy z elementów przestrzeni rozważań X może być przedstawiony jako punkt n - wymiarowej przestrzeni tych atrybutów– w naszym przykładzie: jest to przestrzeń 16 wymiarowa
x n x 1 Jak można opisać zadanie klasyfikacji? – c.d. Potrafimy (my ludzie) rozróżniać elementy różnych zbiorów przestrzeni rozważań – w naszym przykładzie potrafimy wskazać, które z pokazywanych liter należą do zbioru dużych liter C drukowanych (np.klasa 1) a które nie należą (np. klasa 0) Klasa 0 Potrafimy znaleźć w n – wymiarowej przestrzeni atrybutów obiektów rozważań hiperpłaszczyznę, która rozdziela interesujący nas zbiór i pozostałe elementy przestrzeni rozważań – w naszym przykładzie: potrafimy znaleźć hiperpłaszczyznę rozdzielającą zbiór dużych liter C drukowanych od innych liter Nie (Duże litery C) Klasa 1 Hiperpłaszczyzna rozdzielająca Duże litery C Równanie hiperpłaszczyzny rozdzielającej
p n Klasa 0 Klasa 1 p 1 p1 w1 y n 0 wn pn Jak można opisać zadanie klasyfikacji? – c.d. Hiperpłaszczyzna rozdzielająca – miejsce geometryczne punktów przestrzeni atrybutów obiektów przestrzeni rozważań dla którego: Możemy policzyć:
Jak można opisać zadanie klasyfikacji? – c.d. Zadanie klasyfikacji: znaleźć taki zbiór wag lub modyfikowalnych współczynników, że wyjście perceptronu jest 1, jeżeli wektor wzorca (sygnał wejściowy) należy do klasy 1, a 0, jeżeli wektor wzorca należy do klasy 0
Proces uczenia perceptronu prostego progowego - uczenie zadania klasyfikacji Uczenie perceptronu prostego prowadzi się metodą z nauczycielem (pod nadzorem) Pożądaną sytuację, jaką chcielibyśmy uzyskać w wyniku procesu uczenia perceptronu progowego można zapisać następującą równością:
Perceptron prosty progowy – istota zadania klasyfikacji Inaczej: Pożądaną sytuację, jaką chcielibyśmy uzyskać w wyniku procesu uczenia można zapisać następującą równością: FA: przekaźnikowa symetryczna FA: przekaźnikowa niesymetryczna
Perceptron prosty progowy – istota zadania klasyfikacji Kiedy proces uczenia doprowadzi do takiej sytuacji? - najpierw przypadek bez progu Argumentem funkcji aktywacji jest iloczyn skalarny dwóch wektorów w i p
Perceptron prosty progowy – istota zadania klasyfikacji Z określenia funkcji aktywacji wynika, że wyjście perceptronu progowego przyjmuje tylko jedną z dwóch wartości "wysoką" lub "niską" i zmienia swoją wartość dla wartości argumentu równej zero, czyli kiedy: gdzie: - kąt pomiędzy wektorem wag a wektorem wzorca wejściowego
Perceptron prosty progowy – istota zadania klasyfikacji Warunki te można odczytać w następujący sposób: Na wyjściu perceptronu progowego pojawia się ,,stan wysoki", jeżeli rzut wektora wzorca wejściowego na kierunek wektora wag jest równy zero lub dodatni Na wyjściu perceptronu progowego pojawia się ,,stan niski", jeżeli rzut wektora wzorca wejściowego na kierunek wektora wag jest ujemny Granicą pomiędzy dodatnimi i ujemnymi rzutami wektorów p na kierunek wektora w jest hiperpłaszczyzna przechodząca przez początek układu współrzędnych i do której wektor w jest ortogonalny
p2 p3 p1 p2 p1 W p4 Hiperplaszczyzna rozdzielająca Perceptron prosty progowy – istota zadania klasyfikacji Ilustracja graficzna
p2 wzorce wej ś ciowe maj ą ce wzorce wej ś ciowe maj ą ce dawa ć wzorce wyj ś ciowe niskie dawa ć wzorce wyj ś ciowe wysokie p1 w Perceptron prosty progowy – istota zadania klasyfikacji Warunek uzyskania pożądanego rezultatu uczenia da się spełnić, jeżeli będzie istniała hiperpłaszczyzna rozdzielająca wzorce wejściowe mające wzorce docelowe wysokie i niskie.
Perceptron prosty progowy – istota zadania klasyfikacji Kiedy proces uczenia doprowadzi do pożądanej sytuacji? - przypadek z progiem Wyjście perceptronu progowego zmienia swoją wartość dla wartości argumentu równej zero, czyli kiedy:
Perceptron prosty progowy – istota zadania klasyfikacji Na hiperpłaszczyznę rozdzielającą można popatrzeć jako na miejsce geometryczne punktów (wektorów) p spełniających określone warunki. W rozważanym uprzednio przypadku (b = 0), można było powiedzieć, że jest to miejsce geometryczne wektorów p ortogonalnych do wektora w(rzut wektorów p na kierunekwektora wag równy zeru). Dla przypadku b 0 wynika, że jest to miejsce geometryczne wektorów p, których rzut na kierunek wektora w przy danym b spełnia warunek:
Hiperpłaszczyzna rozdzielająca p 2 p3 p5 p1 p2 p 1 w p4 Hiperpłaszczyzna Perceptron prosty progowy – istota zadania klasyfikacji Ilustracja graficzna
p2 wzorce wejściowe mające dawać wzorce wyjściowe niskie wzorce wejściowe mające dawać wzorce wyjściowe wysokie p1 w Ponownie: Warunek uzyskania pożądanego rezultatu uczenia da się spełnić, jeżeli będzie istniała hiperpłaszczyzna rozdzielająca wzorce wejściowe mające wzorce docelowe wysokie i niskie.
Jak uzyskać taki rezultat? - Reguła uczenia perceptronu prostego progowego Zajmujemy się problemami liniowo separowalnymi pokażemy w jaki sposób można znaleźć odpowiednie wagi i progi za pomocą reguł uczenia Ogólna reguła modyfikacji wag i progów: lub
Reguła uczenia perceptronu prostego progowego Reguła Rosenblatt'a: Parametr jest nazywany współczynnikiem szybkości uczenia. Nadawana jest mu wartość dodatnia i można nim wpływać na szybkość zbieżności procesu uczenia
Perceptrony proste progowe - algorytm uczenia (jeden z możliwych) Krok 1. Nadaj wagom i progom wartości początkowe; mogą to być wartości losowe lub nadane w sposób celowy; należy jednak przestrzegać zasady, aby nie były to wartości jednakowe oraz by były niezbyt duże Krok 2. Określ wartość współczynnika szybkości uczenia Krok 3. Rozpocznij kolejną epokę uczenia perceptronu prostego Krok 4. Pokaż sieci kolejny i-ty wzorzec wejściowy Krok 5. Oblicz wzorzec wyjściowy rzeczywisty a(:,i) Krok 6. Oblicz wektor błędów odpowiedzi e(:,i) = t(:,i) ‑ a(:,i).
Krok 7. Dla kolejnych neuronów, wykonaj: Perceptrony proste progowe - algorytm uczenia (jeden z możliwych) Jeżeli e(k,i) = 0; weź kolejne k (kolejny neuron) Jeżeli e(k,i) 0; przeprowadź modyfikacje wartości wag i progów według reguły perceptronu; weź kolejne k (kolejny neuron) Krok 8. Jeżeli był to ostatni wzorzec uczący przejdź do kroku 9 Jeżeli nie był to ostatni wzorzec uczący; przejdź do kroku 4
Krok 9. Jeżeli dla wszystkich (wszystkich par uczących, wszystkich neuronów) spełniony był warunek: e(k,i) = 0; zakończ uczenie Jeżeli nie dla wszystkich (wszystkich par uczących, wszystkich neuronów) spełniony był warunek: e(k,i) = 0; przejdź do kroku 3 (lub kroku 2). Perceptrony proste progowe - algorytm uczenia (jeden z możliwych)
Przybornik Neural Network w środowisku MATLAB/Simulink Perceptron prosty progowy Przykład – percept1 Rozważamy prosty problem klasyfikacji – mamy dwuelementowe wektory, które chcemy klasyfikować do dwóch klas. Zbiór uczący liczy cztery wektory, którym przypisane są wzorce docelowe 1 i 0.
Przybornik Neural Network w środowisku MATLAB/Simulink Perceptron prosty progowy Do rozwiązywania tego zadania klasyfikacji użyjemy perceptronu prostego progowego z niesymetryczną funkcją przekaźnikową (odpowiedzi 0 i 1). Sieć będzie składała się z jednego neuronu (klasyfikacja do dwóch klas) o dwóch wejściach (elementy zbioru są dwuelementowe)
Przybornik Neural Network w środowisku MATLAB/Simulink Perceptron prosty progowy Ogólna struktura W przykładzie:
O sposobach definiowania sieci neuronowej w przyborniku Neural Network środowiska MATLAB/Simulink Dodatek 1
Przybornik Neural Network w środowisku MATLAB/Simulink Perceptron prosty progowy Po zdefiniowaniu sieci dla rozważanego przykładu Wprowadzimy do przestrzeni roboczej MATLAB'a bloki zbiorów uczących >> P=[-0.5, -0.5, 0.3, 0.0;-0.5, 0.5, -0.5, 1.0] P =iowaniu -0.5000 -0.5000 0.3000 0 -0.5000 0.5000 -0.5000 1.0000 >> T=[1,1,0,0] T = 1 1 0 0
Przybornik Neural Network w środowisku MATLAB/Simulink Perceptron prosty progowy Zbiór uczący możemy obejrzeć: Określenie zakresu skal >> V=[-2,2,-2,2] V = -2 2 -2 2 Odpowiedzi 0 Odpowiedzi 1 Rysowanie zbioru uczącego >> plotpv(P,T,V)
Przybornik Neural Network w środowisku MATLAB/Simulink Perceptron prosty progowy Prosta decyzyjna po inicjalizacji Inicjalizacja sieci >> init(percept1) Odczytanie wartości wag i progów po inicjalizacji sieci Rysowanie prostej decyzyjnej >> plotpc(IW,b) >> percept1.IW{1} ans = -0.1795 0.7873 >> percept1.b{1} ans = 0.8338 Przepisanie wag i progów do macierzy IW i wektora b >> IW = percept1.IW{1,1} IW = -0.1795 0.7873 >> b = percept1.b{1} b = 0.8338
Przybornik Neural Network w środowisku MATLAB/Simulink Perceptron prosty progowy Odpowiedzi sieci – wzorce wyjściowe rzeczywiste >> A = sim(percept1, P) A = 1 1 1 1 Błędy odpowiedzi >> E = T - A E = 0 0 -1 -1 Były błędy – potrzebna modyfikacja wag i progów >> dIW = learnp([],P,[],[],[],[],E,[],[],[],[],[]) dIW = -0.3000 -0.5000 >> db = learnp([],[1,1,1,1],[],[],[],[],E,[],[],[],[],[]) db = -2
Przybornik Neural Network w środowisku MATLAB/Simulink Perceptron prosty progowy Położenie prostej decyzyjnej po pierwszej epoce uczenia Rysowanie prostej decyzyjnej Nowe wartości wag i progów >> plotpc(IW,b) >> IW = IW + dIW IW = -0.4795 0.2873 >> b = b + db b = -1.1662
Przybornik Neural Network w środowisku MATLAB/Simulink Perceptron prosty progowy Przepisanie wag i progów >> percept1.IW{1,1} = IW; >> percept1.b{1} = b; Odpowiedzi sieci – wzorce wyjściowe rzeczywiste po pierwszej epoce uczenia >> A = sim(percept1, P) A = 0 0 0 0 Po pierwszej epoce uczenia – były błędy; potrzebna modyfikacja wag i progów Błędy odpowiedzi po pierwszej epoce uczenia >> dIW = learnp([],P,[],[],[],[],E,[],[],[],[],[]) dIW = -1 0 >> db = learnp([],[1,1,1,1],[],[],[],[],E,[],[],[],[],[]) db = 2 >> E = T - A E = 1 1 0 0
Przybornik Neural Network w środowisku MATLAB/Simulink Perceptron prosty progowy Położenie prostej decyzyjnej po drugiej epoce uczenia Rysowanie prostej decyzyjnej >> plotpc(IW,b) Nowe wartości wag i progów >> IW = IW + dIW IW = -1.4795 0.2873 >> b = b + db b = 0.8338
>> dIW = learnp([],P,[],[],[],[],E,[],[],[],[],[]) dIW = -0.3000 -0.5000 >> db = learnp([],[1,1,1,1],[],[],[],[],E,[],[],[],[],[]) db = -2 Przybornik Neural Network w środowisku MATLAB/Simulink Perceptron prosty progowy Przepisanie wag i progów >> percept1.IW{1,1} = IW; >> percept1.b{1} = b; Odpowiedzi sieci – wzorce wyjściowe rzeczywiste po drugiej epoce uczenia Po drugiej epoce uczenia – były błędy; potrzebna modyfikacja wag i progów >> A = sim(percept1, P) A = 1 1 1 1 Błędy odpowiedzi po drugiej epoce uczenia >> E = T - A E = 0 0 -1 -1
>> IW = IW + dIW IW = -1.7795 -0.2127 >> b = b + db b = -1.1662 Przybornik Neural Network w środowisku MATLAB/Simulink Perceptron prosty progowy Położenie prostej decyzyjnej po trzeciej epoce uczenia Rysowanie prostej decyzyjnej Nowe wartości wag i progów >> plotpc(IW,b)
>> dIW = learnp([],P,[],[],[],[],E,[],[],[],[],[]) dIW = -1 0 >> db = learnp([],[1,1,1,1],[],[],[],[],E,[],[],[],[],[]) db = 2 Przybornik Neural Network w środowisku MATLAB/Simulink Perceptron prosty progowy Przepisanie wag i progów >> percept1.IW{1,1} = IW; >> percept1.b{1} = b; Odpowiedzi sieci – wzorce wyjściowe rzeczywiste po trzeciej epoce uczenia Po trzeciej epoce uczenia – były błędy; potrzebna modyfikacja wag i progów >> A = sim(percept1, P) A = 0 0 0 0 Błędy odpowiedzi po trzeciej epoce uczenia >> E = T - A E = 1 1 0 0
>> IW = IW + dIW IW = -2.7795 -0.2127 >> b = b + db b = 0.8338 Przybornik Neural Network w środowisku MATLAB/Simulink Perceptron prosty progowy Położenie prostej decyzyjnej po czwartej epoce uczenia Rysowanie prostej decyzyjnej >> plotpc(IW,b) Nowe wartości wag i progów