Warning
This page is located in archive. Go to the latest version of this course pages.

Posilované učení

Implementujte funkci 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_rl.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.

observation, reward, done, _ = env.step(action)
state = observation[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.

Váš kód bude hodnoticím skriptem volán cca takto:

import rl_agent
 
env = kuimaze.HardMaze(...)  # tady skript vytvoří prostředí
policy = rl_agent.learn_policy(env)  # limit 20 sekund
 
obv = env.reset()
state = obv[0:2]
is_done = False
while not is_done:
  action = int(policy[state])
  obv, reward, is_done, _ = env.step(action)
  nextstate = obv[0:2]
  total_reward += reward
  state = nextstate

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 1 Komentáře, struktura, elegance, čistota kódu, vhodné pojmenování proměnných…

Kvalita kódu (1 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 sama 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: 2022/04/21 12:02 by peckama2