Uczenie w Sieciach Wielowarstwowych Inteligentne Systemy Autonomiczne Uczenie w Sieciach Wielowarstwowych W oparciu o wyklad Prof. Geoffrey Hintona University of Toronto i Dr Kazimierza Duzinkiewicza, Politechnika Gdanska oraz Prof. Włodzisława Ducha Uniwersytet Mikołaja Kopernika Janusz A. Starzyk Wyzsza Szkola Informatyki i Zarzadzania w Rzeszowie
Metody uczenia sieci neuronowych W korzystaniu z sieci neuronowej można wyróżnić dwa etapy: etap uczenia – w oparciu o przedstawiane sieci dane, sieć uczy się realizować zadanie dla którego została zbudowana etap uogólniania – sieć realizuje zadanie dla którego została zbudowana dla danych które są jej przedstawiane Powinniśmy mieć miary oceny jakości każdego z tych etapów
Metody uczenia sieci neuronowych Istnieje obecnie wiele metod uczenia sieci neuronowych. Nikt dokładnie nie wie ile. Wiele ze znanych metod jest związanych z określonymi topologiami (klasami) sieci Podstawowy podział metod uczenia to rozróżnienie pomiędzy uczeniem z nadzorem (supervised learning) i bez nadzoru (unsupervised learning)
Rodzaje uczenia w sieciach neuronowych Uczenie z nauczycielem (supervized) Siec uczy sie przewidziec wyjscie przy zadanym wejsciu Nauczyciel zapewnia poprawna odpowiedz Uczenie z krytykiem (reinforced) Siec uczy sie odpowiedzi ktora optymalizuje nagrode Sygnal nagrody nie zawiera duzo informacji Nagroda przychodzi czesto z opoznieniem Uczenie bez nauczyciela (unsupervised) Siec tworzy wewnetrzna reprezentacje wejscia e.g. tworzy klastery; wyodrebnia cechy Skad wiadomo czy reprezentacja jest dobra?
Unsupervised learning Uczenie bez nadzoru Unsupervised learning Znajdź interesujące struktury w danych. Uczenie spontaniczne, odkrywanie ciekawych struktur w przestrzeni danych Korelacja zachowań systemu ze zmianą tych struktur Dominuje w okresie niemowlęcym.
Uczenie z nadzorem Supervised learning. Zadaj pytanie – pokaż opis obiektu (wektor własności), porównaj odpowiedź z pożądaną. Uczenie nadzorowane przez nauczyciela – szkolne. Zmiana parametrów wewnętrznych – adaptacja, w przyszłości trzeba robić jak najmniej błędów. Celem nie jest uczenie „na pamięć”, lecz generalizacja.
Reinforcement learning. Uczenie z krytykiem Reinforcement learning. Optymalizacja zysków na dłuższą metę. Np. gry z przeciwnikiem, krytyką jest przegrana lub wygrana na końcu partii. Uczenie z krytykiem lub z „wzmocnieniem” pożądanych zachowań po dłuższym okresie. Uczenie dojrzałe (nabieranie „mądrości”).
Uczenie z nauczycielem (supervised learning) Kazdy przypadek treningowy zawiera wektor wejscia x i porzadane wyjscie y (moze by wektor wyjsc) Przyblizanie: Pozadane wyjscie jest liczba Klasyfikacja: Pozadane wyjscie jest oznaczeniem klasy (w najprostszym przypadku 1 lub 0). Trening zaczyna sie od wyboru przykladowej klasy Przykladowa klasa jest sposobem uzycia parametrow, W, zeby przksztalcic kazdy wektor wejscia, x, w pozadane wyjscie y Uczenie zwykla oznacza dopasowanie parametrow zeby zmniejszyc rozbieznosc pomiedzy pozadanym wyjsciem a aktualnym wyjsciem modelu w kazdym przypadku treningowym.
Uczenie bez nauczyciela (self-organizing) W uczeniu bez nadzoru sieć jest samodzielna Ocenia prezentowane dane, znajduje pewne cechy zbioru danych i uczy się odzwierciedlać te cechy na swoim wyjściu. Czym są dokładnie te cechy, które sieć może nauczyć się rozpoznawać zależy od konkretnego modelu sieci i metody uczenia. Zwykle, sieć uczy się pewnych zwięzłych reprezentacji danych.
Uczenie z nauczycielem Posiadamy pewien zbiór wektorów wejściowych sieci o liczebności Q, które zamierzamy wykorzystać w procesie uczenia sieci Wektory te będziemy nazywać uczącymi wzorcami wejściowymi. Możemy z posiadanych wektorów utworzyć macierz wzorców wejściowych uczących P (patterns)
Uczenie z nauczycielem Dla każdego uczącego wzorca wejściowego posiadamy wektor wyjściowy sieci jakim powinna ona odpowiedzieć - wektor ten nazywamy docelowym wzorcem wyjściowym. Z wektorów tych możemy utworzyć macierz docelowych wzorców wyjściowych T (targets) NN P T
Uczenie z nauczycielem Macierze P oraz T nazywamy zbiorami uczącymi - ich elementami są kolumny wzorców wejściowych oraz docelowych wzorców wyjściowych. Faktycznie sieć na każdy z wzorców wejściowych odpowiada rzeczywistym wzorcem wyjściowym Z wektorów tych możemy utworzyć macierz wzorców rzeczywistych A (answers) NN P A
Proces uczenia z nauczycielem Wektory z wejściowego zbioru uczącego są przedstawiane sieci w pewnej kolejności Jeżeli wyjście sieci jest poprawne, nie dokonywane są żadne zmiany wartości wag i progów Jeżeli wyjście sieci nie jest poprawne, wagi i progi są modyfikowane w taki sposób, aby minimalizować występujące różnice Zmiany wag i progów dokonuje się na ogół przyrostowo, wprowadzając małe poprawki dla każdej pary uczącej z którą związana jest błędna odpowiedź Można zmiany wag i progów wykonywać grupowo, wprowadzając poprawki po pokazaniu sieci całego zestawu uczącego
Proces uczenia z nauczycielem Pełne przejście przez wszystkie wzorce uczące nazywane jest cyklem uczenia (training epoch) Jeżeli po pewnym cyklu uczenia miara wszystkich pojawiających się błędów jest wystarczająco mała, uczenie uznaje się za zakończone - możemy wówczas powiedzieć, że siec nauczyla sie zbióru uczącego z zadowalającą dokładnością Jeżeli nie to uczenie jest kontynuowane – rozpoczynamy kolejny cykl uczenia
Proces uczenia z nauczycielem Proces uczenia z nauczycielem ma trzy fazy: FAZA PREZENTACJI: Przedstawianie sieci kolejnych wzorców wejściowych uczących i obliczanie rzeczywistych wzorców wyjściowych sieci FAZA SPRAWDZENIA: Stwierdzenie, czy wszystkie rzeczywiste wzorce wyjściowe są równe odpowiednim wzorcom wyjściowym docelowym lub jeżeli miara błędów odpowiedzi jest zadowalająco mała lub po przekroczeniu pewnej maksymalnej liczby epok FAZA UCZENIA: Modyfikacja wag i stałych progowych za pomocą odpowiedniej reguły uczenia perceptronu i powrót do fazy 1
Sprawdzenie zdolności uogólniania sieci Po zakończeniu procesu uczenia możemy podawać na wejście sieci wzorce nie pochodzące z uczącego zbioru wejściowego – w ten sposób możemy badać, czy sieć efektywnie uogólnia rozwiązywanie zadania, którego się uczyła na przykładach Jeżeli tak, to na podany na wejście wzorzec powinna ona odpowiedzieć wzorcem wyjściowym równym lub bliskim wzorcowi docelowemu, otrzymanym przy podobnym wejsciu Jeżeli nie, to na podany na wejście wzorzec sieć odpowie wzorcem wyjściowym odległym od wzorca docelowego, otrzymanego przy podobnym wejsciu
Reguła Hebba “Kiedy akson komórki A jest dostatecznie blisko by pobudzić komórkę B i wielokrotnie w sposób trwały bierze udział w jej pobudzaniu, procesy wzrostu lub zmian metabolicznych zachodzą w obu komórkach tak, że sprawność neuronu A jako jednej z komórek pobudzających B, wzrasta.” D. O. Hebb, 1949
Uczenie w neuronach liniowych Neuron ma rzeczywiste wyjscie ktore jest wazona suma jego wejsc Celem uczenia jest zminimalizowanie roznicy pomiedzy pozadanym i rzeczywistym wyjsciem Jak mierzyc ta roznice? Czy uaktualniac wagi po kazdym uczacym wzorcu? Czemu nie rozwiazac tego analitycznie? Wagi polaczen Wektor wejsciowy Neuronowe przyblizenie pozadanego wyjscia
Motywujacy przyklad Kazdego dnia jesz obiad na stolowce. Twoje posilki skladaja sie z ryb, chleba i piwa. Dostajesz po trochu z kazdego z nich Kasjer podaje ci tylko calosc sumy do zaplacenia Po kilku dniach powinienes sie zorientowac ile co kosztuje. Kazda cena posilku daje ci liniowe ograniczenie cen wszystkich porcji :
Dwie metody rozwiazania rownan Jedna metoda to rozwiazac uklad rownan liniowych, jedno rownanie na kazdy posilek. Ale potrzebna jest nam metoda ktora mozna uzyc w sieciach neuronowych. Ceny porcji sa jak wagi polaczen w neuronach liniowych. Zaczniemy od zgadniecia wag i pozniej je zmienimy zeby uzyskac lepsze dopasowanie do cen podanych przez kasjera.
Mozg kasjera Cena posilku = 850 150 50 100 2 5 3 porcje ryby Neuron liniowy Poszukiwane wagi polaczen 150 50 100 2 5 3 porcje ryby porcje chleba porcje piwa
Model mozgu kasjera z dowolnymi wagami poczatkowymi Cena posilku = 500 Blad wyjscia Wzor uczenia: Przy wspolczynniku =1/35, zmiany wag sa +20, +50, +30 Daje to nowe wagi 70, 100, 80 Zauwaz ze blad dla chleba wzrosl ale inne bledy zmalaly! 50 50 50 2 5 3 porcje ryby porcje chleba porcje piwa
Zachowanie iteracyjnej procedury uczenia Czy zmiana wag zawsze przybliza wagi do porzadanych wielkosci? NIE! Czy procedura uczenia zbiega sie do poprawnego rozwiazania? Tak, jesli szybkosc uczenia stopniowo jest ograniczana w odpowiedni sposob. Jak szybko wagi zbiegaja sie do ich poprawnych wielkosci? Zbieznosc moze byc bardzo powolna jesli dwie wielkosci wejsciowe sa wysoce skorelowane (na przyklad chleb i maslo). Czy procedura iteracyjna moze byc uogolniona na bardziej zlozone, wielowarstwowe, nieliniowe sieci? TAK!
Obliczanie zmian wag (delta rule) Zdefiniuj blad jako sume kwadratow odchylen wyjsc na wszystkich danych treningowych: Oblicz pochadna bledu ze wgledu na wagi Delta rule zmienia wagi proporcjonalnie do sumy pochodnej bledu po wszystkich przypadkach treningowych
Przekroje pionowe sa parabolami. Przekroje poziome sa elipsami. Powierzchnia bledu Powierzchnia bledu zawarta jest w przestrzeni ktorej wsporzednymi sa wagi i wartosc bledu. Dla liniowego neuronu jest to funkcja kwadratowa. E w1 w2 Przekroje pionowe sa parabolami. Przekroje poziome sa elipsami.
Uczenie ciagle i grupowe Uczenie ciagle (on line) zmierza zygzakiem wokol kierunku najwiekszego spadku Uczenie grupowe (batch) postepuje w kierunku najwiekszego spadku po powierzchni bledu Ograniczenie 1-ej danej treningowej w1 w1 w2 Ograniczenie 2-ej danej treningowej w2
Dodanie progu (bias) Liniowy neuron jest bardzej podatny jesli dodamy funkcje progowa. Mozemy uniknac osobnej zasady uczenia z progiem jak zauwazymy ze: Prog jest rownowazny wadze dodatkowego wejscia ktore jest zawsze rowne 1.
Neurony progowe McCulloch-Pitts (1943) y z Najpierw liczymy wazona sume wejsc z innych neuronow Nastepnie wyjscie jest 1 jesli suma ta jest wieksza od wartosci progowej (threshold). 1 1 if y 0 otherwise z prog
Warstwowe sieci jednokierunkowe - perceptrony Warstwowe sieci jednokierunkowe zostały nazwane perceptronami przez Franka Rosenblatta i Charlesa Wightmana 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 uporządkowanie warstw. Połączenia pomiędzy neuronami poszczególnych warstw są jednokierunkowe i skierowane 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 Jednowarstwowe sieci jednokierunkowych są często nazywane perceptronami prostymi
Perceptrony proste Realizowane przetwarzanie
Perceptron prosty progowy 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 Algorytm modyfikacji wag i progu podał Rosenblatt Rosenblatt udowodnił, ż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
Proces uczenia perceptronu - uczenie zadania klasyfikacji Uczenie perceptronu prostego prowadzi się metodą z nauczycielem (pod nadzorem) Argumentem funkcji aktywacji jest iloczyn skalarny dwóch wektorów w i p
Perceptron prosty progowy – istota zadania klasyfikacji 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
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 – ilustracja Perceptron jest w stanie nauczyc sie klasyfikacji, jeżeli istnieje hiperpłaszczyzna rozdzielająca wzorce wejściowe. w p1 p2 wzorce wejściowe klasy 1 wzorce wejściowe klasy 2
Procedura zbieznosci perceptronu: Trening neuronu progowego jako klasyfikatora Dodaj dodatkowy komponent o wartosci 1 do kazdego wektora wejsciowego. Waga tego wejscia jest rowna ujemnej wartosci progu. Mozemy teraz zapomniec o progu. Wybierz wzorce treningowe tak by kazdy z nich byl wybrany kilkakrotnie Jesli wyjscie jest poprawne, nie zmieniaj wag. Jesli wyjscie jest blednie rowne 0, dodaj wektor wejscia do wektora wag. Jesli wyjscie jest blednie rowne 1, odejmij wektor wejscia od wektora wag. Procedura ta gwarantuje znalezienie poprawnych wartosci wag jesli takowe istnieja.
Czego neurony progowe nie sa w stanie zrobic? Neurony binarne nie sa w stanie okreslic czy dwie liczby 1-bitowe sa rowne czy nie! Rowne: (1,1) 1; (0,0) 1 Rozne: (1,0) 0; (0,1) 0 Te 4 pary wejscie-wyjscie okreslaja 4 nierownosci ktore nie maja rozwiazania: Przestrzen wejsciowa (nie przestrzen wag) 0,1 1,1 plaszczyzna wag wyjscie =1 wyjscie =0 0,0 1,0 Przypadki pozytywne i negatywne nie moga byc rozdzielone liniowo