Introduction to Artificial Intelligence [PL, WSI-24L-G103, WSI-24L-G104]

Introduction to Artificial Intelligence [PL, WSI-24L-G103, WSI-24L-G104]

Table of Contents

Zasady laboratorium

Celem laboratorium jest zapoznanie się z podstawowymi algorytmami sztucznej inteligencji, ich zastosowaniem oraz analizą. Zaliczenie laboratorium odbywa się poprzez oddanie siedmiu ćwiczeń. Pełen kalendarz ćwiczeń znajduje się poniżej. Wszystkie ćwiczenia są realizowane indywidualne poza ćwiczeniem związanego z implementacją sieci neuronowych, gdzie zadanie będzie realizowane w parach. Na każde zadanie przypada 2 tygodnie. Nie ma obowiązku bycia na zajęciach po odebranie tematu ćwiczenia.

Miejsce i czas zajęć

  • Grupa 103: Sala 011, budynek WEiTI, każdy wtorek, 12:15-14:00
  • Grupa 104: Sala 09, budynek WEiTI, każda środa, 16:15-18:00

Wymagania

Zaliczenie pojedynczego zajęcia odbywa się poprzez oddanie:

  • sprawozdania, na które składają się części opisane niżej,
  • kodu źródłowego.

Na sprawozdanie składa się:

  • krótki opis działania algorytmu,
  • opis eksperymentów,
  • wyniki jakościowe i ilościowe,
  • wnioski, obserwacje.

Całe sprawozdanie powinno zamykać się maksymalnie w 5 stronach A4, w formacie jednokolumnowym.

Ocena i oddawanie zadań

Z każdego zadania można uzyskać 0-7 pkt., natomiast w przypadku tematu z sieciami neuronowymi: 0-8pkt.

Na liczbę przyznanych punktów składają się:

  • poprawność implementacji algorytmu: 30%,
  • poprawność przeprowadzonych eksperymentów: 30%,
  • analiza i dyskusja wyników 35%,
  • poprawność sprawozdania: 5%.

Oddawanie zadania na zajęciach wygląda następująco:

  • student pokazuje działanie algorytmu,
  • odpowiada na kilka pytań dotyczących wyników z raportu i działania algorytmu.

Oddane zadanie, czyli raport + kod źródłowy, należy spakować do pliku wsi-{numer-indeksu}-{numer ćwiczenia}.zip i przesłać na kacper.kania.dokt@pw.edu.pl.

Możliwe jest oddanie zadania przed terminem.

Zalecenia

