Uczenie maszynowe

wykład: środy, 9:15--11:00, C-11/P.01;
laboratorium: środy, 11:15--13:00, C-11/4.09.

Terminy (ustnych) kolokwiów:

Zdalne zaliczenia będą na zoomie. Meeting ID: 958 5519 3305, hasło to trzyliterowy skrót oznaczający sieci splotowe lub amerykańską stację telewizyjną.

Materiały

Pliki/linki używane na wykładzie

Zadania
Zadanie 1

regresja liniowa (0,5 punktu) oraz Ridge (metoda iteracyjna: 0,5 punktu). Termin oddania: do 28 października.

Zadanie 2

zaimplementować sieć neuronową z dwoma (lub więcej, jeśli ktoś chce) gęstymi warstwami. Użyć jej np. do rozpoznawania ręcznie pisanych cyfr z bazy MNIST. Poeksperymentować z parametrami, które można zmieniać, np. wziąć różne wielkości pierwszej warstwy. (Zależnie od implementacji, można mieć tu mniej lub więcej możliwości, np. może da się dodać trzecią warstwę, a może nie).
Propozycje implementacyjne: wygodnym podstawowym bytem jest Warstwa, która powinna mieć możliwość propagacji w przód (mając dane wejściowe) oraz w tył (mając błędy z kolejnej warstwy, uaktualnia wagi i zwraca błędy dla następnej warstwy; dobrze jakoś pamiętać obliczenia wykonane w czasie propagacji w przód). W prostszej (ale wystarczającej) wersji, możemy dawać Warstwie pojedynczy wektor wejściowy, wtedy da się naturalnie zaimplementować 'online learning'. Dla implementacji 'batch learning' lepiej, żeby Warstwa mogła dostać wektor wektorów wejściowych, czyli macierz. Kolejny byt, Sieć, może wtedy składać się z wielu Warstw, i mieć metody 'fit' i 'predict'.
Baza z ręcznie pisanymi cyframi: można użyć plików mnist_loader.py oraz mnist.pkl.gz z tego repozytorium. Proszę przeczytać dokumentację w pliku mnist_loader.py, żeby się dowiedzieć, jak (łatwo) się tego używa.
Oprócz rachunków zamieszczonych wyżej można zobaczyć konkretne rachunki dla sieci 2x2 (poprawione 13 stycznia: były pomyłki rachunkowe we wzorach na dL/dW).
Termin oddania: do 14 grudnia.

Zadanie 3

Poeksperymentować z sieciami splotowymi, np. przy użyciu biblioteki Keras.
Termin oddania: do końca roku 2022.

Zadanie 4

Poeksperymentować z sieciami rekurencyjnymi, np. przy użyciu biblioteki Keras.
Termin oddania: do 20 22 stycznia 2023.

Zadanie 5

Zaimplementować algorytm alpha-beta, Monte Carlo Tree Search lub tablice Nalimova (jedno do wyboru) dla wybranej przez siebie gry (nie każda się do tego nadaje). Można też, jeśli ktoś woli, zrobić coś innego dotyczącego uczenia maszynowego, na wybrany przez siebie i *wcześniej* uzgodniony temat (mailowo).
Termin oddania: do 3 lutego 2023.

Zasady zaliczania
up