Úvod do umělé inteligence: Cvičení
Cílem předmětu je poskytnout studentům přehled základních metod a konceptů umělé inteligence a ukázat studentům, jak se představené techniky prakticky používají.
Základní informace
- Název: Úvod do umělé inteligence (NAIL120)
- Cvičení mám v pondělí od 15:40 v S7, v úterý od 14:00 v S8 a ve středu od 10:40 v S7.
- Přednášející je Roman Barták
- Přednáška je v pondělí od 9:00 v S3.
- Další cvičení vede Jiří Švancara a Simona Ondrčková.
- Letní semestr 2023/24
Obsah předmětu
- Zavedení pojmů, historie
- Řešení úloh prohledáváním (A* a spol.)
- Splňování podmínek (Constraint satisfaction programming)
- Logické uvažování (dopředné a zpětné řetězení, rezoluce, SAT)
- Automatické plánování
- Pravděpodobnostní uvažování (Bayesovské sítě)
- Rozhodování
- Hry a teorie her
- Strojové učení (rozhodovací stromy, regrese, zpětnovazební učení)
- Filozofické a etické aspekty
Zápočet
Pokud se stávající situace výrazně nezmění, bude zápočet udělen za domácí úkoly. Z každého úkolu můžete získat alespoň 10 bodů a na zápočet potřebujete získat minimálně sedmi-násobek počtu úkolů. Předběžně plánujeme těchto 10 domácích úkolů.- Heuristiky pro A* algoritmus
- Úplné barvení pomocí Constraint satisfaction programming (CSP)
- Úplné barvení pomocí logických podmínek (SAT)
- Přeprava balíků s využitím automatického plánování
- Hledání min s použitím podmíněné pravděpodobnosti
- Lokalizace robota pomocí Markovských procesů
- Hledání cesty pro rozbitého robota pomocí Bellmanovi rovnice
- Minimaxový algoritmus pro jednoduchou hru
- Rozhodovací stromy pro zjišťování cukrovky
- Klasifikace článků neuronovou sítí
K organizaci cvičení budeme využívat tyto nástroje.
Žádám všechny studenty mého cvičení, aby se přihlásili do mojí skupiny v recodexu. Dále si stáhněte a pravidelně aktualizujte gitový repozitář s podklady k domácím úkolům.Domácí úkoly
Programovací úkoly
- Dostanete částečnou implementaci úkolu.
- Máte za úkol implementovat chybějící části. Původní části můžete upravovat, ale měli byste zachovat rozhraní, jinak neprojdou testy na recodexu.
- Úkol je testován automaticky, testovací data jsou veřejná.
- I když máte k dispozici testy, tak řešení musí řešit zadanou úlohu v plné obecnosti, a tedy není přípustné předpočítávat jakákoliv data pro dané testy.
- Cvičící si prohlédne váš program a případně koriguje bodové ohodnocení.
- Programovací jazyk je Python. Některé úkoly vyžadují instalaci knihoven pomocí nástroje pip.
Experimentální úkoly
- Cílem je změřit chování zadaného algoritmu na daných datech.
- Odevzdáváte zprávu s naměřenými hodnotami a diskusí (jako PDF).
- Pro inspiraci, jak má zpráva vypadat, se můžete podívat na příklad dynamického pole z datových struktur: zadání, řešení a zdrojové kódy.
Všeobecná pravidla
- O úkolech můžete diskutovat s ostatními, ale nesdílejte s nimi své programy ani zprávy (ukázat je přednášejícímu nebo cvičícímu samozřejmě můžete).
- Termíny jsou pevné.
- Před termínem můžete své řešení odevzdávat vícekrát, platí maximum získaných bodů.
- Kvalita vašich programů a zpráv se promítá do hodnocení.
- Implementované algoritmy musí fungovat na libovolném vstupu, i když jsou testované jen na několika případech. Není proto dovoleno předpočítat si výsledky jen pro dané testy ani jinak pro ně omezovat funkčnost programu.
- Pokud jste se kdekoliv inspirovali, citujte všechny zdroje. Chybějící citace jsou (nejen zde) považovány za významný prohřešek proti akademické etice.
Literatura
- S. Russell, P. Norvig: Artificial Intelligence. A Modern Approach, Prentice Hall, 2010
Cvičení
- 19.-21.2., 26.-28.2.: Úvod, A* algoritmus a heuristiky
- 4.-6.3.: Constraint satisfaction programming
- 11.-13.3.: SAT
- 18.-20.3.: Automatické plánování, PDDL
- 25.-27.3.: Podmíněná pravděpodobnost
- 8.-10.4.: Pravděpodobnostní odvozování v čase
- 15.-17.4.: Bellmanova rovnice užitku
- 22.-24.4.: Teorie her
- 29.-30.4.: Rozhodovací stromy
- 6.-7.4.: Neuronové sítě