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

Wprowadzenie do Sztucznej Inteligencji

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.202424.04.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.

Kacper Kania
Kacper Kania
PhD Student

My research interests include using machine learning algorithms in common computer vision and computer graphics problems