Uniwersytet Warszawski, Wydział Fizyki - Centralny System Uwierzytelniania
Strona główna

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) Podstawowe informacje o zasadach przyporządkowania punktów ECTS:
  • roczny wymiar godzinowy nakładu pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się dla danego etapu studiów wynosi 1500-1800 h, co odpowiada 60 ECTS;
  • tygodniowy wymiar godzinowy nakładu pracy studenta wynosi 45 h;
  • 1 punkt ECTS odpowiada 25-30 godzinom pracy studenta potrzebnej do osiągnięcia zakładanych efektów uczenia się;
  • tygodniowy nakład pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się pozwala uzyskać 1,5 ECTS;
  • nakład pracy potrzebny do zaliczenia przedmiotu, któremu przypisano 3 ECTS, stanowi 10% semestralnego obciążenia studenta.

zobacz reguły punktacji
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

Przedmiot nie jest oferowany w żadnym z aktualnych cykli dydaktycznych.
Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Uniwersytet Warszawski, Wydział Fizyki.
ul. Pasteura 5, 02-093 Warszawa tel: +48 22 5532 000 https://www.fuw.edu.pl/ kontakt deklaracja dostępności USOSweb 7.0.3.0 (2024-03-22)