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:
- piątek, 3 lutego, 18--18:42 -- trzy miejsca po 14 minut;
- poniedziałek, 6 lutego, 8--8:28 -- dwa miejsca po 14 minut;
- wtorek, 7 lutego, 11--12, C-11/2.11 (stacjonarnie) -- cztery miejsca po 15 minut;
- środa, 8 lutego, 18--18:56 -- cztery miejsca po 14 minut.
- poniedziałek, 13 lutego, 10:30--11 (zdalnie) -- dwa miejsca po 15 minut (do czterech, jeśli będą chętni)
- wtorek, 14 lutego, 10:15--10:30 (zdalnie) -- jedno miejsce,
- środa, 15 lutego, zdalnie, do
trzechczterech 15 minutowych miejsc zaczynając od 18:10, - czwartek, 16 lutego, zdalnie, 21:05--21:45 -- trzy miejsca,
- piątek, 17 lutego, zdalnie, 21:05--21:45 -- trzy miejsca.
- (NOWE) piątek, 17 lutego, zdalnie, do trzech 14 minutowych miejsc zaczynając od 11:15.
- OSTATNIE: poniedziałek, 20 lutego, zdalnie, 12:00-- (po 15 minut).
Materiały
- Można obejrzeć przynajmniej pierwsze dwa filmy z Neural networks by 3blue1brown.
- Spora część wykładu będzie wg książki An Introduction to Statistical Learning with Applications in R, Gareth James, Daniela Witten, Trevor Hastie i Robert Tibshirani, dostępnej za darmo w formie pdf.
- Rachunki (źródło) dla propagacji w przód i wstecz w sieci neuronowej z gęstymi warstwami. To są rachunki pokazywane 19 X, ale dodatkowo jest tam o funkcji softmax.
Pliki/linki używane na wykładzie
- 26 X: sieć neuronowa z dwoma warstwami -- pokazane wyjścia z poszczególnych neuronów
- 9 XI: sieci splotowe, plik przygotowany przez dra Kamila Bogusa
- 16 XI: Bias-Variance tradeoff
- 23 XI: ImageNet classification with deep convolutional neural networks, artykuł o AlexNet;
oszacowania liczby mnożeń w warstwach sieci AlexNet;
DarkForest, program grający w Go, używający CNN;
wątek o czysto splotowej sieci (Detlef Schmicker). - 30 XI: SqueezeNet, ResNet, GoogLeNet (inception), Rethinking Inception, MobileNets.
- 7 XII: Sieci rekurencyjne, notatki przygotowane przez dra Kamila Bogusa
- 21 XII: encoder-decoder, GloVe, przykładowy program do zabawy z GloVe, Man is to...
- 11 I: Attention, Attention is All You Need oraz wersja z objaśnieniami
- 18 I:
Alpha-Beta wyjaśnione na Chess Programming Wiki,
przykładowa pozycja analizowana na
chess.com oraz jej 'fen':
4r1k1/1q3pp1/4b2p/RQ6/8/R7/5PPP/5K2 w - - 0 1
- 25 I: strona domowa Pachi, praca magisterska Petra Baudisa, praca doktorska Shih-Chieh Huanga, MCTS w Sensei's library
- 1 II: Oryginalne artykuły o Alpha Go oraz Alpha Go Zero. Książka 'Deep learning and the game of Go' (Max Pumperla i Kevin Ferguson, Manning 2019), dostępna jako ebook w bibliotece, jest przystępnym źródłem o AlphaGo i AlphaGoZero, chociaż opisane tam algorytmy różnią się w szczegółach od oryginalnych AlphaGo/Zero.
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
- Będzie co najmniej 5 zadań na laboratoria, każde za 0-1 punkt.
Spóźnienie w oddawaniu powoduje przemnożenie oceny za zadanie przez (1 - 0.1 * opóźnienie w tygodniach).
Każde zadanie należy wysłac emailem oraz przedyskutować na laboratorium. Wcześniejsza z tych czynności liczy się jako moment oddania zadania.
Na laboratoria trzeba przyjść, aby zaprezentować rozwiązania. Poza tym obecność nie jest obowiązkowa. Zawsze można też wyjść przed końcem zajęć, bez pytania. Zachęcam jednak do obecności, szczególnie, jeśli mają Państwo wątpliwości lub pytania związanie z zadaniami. - Na koniec będzie kolokwium (=rozmowa, pojedynczo z każdym). Przed kolokwium otrzymają Państwo listę metod (omówionych na wykładzie), których znajomość obowiązuje na kolokwium. Student zaznacza, które metody umie omówić. Następnie otrzymuje pytania tylko z zaznaczonych przez siebie metod i za odpowiedzi otrzymuję ocenę p w skali 0-1; liczba punktów z kolokwium to p*(0,2 + (liczba zaznaczonych metod / liczba wszystkich metod)). Jeśli okaże się, że któraś z metod została zaznaczona nieuczciwie, to student otrzymuje 0 punktów z kolokwium i ocenę ndst.
- Do otrzymania oceny pozytywnej potrzeba i wystarcza: zdobyć co najmniej 2,5 punktu, w tym przynajmniej 0,5 z kolokwium. Minimalne progi z kolokwium na kolejne oceny (od dst do bdb) to: 0,5; 0,575; 0,65; 0,725; 0,8, a minimalne łączne liczby punktów: 2,5; 3,25; 3,75; 4,25; 4.75. Czyli np. aby otrzymać 4+, wystarczy zdobyc co najmniej 4,25 punktu łącznie, w tym co najmniej 0,725 z kolokwium.