Wprowadzenie do Sieci Neuronowych Laboratorium 06 Algorytm wstecznej propagacji błędu

Podobne dokumenty
Wprowadzenie do Sieci Neuronowych Laboratorium 05 Algorytm wstecznej propagacji błędu

Uczenie sieci neuronowych i bayesowskich

Wstęp do sieci neuronowych, wykład 03 Warstwy RBF, jednostka Adaline.

Wstęp do sieci neuronowych, wykład 03 Warstwy RBF, jednostka ADALINE.

Sztuczna Inteligencja Tematy projektów Sieci Neuronowe

Zastosowania sieci neuronowych

Wstęp do sieci neuronowych, wykład 02 Perceptrony c.d. Maszyna liniowa.

IMPLEMENTACJA SIECI NEURONOWYCH MLP Z WALIDACJĄ KRZYŻOWĄ

Wstęp do sieci neuronowych, wykład 02 Perceptrony c.d. Maszyna liniowa.

Wstęp do sieci neuronowych, wykład 02 Perceptrony c.d. Maszyna liniowa.

Elementy inteligencji obliczeniowej

Uczenie sieci typu MLP

1. Logika, funkcje logiczne, preceptron.

Podstawy Sztucznej Inteligencji (PSZT)

Wstęp do sieci neuronowych, wykład 04. Skierowane sieci neuronowe. Algorytmy konstrukcyjne dla sieci skierowanych

8. Neuron z ciągłą funkcją aktywacji.

Metody Sztucznej Inteligencji II

Optymalizacja ciągła

Wstęp do sieci neuronowych laboratorium 01 Organizacja zajęć. Perceptron prosty

Wstęp do sieci neuronowych, wykład 6 Wsteczna propagacja błędu - cz. 3

Oprogramowanie Systemów Obrazowania SIECI NEURONOWE

Sieć przesyłająca żetony CP (counter propagation)

Inteligentne systemy decyzyjne: Uczenie maszynowe sztuczne sieci neuronowe

Sieci M. I. Jordana. Sieci rekurencyjne z parametrycznym biasem. Leszek Rybicki. 30 listopada Leszek Rybicki Sieci M. I.

Wprowadzenie do Sieci Neuronowych lista zadań 1

Sztuczne sieci neuronowe Ćwiczenia. Piotr Fulmański, Marta Grzanek

Algorytm wstecznej propagacji błędów dla sieci RBF Michał Bereta

Uczenie się pojedynczego neuronu. Jeśli zastosowana zostanie funkcja bipolarna s y: y=-1 gdy z<0 y=1 gdy z>=0. Wówczas: W 1 x 1 + w 2 x 2 + = 0

Wprowadzenie do Sieci Neuronowych Laboratorium 02 Perceptron prosty cd

Wstęp do teorii sztucznej inteligencji Wykład III. Modele sieci neuronowych.

wiedzy Sieci neuronowe

Najprostsze modele sieci z rekurencją. sieci Hopfielda; sieci uczone regułą Hebba; sieć Hamminga;

Wstęp do sieci neuronowych, wykład 11 Łańcuchy Markova

Zagadnienia optymalizacji i aproksymacji. Sieci neuronowe.

Uczenie sieci radialnych (RBF)

Wstęp do sieci neuronowych, wykład 01 Neuron biologiczny. Model perceptronu prostego.

WYKORZYSTANIE SIECI NEURONOWEJ DO BADANIA WPŁYWU WYDOBYCIA NA SEJSMICZNOŚĆ W KOPALNIACH WĘGLA KAMIENNEGO. Stanisław Kowalik (Poland, Gliwice)

Temat: Sztuczne Sieci Neuronowe. Instrukcja do ćwiczeń przedmiotu INŻYNIERIA WIEDZY I SYSTEMY EKSPERTOWE

Podstawy sztucznej inteligencji

Uczenie Wielowarstwowych Sieci Neuronów o

Sieci neuronowe w Statistica

Wstęp do sieci neuronowych, wykład 9 Sieci rekurencyjne. Autoasocjator Hopfielda

