Skrócony opis: |
Przedmiot ten ma na celu zapoznanie studentów z sieciami neuronowymi, t.j. ich strukturami, metodami ich uczenia i potencjalnymi zastosowaniami. Przedstawia praktycznie wszystkie używane struktury sieci, w tym perceptron wielowarstwowy, sieci splotowe, generatywne, autokodery, sieci rekurencyjne i inne. Prezentuje algorytmy ich uczenia takie jak CM, NAG, Adam i inne. Przedstawia narzędzia programistyczne służące do implementowania sieci neuronowych, takie jak Tensorflow.
Ćwiczenia związane z przedmiotem mają na celu implementację poznanych metod oraz ich zastosowaniu do rozwiązywania praktycznych problemów. Dodatkowo na ćwiczeniach poruszane są aspekty techniczne oraz omawiane są dobre praktyki w uczeniu i zastosowaniu sieci neuronowych.
|
Pełny opis: |
Przedmiot ten ma na celu zapoznanie studentów z sieciami neuronowymi, t.j. ich strukturami, metodami ich uczenia i potencjalnymi zastosowaniami. Przedstawia praktycznie wszystkie używane struktury sieci, w tym perceptron wielowarstwowy, sieci splotowe, generatywne, autokodery, sieci rekurencyjne i inne. Prezentuje algorytmy ich uczenia takie jak CM, NAG, Adam i inne. Przedstawia narzędzia programistyczne służące do implementowania sieci neuronowych, takie jak Tensorflow.
Ćwiczenia związane z przedmiotem mają na celu implementację poznanych metod oraz ich zastosowaniu do rozwiązywania praktycznych problemów. Dodatkowo na ćwiczeniach poruszane są aspekty techniczne oraz omawiane są dobre praktyki w uczeniu i zastosowaniu sieci neuronowych.
Treść wykładu
- Wprowadzenie
Informacje organizacyjne. Wprowadzenie do sztucznych sieci neuronowych. Współczesne znaczenie technologii sztucznych sieci neuronowych. Przypomnienie podstawowych pojęć: Model neuronu, perceptron dwu/wielowarstwowy, wsteczna propagacja błędu, uczenie sieci (SGD), zapobieganie przeuczeniu sieci: wczesne zatrzymanie, regularyzacja, odrzucanie. Perceptron, sieci jednokierunkowe wielowarstwowe, algorytm wstecznej propagacji błędu.
- Technologie
2.Technologie: Obliczenia z użyciem minipakietów. Tensory i przeliczenia sieci z użyciem tensorów. Obliczenia w CUDA. Ogólne zasady działania bibliotek TensorFlow i PyTorch. Porównanie TensorFlow i PyTorcha z innymi dostępnymi rozwiązaniami (MXNET, Teano) oraz bibliotekami wyższego poziomu (biblioteka Keras).
- Algorytmy uczenia sieci
Algorytmy wykorzystujące inercję: CM, NAG. Algorytmy adaptacyjne: AdaGrad, AdaDelta, Adam
- Dobre praktyki oraz podejścia pomocnicze przy uczeniu sieci neuronowych
Trenowanie wstępne sieci. Przeciwdziałanie przeuczeniu: opuszczanie (drop-out), wczesne zatrzymanie. Wspomaganie uczenia: normalizacja pakietowa (batch normalization), odpowiednia inicjalizacja wag.
- Splot i sieci spolotowe
Splot w matematyce. Warstwa splotowa sieci neuronowej. Parametry warstwy splotowej: krok, dylacja, dopełnianie. Łączenie, incepcja, tory rezydualne. Architektury ze splotem: LeNet, AlexNet, GoogLeNet, ResNet.
- Autokodery
Splot odwrotny, splot transponowany. Powiększanie. Autokodery. Autokodery warunkowe. Autokodery wariacyjne (VAE).
- Sieci Generacyjne
Splot odwrotny, splot transponowany. Powiększanie. Autokodery. Autokodery warunkowe. Autokodery wariacyjne (VAE).
- Sieci rekurencyjne
Sieć neuronowa jako maszyna stanowa. Algorytm wstecznej propagacji przez czas (BPTT). Algorytm rekurencyjnego uczenia w czasie rzeczywistym (RTRL). Problem zanikania i eksplozji gradientu. Sieci LSTM i GRU.
- Przetwarzanie sekwencji i tłumaczenie maszynowe. Sieci dwukierunkowe i wielowymiarowe. Alternatywy do rekurencji
Alternatywy do rekurencji: przesuwne okno i uwaga/atencja. Wprowadzenie do przetwarzania języka naturalnego: zagnieżdżenie (embedding) – word2vec (skip-gram, CBOW), Tłumaczenie maszynowe: eutokoder i autokoder z atencją.
- Transformer:
struktura i sposób działania. Wielogłowa atencja. R-Transformer. Vision Transformer
- Sieci ze zbieżnym stanem
Ograniczone maszyny Bolzmanna, Głębokie sieci przekonań, Algorytm wake-sleep. Samoorganizująca się mapa - sieć Kohonena
- Przegląd zaawansowanych problemów związanych z sieciami neuronowymi
Zastosowania w wizji komputerowej i przetwarzaniu języka, sieci przetwarzające grafy, sieci impulsowe, uczenie ze wzmocnieniem, ciągłe i in
Treść ćwiczeń
- Organizacja ćwiczeń. Zapoznanie z środowiskiem Jupyter Notebook. Wprowadzenie do Tensorflow oraz podstawowych obiektów: graf obliczeń, sesja oraz operacje. Automatyczne różniczkowanie w grafie obliczeń. “Hello world” w TF - implementacja regresji logistycznej.
- Budowanie modelu sieci neuronowej dla zadania regresji oraz klasyfikacji. Zapisywanie modelu wraz z wagami do pliku. Odczytanie zapisanego modelu oraz ewaluacja wyników na zbiorze testowym.
- Klasyfikacja na zbiorze MNIST - z sieciami jednokierunkowymi a następnie z warstwami wykorzystującymi operację splotu (CNN). Porównanie wyników dla obu sieci.
- Uczenie modelu z wykorzystaniem różnych metod dostępnych w TF. Dostrajanie hyper-parametrów oraz diagnostyka uczenia modelu z wykorzystaniem Tensorboard. Implementacja metody wczesnego stopu w uczeniu sieci. Różne architektury sieci CNN. Zapoznanie z warstwami max-pooling, sieci rezydualne. Wykorzystanie pre-trenowanych sieci (VGG, ResNet) do detekcji obrazów ze zbioru TinyImageNet-200. Dostrajanie parametrów już wytrenowanej sieci.
- Sieci Kapsułkowe - algorytm dynamicznego routingu. Utworzenie klasyfikatora dla zbioru MNIST.
- Autokodery oraz VAE: kompresja obrazów MNIST (AE) oraz ich generacja (VAE). Implementacja prostej sieci GAN.
- Przewidywanie szeregów czasowych z sieciami neuronowymi - RNN, CNN.
- Word embedding - implementacja podejść CBOW oraz skip-gram. Podejście globalnych wektorów (GloVe) do zagnieżdżenia. Wykorzystanie istniejących zagnieżdżeń. Porównanie metod i wizualizacja w Tensorboard.
- Sieci rekurencyjne w NLP: wykorzystanie podejścia bag-of-words oraz sieci jednokierunkowej vs sieci rekurencyjnej. Utworzenie klasyfikatora filtru spamowego. Uczenie sekwencja-sekwencja: zastosowanie rekurencyjnych sieci neuronowych do automatycznej translacji tekstów.
- Implementacja modeli ograniczonych maszyny Bolzmanna (RBM) oraz głębokie sieci przekonań (DBN) z algorytmem wake-sleep.
- Sieci Neuronowe w uczeniu z wzmocnieniem. Implementacja wybranych metod z wykorzystaniem środowiska OpenGym oraz TF.
- Rozpraszanie obliczeń przy implementacji sieci neuronowych.
|
Literatura: |
- Yoshua Bengio, Aaron Courville, Ian Goodfellow, "Deep Learning. Systemy uczące się", PWN, 2018.
- Wybrane publikacje z NIPS/NeurlPS, ICML, ICLR, CVPR, arXiv
|