Zadanie 3b

Podúloha: California Housing regresný model

Úloha:

Vyviniete neurónovú sieť na vykonanie regresie na súbore údajov o bývaní v Kalifornii. Cieľom je predpovedať strednú hodnotu ceny domu pre okresy Kalifornie na základe niekoľkých údajov, ako sú údaje o obyvateľstve, príjme a polohe. Dátová množina obsahuje 20 640 prípadov s 8 údajmi, ako napríklad stredný príjem, vek nehnuteľnosti a priemerná obsadenosť a tiež cieľovú hodnotu, ktorou je stredná hodnota ceny domu. Táto úloha vám pomôže pochopiť, ako aplikovať neurónové siete na regresné problémy, kde výstupom je spojitá hodnota.

Zadanie:

Na riešenie úlohy použite doprednú neurónovú sieť (viacvrstvový perceptrón), kde vyskúšate viacero modelov a môžete sa snažiť nájsť ten najmenší, ale stále úspešný. Natrénujte ju pomocou algoritmov SGD, SGD s momentom a ADAM. Odmerajte trénovaciu a testovaciu chybu. V úlohe určite použite knižnicu PyTorch (stačí verzia pre CPU), iné knižnice podľa svojho uváženia.

Náčrt modelu:

  1. Stiahnite si dátovú množinu alebo použite knižnicu scikit-learn a v nej je dataset možné priamo stiahnuť. Je dobré napísať potom k tomu triedu zdedenú z torch.utils.data.Dataset.
  2. Rozdeľte dátovú množinu na trénovaciu a testovaciu (napr. 80% tréning, 20% testovanie).
  3. Predspracujte vhodne dáta: normalizujte jednotlivé údaje. Zvážte škálovanie cieľových hodnôt na zlepšenie stability tréningu.
  4. Navrhnite hyperparametre modelu – počet vrstiev a ich veľkosti, zvoľte si vhodné aktivačné funkcie, nastavte rýchlosť učenia a veľkosť dávky (batch) pre optimalizačný algoritmus.
  5. Postupne vyskúšajte všetky tri optimalizačné algoritmy spomenuté v zadaní. Trénujte model vždy rovnaký počet epoch, aby ich bolo možné porovnať.

Dokumentácia:

Dokumentácia má obsahovať popis architektúry a tabuľku hyperparametrov (experiment popíšte tak, aby ho bolo na základe textu možné zopakovať), grafy z priebehu tréningu (trénovacia a testovacia chyba). Na záver napíšte stručné zhodnotenie, ako úspešné boli optimalizačné algoritmy a architektúry, ktoré ste vyskúšali.


Podúloha: Backpropagation algoritmus

Úloha:

V tejto úlohe budete implementovať plne funkčný algoritmus backpropagation, ktorý je kľúčovým komponentom tréningu neurónovej siete. Umožňuje jej učiť sa pomocou minimalizácie zadanej chybovej funkcie. Treba implementovať doprednú aj spätnú časť pre jednotlivé operátory a funkcie, ako aj aktualizácie parametrov siete. Algoritmus overíte natrénovaním jednoduchej doprednej neurónovej siete (viacvrstvového perceptrónu).

Zadanie:

Na riešenie úlohy použite knižnicu NumPy pre maticové a vektorové operácie. Použitie knižníc ako PyTorchTensorFlow, ktoré obsahujú autograd je zakázané. Implementujte modulárnu architektúru, v ktorej bude možné jednotlivé moduly reťaziť. Implementácia bude obsahovať lineárnu vrstvu, aktivačnú funkciu sigmoid, tanh, relu a chybovú funkciu MSE (mean squared error).

Náčrt modelu:

  1. Pre validáciu algoritmu použite XOR problém, použite dvojvrstvovú sieť, ktorá bude mať na skrytej vrstve 4 neuróny, na výstupnej vrstve 1 neurón a trénovať sa bude pomocou MSE chybovej funkcie. Rýchlosť učenia môže byť 0.1 až 0.01 a počet epoch by mal stačiť okolo 500.
  2. Najskôr implementujte dopredný smer pre jednotlivé moduly a spojte ich do jedného modelu (zoznam modulov), ktorý vám zo vstupných údajov vráti výstup.
  3. Začnite od MSE funkcie a pre každý modul spočítajte jeho deriváciu a implementujte spätný smer. Dajte si pozor, lebo pri počítaní derivácie je potrebné udržiavať aj niektoré výsledky z dopredného smeru. Moduly môžu mať svoj stav, alebo môžu byť aj bezstavové a výsledky môžu byť odložené niekde inde. To ponechávame na vašej voľbe.
  4. Implementujte pravidlo pre aktualizáciu váh bez momentu a potom aj s momentom.
  5. Volanie modelu by malo byť jednoduché, pre dopredný smer model.forward(vstup) a pre spätný smer model.backward(chyba) a následne volanie aktualizácie parametrov (či už to bude implementovať model, alebo iná samostatná trieda je opäť na vás).

Dokumentácia:

Dokumentácia má obsahovať jednoduchý popis vašej implementácie algoritmu backpropagation. Vyskúšajte sieť s 1 a 2 skrytými vrstvami pre problémy AND, OR a XOR, k dokumentácii priložte grafy z priebehu tréningu (trénovacia chyba). Vyskúšajte rôzne nastavenia tréningu s momentom a bez momentu a aspoň 2 hodnoty rýchlosti učenia pre problém XOR.