synaptycznych wszystko to waży 1.5 kg i zajmuje objętość około 1.5 litra. A zużywa mniej energii niż lampka nocna.

Inteligentne systemy przeciw atakom sieciowym

Zastosowania sieci neuronowych - automatyka identyfikacja sterowanie

Algorytmy stochastyczne laboratorium 03

Wprowadzenie do Sieci Neuronowych Laboratorium 04 Algorytmy konstrukcyjne dla sieci skierowanych

Wstęp do sieci neuronowych, wykład 12 Wykorzystanie sieci rekurencyjnych w optymalizacji grafowej

Wstęp do sieci neuronowych, wykład 12 Łańcuchy Markowa

Prognozowanie kierunku ruchu indeksów giełdowych na podstawie danych historycznych.

1. Zbadać liniową niezależność funkcji x, 1, x, x 2 w przestrzeni liniowej funkcji ciągłych na przedziale [ 1, ).

Wstęp do sieci neuronowych, wykład 03 Warstwy RBF, jednostka Adaline.

Metoda określania pozycji wodnicy statków na podstawie pomiarów odległości statku od głowic laserowych

Wstęp do Sieci Neuronowych

Optymalizacja systemów

Sieci neuronowe w Statistica. Agnieszka Nowak - Brzezioska

Algorytm grupowania danych typu kwantyzacji wektorów

Metody sztucznej inteligencji Zadanie 1: Perceptron Rosenblatt a w wersji nieliniowej

S O M SELF-ORGANIZING MAPS. Przemysław Szczepańczyk Łukasz Myszor

Zastosowania sieci neuronowych

Podstawy OpenCL część 2

SIECI NEURONOWE Liniowe i nieliniowe sieci neuronowe

Metody sztucznej inteligencji Zadanie 3: (1) klasteryzacja samoorganizująca się mapa Kohonena, (2) aproksymacja sieć RBF.

Projekt Sieci neuronowe

Politechnika Warszawska

Zastosowanie optymalizacji rojem cząstek (PSO) w procesie uczenia wielowarstwowej sieci neuronowej w problemie lokalizacyjnym

Rozpoznawanie obrazów

I EKSPLORACJA DANYCH

Przestrzenie liniowe

KADD Minimalizacja funkcji

Systemy agentowe. Sieci neuronowe. Jędrzej Potoniec

Metody numeryczne I Równania nieliniowe

Wstęp do sieci neuronowych, wykład 9 Sieci rekurencyjne. Autoasocjator Hopfielda

zadania z rachunku prawdopodobieństwa zapożyczone z egzaminów aktuarialnych

Systemy agentowe. Sieci neuronowe. Jędrzej Potoniec

sieci jednowarstwowe w MATLABie LABORKA Piotr Ciskowski

Sztuczne sieci neuronowe

Metody systemowe i decyzyjne w informatyce


3 1 + i 1 i i 1 2i 2. Wyznaczyć macierze spełniające własność komutacji: [A, X] = B

Wstęp do sieci neuronowych, wykład 10 Sieci rekurencyjne. Autoasocjator Hopfielda

Obliczenia iteracyjne

Obrona rozprawy doktorskiej Neuro-genetyczny system komputerowy do prognozowania zmiany indeksu giełdowego

Rozdział 1 Sztuczne sieci neuronowe. Materiały do zajęć dydaktycznych - na podstawie dokumentacji programu Matlab opracował Dariusz Grzesiak

Metody systemowe i decyzyjne w informatyce

wiedzy Sieci neuronowe (c.d.)

Metody Numeryczne Optymalizacja. Wojciech Szewczuk

ROZKŁAD MATERIAŁU DO II KLASY LICEUM (ZAKRES ROZSZERZONY) A WYMAGANIA PODSTAWY PROGRAMOWEJ.

1 Funkcje dwóch zmiennych podstawowe pojęcia

Optymalizacja ciągła

OBLICZANIE POCHODNYCH FUNKCJI.

Sztuczne siei neuronowe - wprowadzenie

