Algorytmy stochastyczne

Transkrypt

Algorytmy stochastyczne
Algorytmy stochastyczne
18 lutego 2014
Organizacja przedmiotu
•
•
•
•
przedmiot: Algorytmy stochastyczne, semestr letni 2013/2014,
prowadzący: Jarosław Piersa,
forma: wykład + laboratoria (30h + 30h),
wymagania programowe: umiejętność samodzielnego myślenia, Kurs Programowania I oraz II, Algorytmy i Struktury
Danych, podstawy rachunku prawdopodobieństwa i statystyki matematycznej: np. Statystyczna Analiza Danych i /
lub Modele i Metody Probabilistyczne,
• egzamin: po semestrze letnim, pisemny + ustny,
• zaliczenie laboratoriów: projekty programistyczne; ocena BDB+ z laboratoriów daje zwolnienie z egzaminu pisemnego.
Literatura Podstawowa
1.
2.
3.
4.
Z. Michalewicz Algorytmy genetyczne + struktury danych = programy ewolucyjne,
P. Prusinkiewicz, A. Liendenmayer The algorithmic beauty of plants
P. Judea, Probabilistic reasoniings in intelligent systems: Networks of plausible inference
R. Neapolitan, Learning Bayesian Networks
Literatura Uzupełniająca
1. U. Borczyka, Algorytmy optymalizacji mrowiskowej, WUŚ 2006
Program
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Biologiczne motywacja algorytmów genetycznych,
Podstawowy algorytm genetyczny,
Programy ewolucyjne,
Systemy Liendenmayera,
(?) Algorytmy optymalizacji mrowiskowej,
Sieci bayesowskie,
Wnioskowanie w sieciach bayesowskich,
Uczenie parametryczne sieci bayesowskich,
Uczenie strukturalne w sieciach bayesowskich,
(??) Grafy losowe.
Abstrakt
Celem zajęć jest zapoznanie studentów z algorytmami optymalizacji opartymi losowości (algorytmy genetyczne) oraz systemami wnioskowania przy niepewnej wiedzy (sieci bayesowskie).
Zajęciom towarzyszą laboratoria o charakterze programistycznym. Przedmiot kierowany jest dla studentów informatyki:
drugiego stopnia oraz trzeciego roku pierwszego stopnia.
Skala ocen
Co będzie?
• Dużo programowania (pisanie programów),
• Trochę matematyki,
• Prototyp algortytmu do zaimplementowania na zajęciach (język dowolny, ściągawki będą w Matlabie / Octavie),
• Projekty zaliczeniowe pisane głównie w domu, prezentowane w trakcie zajęć,
• Obecność wymagana (ponad 3 nieobecności = +1 projekt do napisania).
Zaliczenie
Zaliczenie laboratoriów na podstawie projektów programistycznych — implementowanie omawianych algorytmów.
Projekty ważone od 1 do 3 punktów.
Punktacja
ocena
dst
db
bdb
bdb+
punkty
3p
4p
5p
6 lub więcej / 5 wybitnych
Na ocenę bdb+ wymagana jest terminowość:
• przynajmniej jeden projekt do końca marca,
• przynajmniej jeden projekt do końca kwietnia,
• przynajmniej jeden projekt do końca maja,
• przynajmniej jeden projekt do końca przedmiotu w czwerwcu,
• wszystkie projekty przed pierwszym terminem egzaminu!
Wskazówki
Na co należy zwrócić uwagę pisząc programy:
• (Zalecane choć nie wymagane) projekty mogą być prezentowane na forum całej grupy laboratoryjnej. Do wykorzystania
projektor w sali laboratoryjnej. Prezentacja powinna trwać 5 do 10 minut. W trakcie prezentacji należy przedstawić
funkcjonalności programu, zastosowane rozwiązanie, wykorzystaną technologię, zaakcentować rzeczy, którymi autor
chciałby się pochwalić. Można wykorzystać wprowadzającą prezentację pdf. Prezentację może kończyć krótka dyskusja.
• Zadania będą sprawdzane z autorem siedzącym obok, w trakcie laboratorium lub na konsultacjach. Zadania nie będą
sprawdzane zaocznie.
• Zadania powinny być napisane tak, aby umożliwić prostą i szybką ocenę poprawności działania po efektach (ocena
poprawności poprzez analizowanie wypisanych -nastu stron liczb na stdout nie jest prosta ani szybka)
• Program może być uruchamiany na laptopie bądź komputerze w sali laboratoryjnej. Proszę upewnić się, że mają
Państwo pod ręką wszystkie wymagane środowiska lub/i biblioteki (dotnet framework, jdk, interpreter pythona, karta
graficzna obsługująca Cuda etc).
• Podczas sprawdzania należy mieć kod źródłowy programu oraz edytor podświetlający składnię.
• Fragmentem zaliczenia może być kilka dodatkowych pytań o np: algorytm, sposób implementacji, zagadnienia teoretyczne powiązane z zadaniem i/lub dopisanie dodatkowej funkcjonalności w trakcie sprawdzania.
• Im później oddawane zadanie tym większa szansa na dodatkowe pytania.
• Większe projekty na (2 i więcej punktów) można pisać w dwuosobowych zespołach.
Orientacyjna lista projektów
Do wyboru 3 do 6 punktów:
• algorytmy genetyczne (luty):
– szukanie minimum / maksimum (1p),
– dylemat więźnia / problem zasp (2p),
– problem komiwojażera (2p),
– wyszukiwanie ścieżek (2p),
• Systemy Liendenmayera (marzec):
– rysowanie roślin (1p),
– generowanie terenu (1p),
– renderowanie lasu / łąki (2p),
• Optymalizacja mrowiskowa (marzec/kwiecień):
– TBU
• Sieci bayesowskie (kwiecień / maj / czerwiec)
– sieć bayesowskia, generowanie próbek (1p)
– wnioskowanie w sieciach bayesowskich (maj)
∗
∗
∗
∗
NBC, naive bayesian classifier (1p)
ważone próbkowanie logiczne (1p)
próbnik Gibbsa (1p)
algorytm Kima-Pearla, przesyłanie wiadomości (2p)
– uczenie parametryczne sieci bayesowskich (maj / czerwiec)
∗ algorytm Dirichleta (1p)
∗ algorytm EM (1p)
– uczenie strukturalne sieci bayesowskich (maj / czerwiec)
∗ algorytm PC + uzupełnianie do pełnej sieci (2p)
∗ algorytm K2 (2p)
• Uwaga! Z sieci bayesowskich można wykonać pakiet, który łączy działanie, wnioskowanie i uczenie. Poszczególne
punkty można wykonywać „na razy”.