====== Warunki zaliczenia ====== ===== Wykład ===== Zaliczenie wykładu odbywa się na podstawie egzaminu w formie testu w systemie Moodle. Aby zaliczyć egzamin, należy uzyskać co najmniej 50% punktów. ===== Laboratorium ===== Zaliczenie laboratorium odbywa się na podstawie rozwiązań zadań wykonywanych na zajęciach oraz dwóch projektów zaliczeniowych. Warunki zaliczenia laboratorium: * zaliczenie minimum 50% zadań z laboratorium. Każde zadanie oceniane jest w skali 0–1 punktu. Zadanie uznaje się za zaliczone po uzyskaniu 50% (0,5 punktu). Zadania przewidziane są do realizacji w czasie laboratorium; w przypadku braku oddania rozwiązania podczas zajęć istnieje możliwość przesłania rozwiązania w terminie do 7 dni od daty zajęć. Po tym terminie zadanie uznawane jest za niezaliczone (0 punktów). * dwa projekty zaliczeniowe realizowane samodzielnie. Każdy projekt musi uzyskać co najmniej 50% punktów. ===== Projekty zaliczeniowe ===== Każdy projekt składa się z aplikacji oraz raportu (dokumentacji). Raport powinien zawierać zwięzły opis: * opis metody (sieć neuronowa, algorytm uczenia itp.); * opis wymagań niezbędnych do zainstalowania i uruchomienia aplikacji; * opis parametrów (ustawień) oraz funkcji programu; * opis symulacji przeprowadzonych za pomocą aplikacji. Zaprojektowane symulacje powinny umożliwić ocenę działania sieci oraz porównanie wyników dla różnych ustawień (np. różne konfiguracje architektury). Raport powinien zawierać interpretację wyników symulacji oraz wnioski dotyczące działania sieci i wpływu poszczególnych parametrów. ===== Projekt 1 ===== **Projekt 1** to samodzielna implementacja od podstaw wybranej sieci neuronowej wraz z algorytmem treningu. Projekt powinien zawierać: - implementację algorytmu treningu sieci do rozwiązywania określonego zadania w dowolnym języku programowania (np. Python, Java, C++ itp.); - możliwość zmiany ustawień za pomocą odpowiedniego interfejsu (np. GUI, pliki konfiguracyjne lub argumenty wiersza poleceń) bez konieczności "dłubania w kodzie"; - możliwość zapisu wytrenowanego modelu oraz wykorzystania zapisanego modelu do predykcji nowych danych (jeśli jest to możliwe dla wybranego modelu). ==== Tematy projektów ===== * **Self-Organizing Maps** (SOM) — np. wizualizacja mapowania 2D→1D (np. „sznurek” neuronów odwzorowujący figurę) lub 2D→2D (odwzorowanie siatki neuronów); * rozrastająca się kwantyzacja wektorowa, np. Growing Cell Structures, Neural Gas itp.; * **MLP** z algorytmem wstecznej propagacji w zadaniach klasyfikacji lub regresji. Minimalna architektura z jedną warstwą ukrytą, pod warunkiem, że implementacja nie korzysta z bibliotek do operacji na macierzach (takich jak NumPy). Architektura o dowolnej liczbie warstw i neuronów (tu można wykorzystać biblioteki do operacji na macierzach). Możliwość wyboru funkcji aktywacji i algorytmu optymalizacji. * **sieć Hopfielda** w roli pamięci autoasocjacyjnej (np. zapamiętywanie obrazków, cyfr). Można dodać interfejs do rysowania wzorców oraz możliwość zaszumienia wzorca wejściowego. Inne zastosowanie: rozwiązanie problemów optymalizacyjnych (np. problem komiwojażera). * **autoenkoder** do kompresji stratnej sygnału. Minimalna architektura: jedna warstwa kodująca; w bardziej ambitnych podejściach możliwe jest definiowanie głębokiego kodera i dekodera. Obok kodowania można zrealizować sieć do odszumiania sygnału; * inne klasyczne algorytmy po uzgodnieniu z prowadzącym. ===== Projekt 2 ===== **Projekt 2** to demonstracja działania wybranego modelu głębokiego. Do realizacji można wykorzystać dowolne oprogramowanie lub framework umożliwiający trening głębokich sieci neuronowych (np. TensorFlow, Keras, PyTorch). Projekt może być autorską aplikacją wykorzystującą istniejące modele do własnych zastosowań lub może prezentować użycie znanych modeli wytrenowanych na własnym zestawie danych. W ramach projektu można również zmodyfikować trening wybranego modelu głębokiego wzorując się na repozytoriach dostępnych w internecie. Wówczas raport powinien uwzględniać porównanie wyników działania sieci dla kilku konfiguracji treningu (np. z różną głębokością architektury, z odmiennymi algorytmami regularyzacji, itp.). ==== Tematy projektów ===== Przykładowe tematy projektów * rozpoznawanie nastroju osoby na zdjęciu lub z kamery internetowej * generowanie muzyki w stylu wybranego artysty lub gatunku muzycznego * generowanie zdjęć twarzy lub innych obiektów * generowanie tekstu w stylu wybranego autora lub gatunku literackiego * rozpoznawanie mowy lub tekstu pisanego odręcznie * rozpoznawanie twarzy (lub innych obiektów) na zdjęciach lub wideo * usuwanie defektów ze zdjęć lub wideo (np. usuwanie szumu, poprawa jakości, itp.) * zwiększanie rozdzielczości zdjęć lub wideo (super-resolution) * analiza sentymentu tekstu, rozpoznawanie emocji z tekstu pisanego (np. z recenzji, komentarzy, itp.) * własne propozycje mile widziane ===== Terminy oddania projektów ===== Temat projektu należy najpierw zgłosić poprzez umieszczenie krótkiego opisu w pliku ''README.md'' w repozytorium projektu na GitHubie. * Projekt 1: * termin zgłaszania tematu: 30 kwietnia 2026 r. * termin oddania do 31 maja 2026 r. * Projekt 2: * termin zgłaszania tematu: 31 maja 2026 r. * termin oddania do 15 czerwca 2026 r. * Zaliczenie projektów * 16 czerwca 2026 r. - krótka prezentacja projektu i omówienie wyników na ostatnich laboratoriach * w późniejszym terminie (do 30 czerwca 2026 r.) indywidualnie, po uzgodnieniu terminu z prowadzącym