Elementy rachunku różniczkowego i całkowego

METODY SZTUCZNEJ INTELIGENCJI 2 Opis projektu

Wstęp do sieci neuronowych, wykład 07 Uczenie nienadzorowane cd.

komputery? Andrzej Skowron, Hung Son Nguyen Instytut Matematyki, Wydział MIM, UW

W naukach technicznych większość rozpatrywanych wielkości możemy zapisać w jednej z trzech postaci: skalara, wektora oraz tensora.

Metody iteracyjne rozwiązywania układów równań liniowych (5.3) Normy wektorów i macierzy (5.3.1) Niech. x i. i =1

Zrównoleglona optymalizacja stochastyczna na dużych zbiorach danych

RÓŻNICZKOWANIE FUNKCJI WIELU ZMIENNYCH: rachunek pochodnych dla funkcji wektorowych. Pochodne cząstkowe funkcji rzeczywistej wielu zmiennych

Transkrypt:

Wprowadzenie do Sieci Neuronowych Laboratorium 6 Algorytm wstecznej propagacji błędu Maja Czoków, Jarosław Piersa 3--6 Powtórzenie. Perceptron sigmoidalny Funkcja sigmoidalna: σ(x) = + exp( c (x p)) () Parametr c odpowiada za nachylenie funkcji; jest zazwyczaj ustalony (c = ). Parametr p odpowiada za progowanie. Zazwyczaj jest pomijany, a w jego miejsce dodawane jest sztuczne wejście zawsze równe + z dodatkową wagą w, która jest objęta uczeniem. Perceptron sigmoidalny o wagach w i na wejściach x i zwraca wartość N out = σ( w i x i ) () Alternatywnie można wartość progu ustalić p =, do sieci dodać N + -sze wejście, które zawsze jest równe + oraz stowarzyszoną z nim wagę w n+, która przejmie funkcję progu. Działanie neuronu jest identyczne. Sigmoida jest funkcją ciągłą i różniczkowalną oraz: Można rozważać, też symetryczną sigmoidę: i= σ (x) = σ(x)( σ(x)). (3) tanh(x) = exp(x) = σ(x) () + exp(x). = = = =....8.6.. -. -3 - - 3 (a) Jeden wymiar parametry c =, c = 3, c = - - - (b) Sigmoida określona na sumie ważonej dwóch zmiennych. - Rysunek : Wykres sigmoidy σ(x) = +exp( c(x)) Podobnie jak w przypadku neuronów progowych, perceptrony z sigmoidalną funkcją aktywującą można łączyć w sieci. Ze względu na ciągłą (i różniczkowalną!) zależność wyjścia od danych można stosować bardziej wyrafinowane (ale i wymagające!) algorytmy uczenia (alg. spadku gradientowego, ang. gradient descent).

