Učení s časovou diferenci

Reinforcement Learning with Gymnasium in Python

Fouad Trad

Machine Learning Engineer

TD učení vs. Monte Carlo

 

TD učení
  • Bez modelu
  • Odhad Q-tabulky na základě interakce
  • Aktualizace Q-tabulky každý krok v epizodě
  • Vhodné pro dlouhé nebo neomezené epizody

 

Monte Carlo
  • Bez modelu
  • Odhad Q-tabulky na základě interakce
  • Aktualizace Q-tabulky po dokončení alespoň jedné epizody
  • Vhodné pro krátké epizodické úlohy
Reinforcement Learning with Gymnasium in Python

TD učení jako předpověď počasí

Obrázek zobrazující různé povětrnostní podmínky ve stejném místě v různých časech.

Reinforcement Learning with Gymnasium in Python

SARSA

  • Algoritmus TD
  • Metoda on-policy: upravuje strategii na základě provedených akcí

Obrázek znázorňující, že SARSA označuje aktuální stav, provedenou akci, obdrženou odměnu, pozorovaný další stav a další akci.

Reinforcement Learning with Gymnasium in Python

Aktualizační pravidlo SARSA

Obrázek znázorňující matematický vzorec aktualizačního pravidla SARSA.

  • $\alpha$: míra učení
  • $\gamma$: diskontní faktor
  • Obě hodnoty mezi 0 a 1
Reinforcement Learning with Gymnasium in Python

Frozen Lake

Obrázek prostředí Frozen Lake

Reinforcement Learning with Gymnasium in Python

Inicializace

env = gym.make("FrozenLake", is_slippery=False)

num_states = env.observation_space.n num_actions = env.action_space.n
Q = np.zeros((num_states, num_actions))
alpha = 0.1 gamma = 1 num_episodes = 1000
Reinforcement Learning with Gymnasium in Python

Smyčka SARSA

for episode in range(num_episodes):

state, info = env.reset() action = env.action_space.sample()
terminated = False while not terminated: next_state, reward, terminated, truncated, info = env.step(action)
next_action = env.action_space.sample()
update_q_table(state, action, reward, next_state, next_action)
state, action = next_state, next_action
Reinforcement Learning with Gymnasium in Python

Aktualizace SARSA

def update_q_table(state, action, reward, next_state, next_action):

old_value = Q[state, action]
next_value = Q[next_state, next_action]
Q[state, action] = (1 - alpha) * old_value + alpha * (reward + gamma * next_value)

  Obrázek znázorňující matematický vzorec aktualizačního pravidla SARSA.

Reinforcement Learning with Gymnasium in Python

Odvození optimální politiky

policy = get_policy()
print(policy)
{ 0: 1,  1: 2,  2: 1,  3: 0, 
  4: 1,  5: 0,  6: 1,  7: 0, 
  8: 2,  9: 1, 10: 1, 11: 0, 
 12: 0, 13: 2, 14: 2, 15: 0}

Obrázek znázorňující optimální politiku v prostředí Frozen Lake s akcemi reprezentovanými šipkami; agent se vyhýbá pádu do děr.

Reinforcement Learning with Gymnasium in Python

Pojďme cvičit!

Reinforcement Learning with Gymnasium in Python

Preparing Video For Download...