Zachęcam do implementacji algorytmów przy wykorzystaniu Pythona. W ten sposób zwiększycie Państwo swoje szanse na skuteczność mojej pomocy przy ewentualnym debugowaniu. Inne języki programowania (Rust, C++, C#, Java) też są dopuszczalne.

Przy wykorzystaniu Pythona, zachęcam do automatycznego formatowania kodu za pomocą blacka i komendą:

black --line-length 79 ./**/*.py

W przypadku korzystania z VSCode’a lub PyCharma możliwe jest podpięcie automatycznego formatowania kodu.

Użytkowników Windowsa zachęcam do korzystania z Windows Subsystem for Linux (WSL).

Opóźnienie oddawania

Każdy dzień opóźnienia skutkuje obniżeniem punktów końcowych za zadanie według wzoru:

$$ O_k = \max \{O_p(1- 10\% n), 0\}, $$

gdzie $n$ to liczba dni opóźnienia (dzień po oddaniu $n{=}1$), $O_p$ to proponowana liczba punktów, a $O_k$ to końcowa liczba punktów. Dla przykładu, za tydzień opóźnienia zadania za 7 pkt. otrzymują Państwo 2,1 pkt.

Konsultacje

Jestem dostępny w piątki o 13 w sali 413 budynku WEiTI. Proszę powiadomić mnie wcześniej drogą mailową lub na Teamsie w przypadku chęci odbycia takich konsultacji.

Wykorzystanie modeli językowych

Dopuszczam wykorzystywanie modeli językowych, takich jak ChatGPT, w następujących celach:

  • edycja tekstu już gotowego sprawozdania (np. w celu usunięcia błędów językowych)
  • copilot (lub inne dowolne narzędzie tego typu) w celu predykcji kodu (jako następnego tokenu, nie jako całości algorytmu)

Terminarz dla grupy 103

Lp.TematStartOddaniePunktacja
1Przeszukiwanie przestrzeni27.02.202412.03.20240-7
2Algorytmy ewolucyjne i genetyczne12.03.202426.03.20240-7
3Dwuosobowe gry deterministyczne26.03.202416.04.20240-7
4Regresja i klasyfikacja16.04.202407.05.20240-7
5Sztuczne sieci neuronowe07.05.202421.05.20240-8
6Uczenie ze wzmocnieniem21.05.202404.06.20240-7
7Modele bayesowskie04.06.202411.06.20240-7

Terminarz dla grupy 104

Lp.TematStartOddaniePunktacja
1Przeszukiwanie przestrzeni28.02.202413.03.20240-7
2Algorytmy ewolucyjne i genetyczne13.03.202427.03.20240-7
3Dwuosobowe gry deterministyczne27.03.202410.04.20240-7
4Regresja i klasyfikacja10.04.202408.05.20240-7
5Sztuczne sieci neuronowe24.04.202422.05.20240-8
6Uczenie ze wzmocnieniem15.05.202405.06.20240-7
7Modele bayesowskie29.05.202412.06.20240-7

Zadania

Zadanie 1.

Zaimplementuj metodę gradientu prostego oraz przeprowadź analizę zaimplementowanej metody dla dwóch funkcji:

  • Funkcji Rastrigina dla zakresu $\mathbf{x} \in [-5,12; 5,12], \mathbf{x}\in\mathbb{R}^2$: $$ f(\mathbf{x}) = 10d + \sum^d_{i=1}\left[x^2_i - 10\cos(2\pi x_i)\right], $$
  • Funkcji Griewanka dla zakresu $\mathbf{x} \in [-5, 5], \mathbf{x}\in\mathbb{R}^2$ $$ f(\mathbf{x}) = \sum^d_{i=1} \frac{x_i^2}{4000} - \prod^d_{i=1}\cos\left(\frac{x_i}{\sqrt{i}} \right) +1, $$ gdzie $d$ to liczba wymiarów oraz $d{=}2$.

Eksperymenty powinny zawierać między innymi: testy różnych wartości parametrów uczenia ($\beta$, patrz slajdy z wykładu), oraz różne punkty inicjalizacji (blisko optimum, daleko od optimum). W czasie zajęć proszę pokazać zbieżność dla funkcji:

$$ f(\mathbf{x}) = \sum_{i=1}^d x_i^2. $$

Więcej informacji, w tym wizualizacje, na temat testowanych funkcji możecie znaleźć tutaj.

Zadanie 2.

Treść zadania można pobrać tutaj: zadanie-2-algorytmy-ewolucyjne.pdf. W razie pytań, zapraszam do kontaktu na MS Teams oraz na konsultacje.

Zadanie 3.

Treść zadania można pobrać tutaj: zadanie-3-minmax.pdf. W razie pytań, zapraszam do kontaktu na MS Teams oraz na konsultacje.

Zadanie 4.

Treść zadania można pobrać tutaj: zadanie-4-svm-drzewo.pdf. W razie pytań, zapraszam do kontaktu na MS Teams oraz na konsultacje.

Zadanie 5.

Treść zadania można pobrać tutaj: zadanie-5-mlp.pdf. W razie pytań, zapraszam do kontaktu na MS Teams oraz na konsultacje. Proszę pamiętać, że zadanie jest wykonywane w grupach dwuosobowych!

Zadanie 6.

Treść zadania można pobrać tutaj: zadanie-6-q-learning.pdf. W razie pytań, zapraszam do kontaktu na MS Teams oraz na konsultacje.

Zadanie 7.

Treść zadania można pobrać tutaj: zadanie-7-nb.pdf. razie pytań, zapraszam do kontaktu na MS Teams oraz na konsultacje.