w = [ -3. 3. -. 3. -3. -. * * -.] 3. 3... - - - - (a) Portret błędu sieci z progową funkcją aktywacji. 3. 3... - (b) Portret błędu sieci z sigmoidalną funkcją aktywacji. - Rysunek : Portret błędu dla problemu XOR (projekcja na dwa wymiary).. Wsteczna propagacja błędu / backerror propagation Dane: Sieć warstwowa perceptronów o sigmoidalnej funkcji aktywacji. Znane są ilości perceptronów w poszczególnych warstwach (tzn. wymiary tablic z wagami). Ponadto dany jest zestaw uczący zbiór przykładowych danych E i = (E i, E i n) i oczekiwanych odpowiedzi C i dla i =..P (ilość przykładów). UWAGA: wszystkie C i są znormalizowane: C i [.,.9] (dla tanh(): C i [.9,.9]) Wartości wejść nie muszą spełniać tej własności, ale dobrze będzie jeżeli pozostaną ograniczone / lub przeskalowane, jeżeli ich zakres jest za duży. Wynik: Wartości wagi (zestaw tablic!), minimalizujące błąd średniokwadratowy. Funkcja błędu, określa jak bardzo niedostosowana jest sieć do zestawu uczącego ERR(W, E, C) = P P (out(e i ) C i ) () i= Naturalna interpretacja im mniejsza wartość funkcji błędu tym lepiej nauczona sieć. Wniosek algorytm powinien poszukiwać minimum funkcji ERR na przestrzeni wszystkich możliwych konfiguracji wag sieci (już sam wymiar przestrzeni może być gigantyczny, a do tego wagi są liczbami rzeczywistymi!). Oznaczenia η > stała uczenia, w ij waga pomiędzy neuronem itym we wcześniejszej warstwie, a j-tym w następnej σ() funkcja sigmoidalna o i, I i,j wyjście z neuronu i, wejście numer i do neuronu numer j w następnej warstwie, są to te same wartości (choć mogą występować w różnych kontekstach), wejściami do warstwy pierwszej są dane uczące I i, = E j i. E j, C j zestaw uczący i odpowiadający mu poprawny wynik, Ej i [..] więc dane z poza tego przedziału należy znormalizować. Podobnie wynikowa odpowiedź C (...9). UWAGA! Ponieważ sigmoida nie osiąga wartości ani nie należy stosować skrajnych wartości odpowiedzi. Algorytm. w i,j := dla wszystkich wag. Wybierz przykład uczący E z listy przykładów i odpowiadający mu poprawny wynik C. 3. Oblicz wynik działania sieci na E, zapamiętaj go, zapamiętaj również wyniki w warstwach pośrednich o j, sumy ważone in j (wyniki przed zaaplikowaniem funkcji aktywującej) i wejścia do neuronów w danej warstwie I k,j (wejściem do warstwy pierwszej jest przykład, dla warstw wyższych j są nimi wyniki z warstwy poprzedniej k).

Zatem zachodzi: in j = k I k,j w k,j o j = σ(in j ) I j,l = o j Gdzie k jest indeksem neuronu w warstwie poprzedniej, j w warstwie bieżącej, l w warstwie następnej.. Dla wszystkich jednostek i w wyjściowej warstwie wykonaj: Oblicz błąd err i = C i o i Oblicz i = err i σ (in i ) Uaktualnij wagi od jednostek j (poprzednia warstwa) do jednostki i: w j,i = w j,i + η I j,i i = w j,i + η o j err i σ (in i ). Dla wszystkich jednostek j w kolejnych warstwach sieci (schodząc warstwami od przedostatniej do pierwszej): Oblicz błąd err j = l w j,l l Oblicz j = σ (in j ) err j Uaktualnij wagi od jednostki k (wcześniejsza warstwa) do jednostki j: w k,j = w k,j + η I k,j j 6. Online mode: w ij + = w i,j (dla wszystkich wag w sieci) i wróć do. 7. Batch mode: wróć do, po przebiegnięciu wszystkich przykładów wykonaj w ij + = w i,j (dla wszystkich wag w sieci) i rozpocznij przebieganie jeszcze raz. 8. Zakończ po wykonaniu określonej liczby kroków lub osiągnięciu zadowalającego poziomu błędu.3 Algorytm spadku grdientowego Dana niech będzie funkcja f : R n R ciągła i różniczkowalna (istnieją pochodne cząstkowe f x... f x n ). Chcemy wyznaczyć minimum (lokalne) funkcji tj. x R n, takie że dla f(x) f(y) dla y należących do pewnego otoczenia x. Dodatkowo dany niech będzie pewien punkt startowy a R n. Przypomnijmy definicję pochodnych cząstkowych f f(x,.., x i, x i + h, x i+,...x n ) f(x,..., x n ) (x,..., x n ) = lim x i h h (6) Zastanówmy się czym jest f x (a )? Intuicyjnie jest to kierunek, w którą stronę funkcja rośnie zmieniając pierwszą współrzędną, przy pozostałych ustalonych. Mając cały zestaw pochodnych cząstkowych (gradient) mamy dokładny kierunek, w którym funkcja najszybciej rośnie. Szukając minimum należy zatem wybrać zwrot przeciwny i... udać się w jego kierunku.. Rozpocznij w losowym / wybranym a (). Dla każdej współrzędnej i =..n a (k+) i = a (k) i η f x i (a (k) ) 3. Powtarzaj krok Uwagi: W przykładach rozważana jest parabola funkcja posiada dokładnie jedno minimum lokalne (i bardzo ładne wzory do jego analitycznego obliczenia jej celem jest ilustrowanie działania algorytmu). Jeżeli funkcja rozbiega do (minus) nieskończoności algorytm może się zapętlić.

