Temporal-Difference-Lernen

Reinforcement Learning mit Gymnasium in Python

Fouad Trad

Machine Learning Engineer

TD-Lernen vs. Monte Carlo

 

TD-Lernen
  • Modellfrei
  • Schätzt Q-Tabelle aus Interaktionen
  • Aktualisiert Q-Tabelle nach jedem Schritt im Episode
  • Geeignet für lange/unbestimmte Episoden

 

Monte Carlo
  • Modellfrei
  • Schätzt Q-Tabelle aus Interaktionen
  • Aktualisiert Q-Tabelle erst nach mind. einer Episode
  • Geeignet für kurze, episodische Aufgaben
Reinforcement Learning mit Gymnasium in Python

TD-Lernen als Wettervorhersage

Bild mit verschiedenen Wetterlagen zu verschiedenen Zeiten am selben Ort.

Reinforcement Learning mit Gymnasium in Python

SARSA

  • TD-Algorithmus
  • On-Policy-Methode: passt Strategie an die gewählten Aktionen an

Bild, das zeigt, dass SARSA für aktuellen Zustand, gewählte Aktion, erhaltene Belohnung, beobachteten nächsten Zustand und nächste Aktion steht.

Reinforcement Learning mit Gymnasium in Python

SARSA-Update-Regel

Bild mit der mathematischen Formel der SARSA-Aktualisierungsregel.

  • $\alpha$: Lernrate
  • $\gamma$: Diskontfaktor
  • Beide zwischen 0 und 1
Reinforcement Learning mit Gymnasium in Python

Frozen Lake

Bild der Frozen-Lake-Umgebung

Reinforcement Learning mit Gymnasium in Python

Initialisierung

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

SARSA-Schleife

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 mit 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)

  Bild mit der mathematischen Formel der SARSA-Aktualisierungsregel.

Reinforcement Learning mit Gymnasium in Python

Optimale Policy ableiten

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}

Bild mit der optimalen Policy in Frozen Lake; Aktionen als Pfeile, der Agent meidet Löcher.

Reinforcement Learning mit Gymnasium in Python

Lass uns üben!

Reinforcement Learning mit Gymnasium in Python

Preparing Video For Download...