Sztuczne sieci neuronowe z biblioteką PyTorch
Informacje ogólne
Kod przedmiotu: | 1100-SSN |
Kod Erasmus / ISCED: | (brak danych) / (brak danych) |
Nazwa przedmiotu: | Sztuczne sieci neuronowe z biblioteką PyTorch |
Jednostka: | Wydział Fizyki |
Grupy: |
Fizyka, II stopień; przedmioty z zakresu analizy numerycznej |
Punkty ECTS i inne: |
(brak)
|
Język prowadzenia: | polski |
Założenia (opisowo): | Kurs jest przeznaczony dla osób początkujących w dziedzinie sieci neuronowych i uczenia maszynowego. Przed rozpoczęciem zajęć uczestnicy powinni posiadać podstawową wiedzę z rachunku różniczkowego, macierzowego i statystyki matematycznej. Konieczna jest umiejętność programowania w języku Python z wykorzystaniem pakietu numpy. Nie jest potrzebna żadna wcześniejsza znajomość biblioteki PyTorch. Do uczestnictwa w zajęciach niezbędny jest dostęp do komputera z zainstalowanymi bibliotekami PyTorch i OpenAI Gym oraz możliwością wykonywania obliczeń na karcie graficznej. Wymagania te spełnia dostępne w internecie darmowe środowisko Google Colaboratory. |
Skrócony opis: |
Na zajęciach zostaną przedstawione podstawowe elementy biblioteki PyTorch, czyli operacje na wielowymiarowych tablicach, automatyczne różniczkowanie oraz różne udogodnienia do tworzenia sieci neuronywych, jak gotowe warstwy, optymalizatory itp. Omówione zostaną sieci gęste i splotowe. Pierwsza część semestru będzie poświęcona uczeniu nadzorowanemu, czyli zagadnieniom klasyfikacji i regresji, zaś druga – uczeniu ze wzmocnieniem w oparciu o metody Q-Learning i Policy Gradients. Ze względu na złożoność bibliotek do tworzenia sieci neuronowych, czas zajęć będzie podzielony mniej więcej po połowie między zagadnienia merytoryczne a technikalia biblioteki PyTorch. Zajęcia będą miały charakter warsztatowy i będą polegać na implementacji różnego rodzaju sieci neuronowych z wykorzystaniem biblioteki PyTorch a następnie ich zastosowaniu w przykładach takich jak rozpoznawanie obrazu czy trenowanie lądownika księżycowego w środowisku OpenAI Gym. |
Pełny opis: |
Przedstawione niżej punkty odpowiadają w przybliżeniu kolejnym zajęciom. Zależnie od postępów grupy podczas 15 spotkań przerobionych zostanie nieco mniej lub więcej od podanych 15 punktów. 1) Regresja liniowa z wykorzystaniem pakietu numpy i równań normalnych albo minimalizacji metodą gradientu. 2) Zbiór danych do klasyfikacji irysów. Regresja logistyczna z wykorzystaniem pakietu numpy. Uproszczony zbiór danych do klasyfikacji ręcznie pisanych cyfr. 3) Regresja liniowa z wykorzystaniem biblioteki PyTorch i równań normalnych albo minimalizacji metodą gradientu. Operacje na tensorach, automatyczne różniczkowanie i optymalizatory. 4) Regresja logistyczna z wykorzystaniem biblioteki PyTorch. Funkcje straty, entropia krzyżowa. Podział danych na porcje. Zbiór uczący i testowy. Dokładność klasyfikacji. 5) Sieć wielowarstwowa w pełni połączona. Inicjalizacja wag. Różne funkcje aktywacji, funkcja ReLU. Pełen zbiór danych do klasyfikacji ręcznie pisanych cyfr MNIST. Moduł TorchVision i narzędzia do wizualizacji danych. 6) Prowadzenie obliczeń na karcie graficznej. Różne metody minimalizacji, metoda Adam. 7) Splot w bibliotekach numpy i PyTorch. Splot jedno i dwuwymiarowy. Filtry i kanały obrazu. Filtr Sobla do wykrywania krawędzi. Sieci splotowe. 8) Gotowe warstwy biblioteki PyTorch. Modele sekwencyjne. Moduł TorchSummary i podsumowanie architektury oraz parametrów modelu. Warstwy pooling. Wielowarstwowe sieci splotowe i dokładność klasyfikacji cyfr. 9) Zapisywanie parametrów modelu na dysku. Sposoby zapobiegania przeuczeniu. Wczesny stop, regularyzacja, dropout. Narzędzia do obsługi dużych zbiorów danych. 10) Zagadnienie regresji. Dopasowanie funkcji zadanej siecią neuronową do punktów pomiarowych. Robot poruszający się wzdłuż krzywej narysowanej na podłożu. 11) Uczenie ze wzmocnieniem. Procesy decyzyjne Markowa. Środowisko, agent, stan, akcja, nagroda. Wartości stanów i akcji, polityka. Równania Bellmana i programowanie dynamiczne. Znajdowanie najkrótszej drogi w prostej grze planszowej. 12) Q-Learning. Podejście tabelaryczne i wykorzystanie sieci neuronowych. Znajdowanie drogi w labiryncie. 13) Środowisko OpenAI Gym. Utrzymywanie w pionie pręta na palcu w środowisku Gym. Rozwiązanie ręczne i przy pomocy Q-Learningu. Zapobieganie zapominaniu. Metody experience replay i target network. 14) Wyznaczanie optymalej polityki. Metoda entropii krzyżowej. Metoda gradientu polityki i algorytm REINFORCE. Wjeżdżanie samochodem na górę w środowisku Gym. 15) Redukcja wariancji estymatora gradientu. Poziom odniesienia. Trenowanie lądownika księżycowego w środowisku Gym. |
Efekty uczenia się: |
1) Swobodne posługiwanie się najważniejszymi składnikami biblioteki PyTorch. 2) Umiejętność samodzielnej implementacji podstawowych rodzajów sieci neuronowych oraz różnych algorytmów uczących. 3) Umiejętność uczenia sieci z użyciem procesora i karty graficznej, doboru architektury i hiperparametrów, monitorowania postępu itp. 4) Umiejętność rozwiązywania podstawowych zadań z dziedziny uczenia nadzorowanego i uczenia ze wzmocnieniem. |
Metody i kryteria oceniania: |
Można otrzymać 100 punktów podzielonych na następujące pozycje: Obecności: 15 Aktywność: 35 Pierwsze kolokwium: 25 Drugie kolokwium: 25 Najważniejszym elementem oceny jest aktywność, za którą punkty będą przyznawane następująco. Każdy napisany na zajęciach program można ulepszyć przyspieszając uczenie, zwiększając dokładność klasyfikacji itp. Można to zrobić zmieniając architekturę bądź hiperparametry sieci, algorytm uczenia itp. Po zakończeniu wybranych przykładów ogłaszane będą konkursy na takie ulepszenia. Osoby, które na kolejnych zajęciach przedstawią najciekawsze ulepszenia, dostaną punkty za aktywność. Wynik za aktywność może przekroczyć przewidziane 35 punktów, a nadmiar uzupełnia wtedy niedobory z pozostałych pozycji. Kolokwia odbędą się w dodatkowych terminach poza zajęciami. Pierwsze będzie dotyczyć uczenia nadzorowanego, a drugie uczenia ze wzmocnieniem. Na podstawie sumy punktów ze wszystkich pozycji ocena końcowa wystawiona zostanie według następującej tabeli: 0-50: 2.0 51-60: 3.0 61-70: 3.5 71-80: 4.0 81-90: 4.5 91-100: 5.0 |
Właścicielem praw autorskich jest Uniwersytet Warszawski, Wydział Fizyki.