-6 - - 6 8 Rysunek 3: Interpretacja pochodnych cząstkowych. 3 3 3 6-6 - - 6 (a) f(x) = x - - - - -6-6 (b) f(x, y) = x + y 6 Rysunek : Postęp GDA do obliczania minimum funkcji. Trajektoria poszukiwania minimum zależy od punktu startowego. Wybór złego może powodować utknięcie w minimum lokalnym. Zazwyczaj nie ma możliwości stwierdzenia, że jest to minimum lokalne. W takiej sytuacji jednym z sensowniejszych pomysłów jest ponowne uruchomienie algorytmu z innym / losowym punktem startowym. Sugerowane warunki stopu: gdy zmiany będą bardzo małe (poniżej ustalonego progu względnego lub bezwzględnego), po wykonaniu ustalonej liczby iteracji, po osiągnięciu zadowalającej wartości. Parametr η > jest stałą uczenia. Zbyt duża wartość uniemożliwi osiągnięcie minimum (kolejne punkty zaczną przeskakiwać minimum na drugą stronę ), zbyt mały spowoduje powolne działanie. Wartość η można uzmiennić i zmniejszać wraz z postępem obliczeń. (Jeżeli ktoś jeszcze nie spostrzegł...) Wsteczna propagacja błędu jest algorytmem spadku gradientowego. Minimalizowane jest funkcja błędu (nieujemna!). ERR = (out(e i ) C i ) i Dziedziną funkcji jest przestrzeń wszystkich wartości wag. Każda waga jest rzeczywista. Przy x wejściach, trzech warstwach liczących kolejno j,k,l neuronów cała przestrzeń ma wymiar xj + jk + kl (tu już trudniej o gotowe analityczne wzory dla każdej z wag).

Zadania na zajęcia. Zad. przybliżenie funkcji w R Zaimplementuj sieć neuronów (jedno wejście, dwie warstwy ukryte z kilkoma neuronami + jedno wyjście), która będzie się uczyła nieznanej funkcji f : R R. Napisz funkcje, które obliczają σ() i σ () (będą potrzebne przy uczeniu) % sigmoid function function ret = sigm (x) ret =./(+ exp (-x )); oraz % derivative of sigmoid function ret = sigmprime (x) a =./(+ exp (-x )); ret = a.*( - a); zaimplementuj dynamikę sieci skierowanej (sumy ważone można traktować jako mnożenie macierzy przez wektor) function ret = network ( x, wagi ) x = sigm ([x,]* wagi.w ); x = sigm ([x,]* wagi.w ); x3 = sigm ([x,]* wagi.w3 ); ret = x3; wygeneruj dane uczące: pary współrzędna wartość, Uwaga do ściągawki: wykorzystany został strukturo-podobny sposób przechowywania trzech tablic z wagami (W, W, W3) jako pola innej zmiennej. zaimplementuj algorytm wstecznej propagacji function wagi = bep ( EX, EC, wagi ) iters =; eta =.; % Uwaga! w wersji on - line nalezy brac przyklady losowo for t =: iters delta.w = wagi.w *; delta.w = wagi.w *; delta.w3 = wagi.w3 *; for j =: length (EX) % losowy przyklad j = floor ( rand ()* length (EX )) + ; example = EX(j); expected = EC(j); % wyniki posrednie in = [ example,]* wagi.w; in = [ sigm ( in ),]* wagi.w; in3 = [ sigm ( in ),]* wagi.w3; out = sigm ( in3 ); % warstwa wyjsciowa : error3 = expected - out ; delta3 = error3.* sigmprime ( in3 ); % poprawa wag : w += eta * error * input

