Warning
This page is located in archive.

Posilované učení

Implementujte metodu learn_policy(env) v souboru rl_agent.py který nahrajte do Brute. env je tentokrát typu HardMaze. Očekávaným výstupem je policy, slovník klíčovaný stavy, hodnoty mohou být z [0,1,2,3], což odpovídá up, right, down, left (N,E,S,W). Limit na učení na jednom postředí je 20 sekund. Nezapomeňte před odevzdáním vypnout vizualizace, viz VERBOSITY v rl_sandbox.py.

Opět budeme používat kostičkový svět. Stahněte si aktualizovaný balík kuimaze.zip. Vizualizační metody jsou stejné, rovněž i inicializace, ale základní filozofie práce s prostředím je odlišná. Nemáme mapu a prostředí můžeme prozkoumávat pomocí hlavní metody env.step(action). Prostředí-simulátor ví, jaký je aktuální stav. Hledáme co nejlepší cestu ze startu do cíle. Chceme cestu s co nejvyšším očekávaným součtem zlevněných odměn.

obv, reward, done, _ = env.step(action)
state = obv[0:2]

Akci můžete získat třeba náhodným výběrem:

action = env.action_space.sample()

Součástí balíku je i rl_sandbox.py, kde je vidět základní náhodné procházení, možná inicializace tabulky Q hodnot, vizualizace atp.

Další příklady na stránce AI-Gym. Připomeňme z přednášky, že akce je nutná, abychom se o prostředí vůbec něco dozvěděli.

Bodové hodnocení a termíny

Termín odevzdání úlohy lze vidět v Upload systému.

Hodnocení je rozděleno následovně:

  1. Automatické hodnocení testuje výkon vašeho agenta na 5 prostředích. S vámi dodanou policy pro dané prostředí agenta pustíme n-krát a spočteme průměrný součet jím nasbíraných odměn. To pak porovnáme s učitelským řešením (agent vykonávající optimal policy). Na každém z 5ti prostředí, ve kterém budete mít 80% a více než je učitelská hodnota součtu odměn, získáváte jeden bod.
  2. Manuální hodnocení je založeno na hodnocení kódu (clean code).
Hodnocený výkon min max poznámka
Kvalita RL algoritmu 0 5 Ohodnocení algoritmu automatickým evaluačním systémem.
Kvalita kódu 0 2 Komentáře, struktura, elegance, čistota kódu, vhodné pojmenování proměnných…

Kvalita kódu (2 body):

  • vhodné komentáře, nebo kód je srozumitelný natolik, že komentáře nepotřebuje
  • rozumně dlouhé, respektive krátké metody/funkce
  • jména proměnných (podst. jména) a funkcí (slovesa) pomáhají čitelnosti a srozumitelnosti
  • kusy kódu se neopakují (žádné copy-paste)
  • rozumné šetření pamětí a procesorovým časem
  • konzistentní názvy i rozložení kódu v celém souboru (oddělovat slova ve všech metodách stejně, atp.)
  • přehledná struktura kódu (vyvarujte se např. nepythonovskému přiřazování mnoha proměnných v jednom řádku)

Můžete následovat pro Python určený PEP8. Většina editorů (jistě PyCharm) na nedostatky s ohledem na PEP8 i sám upozorňuje. Můžete se také inspirovat např. zde nebo si přečíst o idiomatickém pythonu na mediu či u pythonu.

courses/b3b33kui/cviceni/sekvencni_rozhodovani/rl.txt · Last modified: 2018/04/17 17:35 by hoffmmat