Uczenie w Sieciach Wielowarstwowych Inteligentne Systemy Autonomiczne Uczenie w Sieciach Wielowarstwowych W oparciu o wykład Prof. Geoffrey Hintona University of Toronto i Dr Kazimierza Duzinkiewicza, Politechnika Gdańska oraz Prof. Włodzisława Ducha Uniwersytet Mikołaja Kopernika Janusz A. Starzyk Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie
Rodzaje uczenia w sieciach neuronowych Uczenie z nauczycielem (supervized) Sieć uczy się przewidywać wyjście przy zadanym wejściu Nauczyciel zapewnia poprawna odpowiedź Uczenie z krytykiem (reinforced) Sieć uczy się odpowiedzi która optymalizuje nagrodę Sygnał nagrody nie zawiera dużo informacji Nagroda przychodzi często z opóźnieniem Uczenie bez nauczyciela (unsupervised) Sieć tworzy wewnętrzną reprezentację wejścia e.g. tworzy klastery; wyodrębnia cechy Skąd 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”).
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 wyjście które jest ważoną sumą jego wejść Celem uczenia jest zminimalizowanie różnicy pomiędzy pożądanym i rzeczywistym wyjściem Jak mierzyć tą różnicę? Czy uaktualniać wagi po każdym uczącym wzorcu? Czemu nie rozwiązać tego analitycznie? Wagi połączeń Wektor wejściowy Neuronowe przybliżenie pożądanego wyjścia
Obliczanie zmian wag (delta rule) Zdefiniuj błąd jako sumę kwadratów odchyleń wyjść na wszystkich danych treningowych: Oblicz pochodna błędu ze względu na wagi Delta rule zmienia wagi proporcjonalnie do sumy pochodnej błędu po wszystkich przypadkach treningowych
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 – ilustracja Perceptron jest w stanie nauczyć się klasyfikacji, jeżeli istnieje hiperpłaszczyzna rozdzielająca wzorce wejściowe. w p1 p2 wzorce wejściowe klasy 1 wzorce wejściowe klasy 2
Pytania?
Uczenie w Sieciach Wielowarstwowych Wykład z Uzupełnieniami
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) Sieć uczy się przewidywać wyjście przy zadanym wejściu Nauczyciel zapewnia poprawną odpowiedź Uczenie z krytykiem (reinforced) Sieć uczy się odpowiedzi która optymalizuje nagrodę Sygnał nagrody nie zawiera dużo informacji Nagroda przychodzi często z opóźnieniem Uczenie bez nauczyciela (unsupervised) Sieć tworzy wewnętrzną reprezentacje wejścia e.g. tworzy klastery; wyodrębnia cechy Skąd 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) Każdy przypadek treningowy zawiera wektor wejścia x i pożądane wyjście y (może by wektor wyjść) Przybliżanie: Pożądane wyjście jest liczbą Klasyfikacja: Pożądane wyjście jest oznaczeniem klasy (w najprostszym przypadku 1 lub 0). Trening zaczyna sie od wyboru przykładowej klasy Przykładowa klasa jest sposobem użycia parametrów, W, żeby przekształcić każdy wektor wejścia, x, w pożądane wyjście y Uczenie zwykłą oznacza dopasowanie parametrów żeby zmniejszyć rozbieżność pomiędzy pożądanym wyjściem a aktualnym wyjściem modelu w każdym 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 sieć nauczyła się zbioru 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 wejściu Jeżeli nie, to na podany na wejście wzorzec sieć odpowie wzorcem wyjściowym odległym od wzorca docelowego, otrzymanego przy podobnym wejściu
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 wyjście które jest ważoną sumą jego wejść Celem uczenia jest zminimalizowanie różnicy pomiędzy pożądanym i rzeczywistym wyjściem Jak mierzyć ta różnicę? Czy uaktualniać wagi po każdym uczącym wzorcu? Czemu nie rozwiązać tego analitycznie? Wagi połączeń Wektor wejściowy Neuronowe przybliżenie pożądanego wyjścia
Motywujący przykład Każdego dnia jesz obiad na stołówce. Twoje posiłki składają sie z ryb, chleba i piwa. Dostajesz po trochu z każdego z nich Kasjer podaje ci tylko całość sumy do zapłacenia Po kilku dniach powinieneś się zorientować ile co kosztuje. Każda cena posiłku daje ci liniowe ograniczenie cen wszystkich porcji :
Dwie metody rozwiązania równań Jedna metoda to rozwiązać układ równań liniowych, jedno równanie na każdy posiłek. Ale potrzebna jest nam metoda którą można użyć w sieciach neuronowych. Ceny porcji sa jak wagi połączeń w neuronach liniowych. Zaczniemy od zgadnięcia wag i później je zmienimy żeby uzyskać lepsze dopasowanie do cen podanych przez kasjera.
Mózg kasjera Cena posiłku = 850 150 50 100 2 5 3 porcje ryby Neuron liniowy Poszukiwane wagi połączeń 150 50 100 2 5 3 porcje ryby porcje chleba porcje piwa
Model mózgu kasjera z dowolnymi wagami początkowymi Cena posiłku = 500 Błąd wyjścia Wzór uczenia: Przy współczynniku =1/35, zmiany wag są +20, +50, +30 Daje to nowe wagi 70, 100, 80 Zauważ że błąd dla chleba wzrósł ale inne błędy zmalały! 50 50 50 2 5 3 porcje ryby porcje chleba porcje piwa
Zachowanie iteracyjnej procedury uczenia Czy zmiana wag zawsze przybliżą wagi do pożądanych wielkości? NIE! Czy procedura uczenia zbiega sie do poprawnego rozwiązania? Tak, jeśli szybkość uczenia stopniowo jest ograniczana w odpowiedni sposób. Jak szybko wagi zbiegają się do ich poprawnych wielkości? Zbieżność może być bardzo powolna jeśli dwie wielkości wejściowe są wysoce skorelowane (na przykład chleb i masło). Czy procedura iteracyjna może być uogólniona na bardziej złożone, wielowarstwowe, nieliniowe sieci? TAK!
Obliczanie zmian wag (delta rule) Zdefiniuj błąd jako sumę kwadratów odchyleń wyjść na wszystkich danych treningowych: Oblicz pochodną błędu ze względu na wagi Delta rule zmienia wagi proporcjonalnie do sumy pochodnej bledu po wszystkich przypadkach treningowych
Przekroje pionowe są parabolami. Przekroje poziome są elipsami. Powierzchnia błędu Powierzchnia błędu zawarta jest w przestrzeni której współrzędnymi są wagi i wartość błędu. Dla liniowego neuronu jest to funkcja kwadratowa. E w1 w2 Przekroje pionowe są parabolami. Przekroje poziome są elipsami.
Uczenie ciągle i grupowe Uczenie ciągłe (on line) zmierza zygzakiem wokół kierunku największego spadku Uczenie grupowe (batch) postępuje w kierunku największego spadku po powierzchni błędu Ograniczenie 1-ej danej treningowej w1 w1 w2 Ograniczenie 2-ej danej treningowej w2
Dodanie progu (bias) Liniowy neuron jest bardziej podatny jeśli dodamy funkcje progową. Możemy uniknąć osobnej zasady uczenia z progiem jak zauważymy że: Próg jest równoważny wadze dodatkowego wejścia które jest zawsze równe 1.
Neurony progowe McCulloch-Pitts (1943) y z Najpierw liczymy ważoną sumę wejść z innych neuronów Następnie wyjście jest 1 jeśli suma ta jest większa od wartości progowej (threshold). 1 1 if y 0 otherwise z próg
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 nauczyć 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 zbieżności perceptronu: Trening neuronu progowego jako klasyfikatora Dodaj dodatkowy komponent o wartości 1 do każdego wektora wejściowego. Waga tego wejścia jest równa ujemnej wartości progu. Możemy teraz zapomnieć o progu. Wybierz wzorce treningowe tak by każdy z nich był wybrany kilkakrotnie Jeśli wyjście jest poprawne, nie zmieniaj wag. Jeśli wyjście jest błędnie równe 0, dodaj wektor wejścia do wektora wag. Jeśli wyjście jest błędnie równe 1, odejmij wektor wejścia od wektora wag. Procedura ta gwarantuje znalezienie poprawnych wartości wag jeśli takowe istnieją.
Czego neurony progowe nie są w stanie zrobić? Neurony binarne nie są w stanie określić czy dwie liczby 1-bitowe sa równe czy nie! Równe: (1,1) 1; (0,0) 1 Rożne: (1,0) 0; (0,1) 0 Te 4 pary wejście-wyjście określają 4 nierówności które nie maja rozwiązania: Przestrzeń wejściowa (nie przestrzeń wag) 0,1 1,1 płaszczyzna wag wyjście =1 wyjście =0 0,0 1,0 Przypadki pozytywne i negatywne nie mogą być rozdzielone liniowo