delta.w3 = delta.w3 + eta.* [ sigm ( in ),] * delta3 ; % Layer error = wagi.w3 (: -,:) * delta3 ; delta = error.* sigmprime ( in ) ; delta.w = delta.w + eta * [ sigm ( in ),] * delta ; % Layer error = wagi.w (: -,:) * delta ; delta = error.* sigmprime ( in ) ; delta. W = delta. W + eta * [ example,] * delta ; % for wszystkie przyklady wagi.w = wagi.w + delta.w; wagi.w = wagi.w + delta.w; wagi.w3 = wagi.w3 + delta.w3; % for iters % function naucz sieć na przykładach uczących: function test () % ilosc neuronow : ( wejscie ), 6 w L, w L, wyjsciowy wym = ; wym = 6; wym3 = ; wym = ; % losowe wagi wagi.w= randn ( wym +, wym ); wagi.w= randn ( wym +, wym3 ); wagi.w3= randn ( wym3 +, wym ); M =; EX = rand (, M )* -; % funkcja celu % C = sin (* EX) + cos (.* EX.^) - EX; % C = (+* EX )./ abs (. - EX ); C = exp ( -( EX ).^); % normalizacja do [.,.9] skalc = (C - min (C )) / ( max (C ) - min (C )) *.8 +.; ; % wagi = bep ( EX, skalc, wagi ); function 3 Zadania programistyczne (projekty) Inne pomysły są jak najbardziej mile widziane. 3. Zadanie Ramię robota Ramię robota składa się z pary sztywnych odcinków (ustalonej długości) połączonych ze sobą regulowanym zawiasem o rozwartości od do 8 stopni tj. (..π). Punkt mocowania ramienia jest ustalony, ale można obracać ramię również w tym punkcie. Ramieniem steruje sieć neuronowa, jej wejściami są współrzędne punktu na płaszczyźnie, w które należy sięgnąć dłonią (para liczb znormalizowanych do [..]). Wyjściem są wartości rozwarcia obu zawiasów (ponownie znormalizowane do [...9]). Sieć należy nauczyć na wygenerowanych danych (np. wylosować pary kątów i analitycznie przeliczyć punkt, w który dłoń trafi). Wielkość sieci, ilość warstw ukrytych, długość ramion, ilość iteracji, sposób reprezentacji... zależna od autora.

3. Zadanie Pong Napisz sieć neuronową sterującą graczem komputerowym w grze Pong / Arkanoid. Danymi do sieci mogą być np. współrzędne piłki, kierunek i zwrot ruchu, prędkość, położenie paletki przeciwnika. Danymi wyjściowmi informacje czy przesunąć własną paletkę w górę, czy w dół (lewo / prawo arkanoid). 3.3 Zadanie 3 Tanks Napisz sieć neuronową sterującą graczem komputerowym w grze Tanks / Worms. Danymi do sieci mogą być np. współrzędne strzelającego działa, współrzędne celu, grawitacja, wiatr (ewentualnie również topografia terenu). Danymi wyjściowymi są kierunek (kąt) oraz siła (prędkość początkowa) strzału. 3. Zadanie Space invaders Napisz sieć neuronową sterującą graczem komputerowym w grze Space Invaders / Galaxian. Danymi do sieci mogą być np. współrzędne statku kosmicznego, współrzędne celów (ewentualnie pocisków lecących na nasz statek). Danymi wyjściowymi mogą być zmiana położenia (lewo, prawo, góra, dół, bez zmian) oraz decyzja czy strzelać. 3. Zadanie Uczenie obrazu Napisz sieć, która uczy się kolorów pikseli grayscale / RGB obrazu zależnie od współrzędnych (x, y) piksela Input: (x,y) piksela (przeskalowane do [,]) + wartości przekształceń sin(x), sin(y), sin(x), sin(y), sin(3x), sin(3y), itd Wynik: wartość piksela, lub kanałów RGB dla piksela (na podstawie zadanego obrazu). Iteracje: miliony.