Uczenie maszynowe

Materiały
Zadania

Zadanie1: regresja liniowa (0,5 punktu) oraz Ridge (metoda iteracyjna: 0,5 punktu; ze wzoru: 0,25 punktu). Termin oddania: do 14 marca (dokładniej, do północy 14/15 marca).

Zadanie 2: zaimplementować sieć neuronową z dwoma (lub więcej, jeśli ktoś chce) gęstymi warstwami. Użyć jej 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). Termin oddania: do 25 kwietnia (dokładniej, do północy 25/26 kwietnia).
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: do 9 maja; dane.

Zadanie 4: do 23 maja; dane. Do wyboru, k-means lub SVM. W zadaniu 3 lub 4 należy wybrać dane wymagające pewnej obróbki.

Zadanie 5: do 13 czerwca. Zob. wykład z 20 maja.

Wykłady
  1. notatki z 4 marca   zabawa z numpy
  2. notatki z 11 marca   programik do prostych sieci
  3. notatki z 18 marca   przykład uczenia sieci  
  4. notatki z 25 marca   Universality Theorem 
  5. notatki z 8 kwietnia   programik z zajęć   i wygenerowane przez niego wykresy  
  6. notatki z 15 kwietnia
  7. notatki z 22 kwietnia
  8. notatki z 29 kwietnia   programik z zajęć wzięty z dokumentacji
  9. notatki z 6 maja
  10. notatki z 13 maja  programik z zajęć i wykres
  11. notatki z 20 maja (fragment)  przykładowy programik
  12. notatki z 27 maja  rachunek dla squeeze net -- errata: 3*3*64*128 = 73728, a więc różnica jest znacząca, jednak nie aż tak duża jak to zostało przedstawione.
    Linki: Dark Forest, plik caffe SquuezeNet, artykuł Visualizing and Understanding Convolutional Networks, Matthew D. Zeiler, Rob Fergus.
  13. notatki z 2 czerwca
  14. notatki z 10 czerwca  programik z zajęć.

Zasady zaliczania:

up