English tutorial is here.

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

  • Git k získávání materiálů k domácím úkolům.
  • ReCodExu pro odevzdávání úkolů.
Žá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.: Úvod, A* algoritmus a heuristiky