Temporale-differentie-leren

Reinforcement Learning met Gymnasium in Python

Fouad Trad

Machine Learning Engineer

TD-leren vs. Monte Carlo

 

TD-leren
  • Modelvrij
  • Schat Q-tabel via interactie
  • Werk Q-tabel elke stap binnen episode bij
  • Geschikt voor lange/onbepaalde episodes

 

Monte Carlo
  • Modelvrij
  • Schat Q-tabel via interactie
  • Werk Q-tabel bij na ten minste één voltooide episode
  • Geschikt voor korte episodische taken
Reinforcement Learning met Gymnasium in Python

TD-leren als weersvoorspelling

Afbeelding met verschillend weer op verschillende tijden op dezelfde plek.

Reinforcement Learning met Gymnasium in Python

SARSA

  • TD-algoritme
  • On-policy-methode: past strategie aan op basis van genomen acties

Afbeelding die laat zien dat SARSA staat voor huidige staat, genomen actie, beloning, geobserveerde volgende staat en volgende actie.

Reinforcement Learning met Gymnasium in Python

SARSA-update-regel

Afbeelding met de wiskundige formule van de SARSA-update-regel.

  • $\alpha$: leersnelheid
  • $\gamma$: discontovoet
  • Beide tussen 0 en 1
Reinforcement Learning met Gymnasium in Python

Frozen Lake

Afbeelding van de Frozen Lake-omgeving

Reinforcement Learning met Gymnasium in Python

Initialisatie

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 met Gymnasium in Python

SARSA-lus

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 met Gymnasium in Python

SARSA-updates

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)

  Afbeelding met de wiskundige formule van de SARSA-update-regel.

Reinforcement Learning met Gymnasium in Python

Het optimale beleid afleiden

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}

Afbeelding met het optimale beleid in de Frozen Lake-omgeving met pijlen voor acties; je ziet hoe de agent gaten vermijdt.

Reinforcement Learning met Gymnasium in Python

Laten we oefenen!

Reinforcement Learning met Gymnasium in Python

Preparing Video For Download...