Głębokie uczenie Sieci Neuronowe Wykład 16 Włodzisław Duch Uniwersytet Mikołaja Kopernika Google: W. Duch Co było o Sieci MLP o Algorytm wstecznej propagacji (BP) o Ulepszenia BP o Sieci konstruktywistyczne 2 Dzisiaj • Maszyny Boltzmanna. • Reservoir Computing • Głębokie uczenie. • Obrazy mentalne. Problemy: Obrazy i sygnały wymagają głębokiego przetwarzania by osiągnąć niezmienniczość względem skalowania i obrotów. MLP i inne modele wymagają wektora o ustalonej długości. Modele rekurencyjne mogą przyjmować wektory reprezentujące przesuwające się szeregi czasowe. Maszyna Boltzmanna Stochastyczne sieci atraktorowe, proste intro jest tu. Zadanie: nauka rekonstrukcji danych wejściowych. Binarne neurony, symetryczne połączenia, warstwa ukrytych neuronów. Asynchroniczna dynamika. Neurony stochastyczne i stopniowe chłodzenie: p Vi Vi Ei / T Wejścia Wyjścia Restricted BM, jedna warstwa ukryta bez połączeń wewnątrz. 4 Działanie MB Idea: zbiór wag połączeń definiuje model środowiska. Struktura wzbudzeń elementów widocznych przy braku sygnałów wejściowych powinna być taka sama jak w ich obecności. MB ma znaleźć zbiór wag pozwalających zrekonstruować obserwowane częstości sygnałów wejściowych - model maksymalnego prawdop. Założenia: wolnozmienne sygnały wejściowe, brak korelacji pomiędzy strukturami danych wejściowych; sieć dochodzi do równowagi iterując sygnał X+; iteracja w przód daje rozkład p(H|X;W), wstecz daje na wejściu XMB minimalizuje różnicę tych rozkładów używając miary Kullbacka-Leibnera: KL P X , P X P X ln P X P X X Różnice między działaniem swobodnym i wymuszonym pozwalają obliczyć korelacje wzbudzeń neuronów i pożądaną zmianę wag: Wij xi h j dane xi h j szum Przykład - obwód elektryczny 2 bity na zaznaczenie: rośnie, stałe, maleje. Prawo Ohma V=I×R neurony wiedzy typu (I-,V-,R0), (I+,V+,R0) ale nie (I+,V-,R0). 5 praw: 3 Ohma + Kirhoffa + dodawanie R. 65 neuronów zawierających elementarne fakty Pytanie: Jeśli R2 wzrośnie, R1 i Vt stałe, co z prądem i spadkami napięcia V1, V2 ? Ok. 500 iteracji (w naturze 10 ms/iterację), iteracja to 100 aktualizacji. Po uśrednieniu wynik prawidłowy. Przykład za D.E. Rumelhart, J. McClelland, Parallel Distributed Processing (MIT Press 87) Intuicyjne myślenie Fizyka jakościowa wymaga intuicji: jeśli R2 wzrośnie a R1 i Vt będzie stałe, co stanie się z prądem I oraz V1, V2 ? Uczenie się z częściowych obserwacji Prawo Ohma V=I×R; Kirhoffa V=V1+V2. Geometryczna reprezentacja faktów: + rośnie, 0 stała, - maleje. True (I-,V-,R0), (I+,V+,R0), false (I+,V-,R0). 5 praw: 3 Ohma, 2 Kirhoffa. Wszystkie A=B+C, A=B×C , A-1=B-1+C-1, mają taką samą interpretację geometryczną! 13 prawdziwych, 14 nieprawdziwych relacji; prosta przestrzeń, intuicyjne reakcje. Intuicja upraszcza szukanie 5 relacji musi być jednocześnie prawdziwych, ta sama reprezentacja: 5 F (Vt , R, I ,V1 ,V2 , R1 , R2 ) Fi ( Ai , Bi , Ci ) i 1 Pytanie: Jeśli R2=+, R1=0 i V =0, jak może się zmienić I, V1, V2 ? Ocen jakie mogą być te wartości by F(V=0, R, I,V1, V2, R1=0, R2=+) >0 Szukanie: załóżmy, że któraś zmienna X = +, czy nie zrobi się F=0? Dla 7 zmiennych jest 111 możliwych kombinacji z 2187 (5%) dających F>0. Heurystyka: wybierz zmienną dla której jak najmniej wartości daje F>0. Nie ma manipulacji symbolami, łatwo odpowiedzieć jakościowo na dowolne pytanie, intuicyjne rozumowanie. Miękkie ograniczenia => min |F(X)|. Echo State Networks (ESN) Idea jak w Liquid State Machines (LSM): rzutowanie sygnałów zmiennych w czasie na sieć zawierającą mikroobwody o różnych stałych czasowych, a więc stworzenie obrazu sygnału zmieniającego się wolniej, pozwalającego na klasyfikację. ESN to architektura i uczenie nadzorowane sieci z rekurencją (RNN). 1. Duża, przypadkowo połączona sieć rekurencyjna pobudzana jest przez zewnętrzne sygnały, każdy neuron „rezonuje” przez jakiś czas dzięki oddziaływaniom w sieci. 2. Liniowy klasyfikator (perceptron) uczy się dyskryminacji stanów sieci. Ogólna teoria: reservoir computing, czyli „obliczenia na rezerwuarach”. Uczenie: tylko wag wyjściowych. Analiza Obrazu Jak można wykryć jakiś obiekt na obrazie? Trzeba odkryć niskompoziomowe cechy obrazów pozwalające na niezmienniczą klasyfikację obiektów. Obraz => wektor cech => Klasyfikator, np. MLP. Cechy nie są odkrywane tylko wyodrębniane za pomocą specyficznych algorytmów: wykrywania krawędzi, Speeded Up Robust Features (SURF); Gradient Location and Orientation Histogram (GLOH); Scale-Invariant Feature Transform (SIFT) i wiele innych. Głębokie uczenie: wiele poziomów reprezentacji o rosnącej złożoności. Cechy obrazów Automatyczna generacja cech jest kluczowa dla głębokich sieci neuronowych w zastosowaniach do analizy obrazów, sygnałów czy NLP. Proste cechy są łatwe do generacji, poziom V1 w mózgu. Części obiektów są dużo bardziej złożone, nie można ręcznie utworzyć odpowiednich filtrów do ich wykrywania. Hierarchia cech Trzeba się uczyć coraz bardziej złożonych cech, od V1 => V2, V3, V4, V5, IT. Kolejne warstwy powinny wykrywać nowe cechy z poprzednich. Piksele Klasyfikator Od krawędzi do fragmentów do rozpoznawania całych obiektów, np. twarzy. Wideo lub analiza danych z kinecta dodaje dodatkowe wymiary związane z ruchem, ale zasada budowy cech jest taka sama. Trzeba się uczyć coraz bardziej złożonych cech, od V1 => V2, V3, V4, V5, IT. Kolejne warstwy powinny wykrywać nowe cechy korzystając z poprzednich. Lee i inn. CACM 2011 Jak się uczyć cech Uczenie nadzorowane: dane z etykietami. Płytkie: perceptrony, liniowa dyskryminacja, SVM Głębokie: kolejne warstwy głębokich sieci neuronowych; sieci z konwolucją (coraz większe pola recepcyjne); sieci z rekurencją. Konwolucja (splot): f g t f t g d Uczenie nienadzorowane: dane nie mają etykiet. Wykrywanie regularności lub struktur w danych. Płytkie: odszumiające autoenkodery, ograniczone maszyny Boltzmana. Głębokie: stosy autoenkoderów odszumiających; hierarchiczne rzadkie kodowanie cech; deep belief networks. Sieci konwolucyjne (CNN) dla obrazów: splot filtrów i obrazów. Support Feature Machines: próbuj różnych transformacji wejściowych danych by wykryć użyteczne cechy. Uczenie hierarchii cech Obrazy mają zwykle podobne własności w różnych fragmentach, np. przydatne jest wykrywanie krawędzi. Połączenia powinny odwzorować strukturę obrazu. Filtry cech obrazu Tworzymy mapy obrazów rzutując je na różne filtry, modelujące rozkłady danych wejściowych. Zadaniem filtrów jest wykrywanie różnych struktur. Analiza obrazu siecią CNN Konwolucja => mapy Filtr Gabora splątany z obrazem. Filtry Gabora są wzorowane na reakcjach neuronów układzie wzrokowym. Są to funkcje gaussowskie modulowane przez sinusoidalne fale. Sieci konwolucyjne (CNN) dla obrazów. Sharing i Pooling Podział obrazu na rozłączne prostokąty. Każdy neuron łączy się tylko z niewielkim fragmentem obrazu, pola recepcyjne częściowo się nakrywają. Hiperparametry: depth – ile neuronów do danego pola; stride – jak silne jest nakrywanie; Zero-padding wypełnia brzegi zerami. Większość obrazów wykazuje na tyle duże podobieństwo podobszarów, że cechy wykryte w jednym są przydatne w drugim, stąd pomysł by stosować wspólne wagi (sharing) dla różnych obszarów–zmniejsza to liczbę parametrów i daje niezmienniczość translacyjną architektury sieci CNN. Pooling (non-linear downsampling): średnia lub maksimum z pewnego podobszaru (patch) przekazywana jest do warstwy redukującej rozdzielczość. Końcowa warstwa jest w pełni połączona z wyjściową. Architektura CNN Warstwy bliskie wejściowej są duże (~15x15) ale nieliczne, im bliżej wyjścia tym mniejsze i bardziej liczne. Pooling (subsmapling) to zwykle uśrednianie fragmentów 2x2, zmniejszających mapę. Dekompozycja na części Pozwala to na rozpoznawanie obiektów, biometrię, końcowe filtry są proste. Przykład zastosowania Rozpoznawanie obrazów: 8 warstw, 1 milion obrazów, 650.000 neuronów, 60 mln parametrów, implementacja na 2xGPU, sieć trenowana przez tydzień. ImageNet Classification 2012; błąd 16.4%, drugi najlepszy 26.2%. Rok później zrobiono jeszcze większe sieci, rezultaty poprawiono o kolejne 5%, powstały firmy takie jak ClarifAI opisująca obrazy. Deep face Weryfikacja twarzy. Google: TensorFlow TensorFlow: Open Source Software Library for Machine Intelligence. Narzędzie Google do głębokiego uczenia. Google chciałby uczynić z tego standard w dziedzinie uczenia maszynowego. TensorFlow jest systemem, w którym obliczenia reprezentowane są przez grafy (wizualny język programowania). Węzły grafów nazywane są ops (od operations). Takie op działa na tensorach, wykonuje operacje i odsyła tensory, czyli wielowymiarowe tablice. Np. grupa obrazów satelitarnych otrzymanych z różnych kanałów spektralnych może być reprezentowana przez 4-D tablicę o wymiarach Sat = [obraz#, szerokość, wysokość, kanał]. TensorFlow jest używany przez Google do tworzenia usług i produktów, ale tworzone implementacje w TensorFlow są opisane w publikacjach i szeroko udostępniane. Obliczenia tensorowe na grafach Graf TensorFlow jest opisem sposobu wykonywania obliczeń. Żeby cokolwiek obliczyć trzeba utworzyć sesję i zdefiniować graf. Sesja umieszcza operacje definiowane przez graf na urządzeniach (Devices), takich jak CPUs czy GPUs, i dostarcza metod by je wykonać. Te metody zwracają tensory używając takich operacji jak numpy czy objekty ndarray w Pythonie, lub jako tensorflow::Tensor w C/C++. GAN = Generative Adversarial Networks, generują przykłady danych z warunkowych rozkładów probabilistycznych, a następnie uczą sieci odróżniać sztucznie generowane i prawdziwe przypadki. Zarówno generatory jak i dyskryminatory uczą się w ten sposób reprezentacji struktury danych określonego typu. Obliczenia tensorowe na grafach Przykład grafu dla danych MNIST: https://www.tensorflow.org/versions/r0.8/tutorials/mnist/tf/index.html Ręcznie pisane cyfry (np. kodów pocztowych), 28x28 px; Training 55.000, walidacja 5000, test 10.000. Obrazy w mózgu Czy można podejrzeć jak mózg przekształca obrazy z siatkówki przez przez kolejne warstwy analizujące informacje z układu wzrokowego? Wzrok • Od siatkówki przez LGN (ciało kolankowate boczne) informacja dochodzi do pierwotnej kory wzrokowej V1 i szlaku grzbietowego i brzusznego. Wiele obszarów, stopniowo coraz bardziej złożone obiekty. fMRI CNN Aktywność różnych obszarów mierzona za pomocą fMRI została skorelowana z aktywnością warstw sieci CNN (Horikawa, Kamitani, 2017). fMRI CNN kroki Jak nauczyć się analizować aktywność mózgu by odkryć, jakie obraz sobie wyobrażamy lub jaki widzimy? Chcemy to zrobić również dla obrazów, które nie były w zbiorze treningowym. 1. Analizujemy wiele obrazów Oi - dla każdego mamy 13 rodzajów cech (CNN1–8, HMAX1–3, GIST and SIFT + BoF) zakodowanych jako rozkład V(Oi) ok. 1,000 elementów w warstwach sieci CNN. 2. Analizujemy dane fMRI w czasie oglądania obrazów F(Oi), używamy je do dekodowania rozkładu aktywności elementów kodujących cechy tych obrazów w sieci CNN, czyli D[F(Oi)] = V(Oi). 3. Do nowego obrazu On, którego nie było w treningowym zbiorze, używamy dekoderów D[F(On)] = V(On). 4. Na koniec dla wektora V(On) szukamy w dużej bazie obrazów takiego, dla którego wektory uśrednione dla danej kategorii obrazów są najbardziej podobne. Efekt: stany mózgu, widziane bądź wyobrażone => obrazy. fMRI CNN CNN ma 8 warstw, 6-8 w pełni połączone, ~1000 elementów w każdej warstwie. Przykładowe 4 jednostki z każdej warstwy. Wzrasta złożoność i niezmienniczość ze względu na skalowanie i obroty. fMRI CNN CNN 8 warstw, 6-8 w pełni połączone, ~1000 elementów w każdej warstwie. Przykładowe 4 jednostki z każdej warstwy. Wzrasta złożoność i niezmienniczość ze względu na skalowanie i obroty. Wyjście z CNN8 ma przypisane kategorie (jest ich 1000). CNN preferowane obrazy Więcej materiałów Tutoriale: Lista KDDnuggets | UFLDL | Lisa Lab (pdf) Deep Learning for NLP (Richard Socher) Krótkie wprowadzenie (Ivan Vasilev) Tutorial Facebook AI Research (Marc’Aurelio Ranzato) – część obrazków w tym wykładzie pochodzi z tego tutorialu. Deep Learning Wiki Porównanie programów do Deep Learning Programy: MatConvNet (CNN w Matlabie) | ConvNetJS Javascript lib | Deeplearning4j (Java)| Intelligence becomes utility, czyli inteligentny asystent do wszystkiego: viv.ai (wykupiony przez Samsung) Co dalej? Sieci dynamiczne: • Maszyny Boltzmanna. • Model Hopfielda Koniec wykładu 16