Zpětnovazební učení s využitím neuroevoluce

Deadline - 16. května 2024

Vyberte si pár (dvě až tři) prostředí z knihovny Gymnasium (tuto knihovnu jsme používali na druhých cvičeních) a vyřešte je za pomoci neuroevoluce. Vaším úkolem je tedy integrovat zpětnovazební učení a neuroevoluci a otestovat výsledek na zvolených prostředích.

Doporučuji vybrat některá prostředí z Classic Control nebo Toy Text skupin, ale pokud hledáte výzvu, můžete zkusit i některá prostředí ze skupiny Box2D nebo MuJoCo (např. prostředí LunarLander, Hopper a Swimmer by měla jít vyřešit, ale určitě nedoporučuji třeba prostředí Humanoid, či snad dokonce Humanoid Standup).

Co se volby algoritmu týče, můžete vyzkoušet NEAT (nebo libovolný podobný algoritmus, o kterém se někde dočtete), nebo klidně i jen vyvíjet vektor vah fixní topologie sítě, volba je na vás.

Primárním účelem tohoto úkolu je prostě si to vyzkoušet a seznámit se s danou problematikou. Vyzkoušejte tedy aspoň pár různých nastavení, přístupů, etc. (Třeba hyperparametry, různé sítě, ať už topologie, nebo aktivace, nebo co se vám zlíbí.) Napište, co jste vyzkoušeli, proč jste si mysleli, že by bylo fajn to vyzkoušet, a jak to dopadlo. Když něco nevyjde, nějaké prostředí vám nepůjde ani po několika pokusech se změnou hyperparametrů a přístupu vyřešit, pošlete mi i tak výsledky, co jste zkusili a jak to (ne)dopadlo, a pusťte se do jiného prostředí.

Řešení mi odevzdávejte mailem, ten by měl obsahovat:

  • Seznam prostředí, která jste vyzkoušeli.
  • Popis algoritmu spolu s jeho nastavením (hyperparametry apod.) a vysvětlením, proč to děláte zrovna tak a ne jinak, popřípadě co jste vše vyzkoušeli.
  • Kód algoritmu pro případnou kontrolu.
  • Grafy toho, jak se měnil výkon nejlepšího jedince v průběhu generací.
  • (V - uznávám - nepravděpodobném případě, že byste se rozhodli vyzkoušet více přístupů, nezapomeňte poznamenat, kterých výsledků je dosaženo kterým algoritmem, a pochlubit se popisem a implementací všech těchto přístupů.)