Uczenie maszynowe
wykład: czwartki, 15:15--16:45, C-19/A.0.8;
laboratorium: dr Karol Szczypkowski, czwartki, 17:05--18:34, C-19/A.0.4.
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, Gareth James, Daniela Witten, Trevor Hastie, Robert Tibshirani, Jonathan Taylor, dostępnej za darmo w formie pdf.
- 7 III: bias-variance tradeoff: notebook, html; numpy broadcasting
- 21 III:
propagacja wsteczna: rachunki (źródło);
rachunki dla sieci 2x2.
Sieć 2-2: notebook, html - 11 IV (zastępstwo):
ImageNet classification with deep convolutional neural networks, artykuł o AlexNet;
ResNet, Batch Normalization, notebook (html). - 18 IV
DarkForest, program grający w Go, używający CNN;
wątek o czysto splotowej sieci (Detlef Schmicker);
SqueezeNet, GoogLeNet (inception), Rethinking Inception, MobileNets. - 25 IV: Chess Programming Wiki: MiniMax, Alfa-Beta.
- 9 V
przykładowe funkcje oceniające pozycje z Crafty,
Stockfish ;)
efekt horyzontu: chess.com i fen:2N5/7k/3p1rpp/2b5/8/1B6/P4QPP/6K1 w - - 0 1
-- sposoby przeciwdziałania,
Zobrist hashing, tablice Nalimowa, np. strona i FEN:5kn1/8/3R4/5n2/8/8/2K1B3/8 w - - 0 1
Zadania
Zadanie 1
regresja liniowa (0,5 punktu) oraz Ridge (metoda iteracyjna: 0,5 punktu).
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.
Zadanie 3
Poeksperymentować z sieciami splotowymi, np. przy użyciu biblioteki Keras lub PyTorch.
Zasady zaliczania
- Będą co najmniej 4 zadania na laboratoria, za łącznie 5 punktów.
Spóźnienie w oddawaniu powoduje przemnożenie oceny za zadanie przez współczynnik określony przez prowadzącego laboratorium.
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 ostatnich zajęciach 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.