Wstęp do sieci neuronowych, wykład 6 Wsteczna propagacja błędu - cz. 3 Andrzej Rutkowski, Maja Czoków, Jarosław Piersa Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika 2018-11-05 Projekt pn. Wzmocnienie potencjału dydaktycznego UMK w Toruniu w dziedzinach matematyczno-przyrodniczych realizowany w ramach Poddziałania 4.1.1 Programu Operacyjnego Kapitał Ludzki
1 Xor Robot Rozpoznawanie cyfr LeNet-5 2
Xor Robot Rozpoznawanie cyfr LeNet-5 1 Xor Robot Rozpoznawanie cyfr LeNet-5 2
Xor Robot Rozpoznawanie cyfr LeNet-5 Xor Wejście: x, y {0, 1} Wyjście: x xor y Kod programu
Xor Robot Rozpoznawanie cyfr LeNet-5 Robot Wejście: (x, y) [0, 1] [0, π] Wyjście: (α, β) film błędy uczenia
Xor Robot Rozpoznawanie cyfr LeNet-5 Rozpoznawanie cyfr Wejście: piksele Wyjście: tyle wyjść ile cyfr - największy wygrywa Demo - applet http://www.inf.ed.ac.uk/teaching/courses/inf1- cg/labs/lab6/mcmaster/digit-demo.html
Convolutional Neural Network Xor Robot Rozpoznawanie cyfr LeNet-5 LeNet-5 Rozpoznawanie cyfr odporne na przesunięcia, szumy, zniekształcenia pismo ręczne - baza przykładów MNIST (google: mnist) LeNet-5 Filmy: 1993, 2003, 2013, 2013-2
1 Xor Robot Rozpoznawanie cyfr LeNet-5 2
Przeglądanie zbioru przykładów Poprawianie wag co przykład uczący (online learning) Poprawianie wag po zsumowaniu δ i z wszystkich przykładów
Przeglądanie zbioru przykładów Poprawianie wag co przykład uczący (online learning) Poprawianie wag po zsumowaniu δ i z wszystkich przykładów Złoty środek: Przeglądanie losowymi partiami (batches), poprawianie wag raz na partię (batch learning) Partie losowane równomiernie z całego zbioru przykładów
Problem przeuczenia Sieć ma modelować docelową funkcję wykrywając generalne regularności w danych Gdy nauka jest zbyt dokładna to sieć uczy się błędów próbkowania lub innych regularności wynikających z metod zbierania danych Przykład: obrazy dyskretne - chcemy by sieć nauczyła się tego co przedstawia obraz, a nie tego, że piksele są kwadratowe Z drugiej strony, gdy sieć jest mało dokładna, to mamy generalizację, ale model jest nieprzydatny
Ochrona przed przeuczenia: upraszczanie wag Weight decay - ulatnianie się małych wagach Małe wagi mają mały wpływ na ostateczny model Gdy małe wagi znikają do zera, model się upraszcza
Ochrona przed przeuczenia: Kontrola jakości Co pewien czas sprawdzamy jak sieć sobie radzi Liczymy błąd sieci na zbiorze testowym (innym niż przykłady uczące!) Jeżeli sieć jest wystarczająco dobra, kończymy uczenie sieci unikając przeuczenia w późniejszych etapach
Ochrona przed przeuczenia: Uśrednianie modeli Uczymy wiele sieci o różnych architekturach (albo nawet rodzajach) Za ostateczny wynik bieżemy średnią wyników z wielu różnych sieci Nawet jeżeli niektóre się przeuczyły to ze średniej dostaniemy dobrą generalizację
Metoda Dropout Zob pdf: Dropout: A Simple Way to Prevent Neural Networks from Overfitting Odrzucanie losowych jednostek w każdym kroku uczenia, z ustalonym p-stwem p W wyniku, dla p = 0.5 (typowa wartość) uczymy 2 n uproszczonych modeli Uśredniony model podczas testowania
Losowanie wag Gdyby neurony miały identyczne wagi na wejściach i wyjściach to każdy uczył by się tego samego. Dlatego wagi muszą być zróżnicowane. Jeżeli jest dużo wejść do neuronu to na aktywacji dostaniemy wartość sigmoidy bliską 1 albo 0, przez co pochodna będzie mała i uczenie będzie powolne
Losowanie wag Gdyby neurony miały identyczne wagi na wejściach i wyjściach to każdy uczył by się tego samego. Dlatego wagi muszą być zróżnicowane. Jeżeli jest dużo wejść do neuronu to na aktywacji dostaniemy wartość sigmoidy bliską 1 albo 0, przez co pochodna będzie mała i uczenie będzie powolne Rozwiązanie: w warstwach, w których jest dużo wejść, losujemy wagi z mniejszego przedziału Reguła kciuka: Jeżeli n to liczba wejść do neuronu, to losujemy wagi z rozkładu o odchyleniu standardowym równym 1 n i średniej równej 0.
Osobna stała uczenia dla każdej wagi Każda waga będzie miała akcelerator-tłumik uczenia g i,j : η i,j = ηg i,j Sprawdzamy czy poprzednia zmiana konkretnej wagi w i,j nie wpłyneła negatywnie na energię.
Osobna stała uczenia dla każdej wagi Każda waga będzie miała akcelerator-tłumik uczenia g i,j : η i,j = ηg i,j Sprawdzamy czy poprzednia zmiana konkretnej wagi w i,j nie wpłyneła negatywnie na energię. Tzn. czy E w i,j (t) E w i,j (t 1) < 0 Jeżeli tak, to: przestrzeliliśmy, waga zmienia się za szybko. Przyjmujemy: g i,j := 0.95g i,j Else: waga idzie w dobrym kierunku, przyspieszamy kroku: g i,j := g i,j + 0.05
Osobna stała uczenia dla każdej wagi Każda waga będzie miała akcelerator-tłumik uczenia g i,j : η i,j = ηg i,j Sprawdzamy czy poprzednia zmiana konkretnej wagi w i,j nie wpłyneła negatywnie na energię. Tzn. czy E w i,j (t) E w i,j (t 1) < 0 Jeżeli tak, to: przestrzeliliśmy, waga zmienia się za szybko. Przyjmujemy: g i,j := 0.95g i,j Else: waga idzie w dobrym kierunku, przyspieszamy kroku: g i,j := g i,j + 0.05 Dbamy o to, by g i,j trzymało się w rozsądnych granicach. Np.: g i,j [0.1, 10]
Przygotowanie wektorów wejściowych z danych uczących Najlepiej gdy średnia danych wejściowych wypadała w zerze (wystarczy przesunąć dane o średnią) Silne korelacje między wymiarami negatywnie wpływają na szybkość uczenia
Przygotowanie wektorów wejściowych z danych uczących Najlepiej gdy średnia danych wejściowych wypadała w zerze (wystarczy przesunąć dane o średnią) Silne korelacje między wymiarami negatywnie wpływają na szybkość uczenia Jedno z rozwiązań: redukcja wymiarowości Analiza składowych głównych (Principal component analysis, PCA; jeszcze do tego wrócimy)