Markow-Entscheidungsprozesse

Reinforcement Learning mit Gymnasium in Python

Fouad Trad

Machine Learning Engineer

MDP

  • Modelliert RL-Umgebungen mathematisch

Bild einer komplexen Umgebung (Smart City) und der zu extrahierenden Komponenten: Zustände, Aktionen, Belohnungen und Übergangswahrscheinlichkeiten.

Reinforcement Learning mit Gymnasium in Python

MDP

  • Modelliert RL-Umgebungen mathematisch

Diagramm: Aus einer komplexen Umgebung extrahieren wir MDP-Komponenten (Zustände, Aktionen, Belohnungen, Übergangswahrscheinlichkeiten), um sie mit modellbasiertem RL zu lösen.

Reinforcement Learning mit Gymnasium in Python

Markow-Eigenschaft

  • Künftiger Zustand hängt nur vom aktuellen Zustand und der Aktion ab

Bild eines Schachbretts mit Pfeilen für mögliche Züge.

Reinforcement Learning mit Gymnasium in Python

Frozen Lake als MDP

  • Agent soll Ziel erreichen, ohne in Löcher zu fallen

Bild der Frozen-Lake-Umgebung.

Reinforcement Learning mit Gymnasium in Python

Frozen Lake als MDP – Zustände

  • Positionen, die der Agent einnehmen kann

Bild mit drei verschiedenen Positionen des Agenten in der Frozen-Lake-Umgebung.

Reinforcement Learning mit Gymnasium in Python

Frozen Lake als MDP – Terminalzustände

  • Führen zum Ende der Episode

Bild mit den Terminalzuständen in der Frozen-Lake-Umgebung.

Reinforcement Learning mit Gymnasium in Python

Frozen Lake als MDP – Aktionen

  • Hoch, runter, links, rechts

Bild mit den Aktionen in Frozen Lake und ihren Labels: 0-links, 1-runter, 2-rechts, 3-hoch.

Reinforcement Learning mit Gymnasium in Python

Frozen Lake als MDP – Transitionen

  • Aktionen führen nicht immer zum erwarteten Ergebnis

Bild mit Agent oben links im Gitter, der nach rechts will.

Reinforcement Learning mit Gymnasium in Python

Frozen Lake als MDP – Transitionen

  • Aktionen führen nicht immer zum erwarteten Ergebnis

Bild, das zeigt, dass der Agent nach rechts gehen kann.

Reinforcement Learning mit Gymnasium in Python

Frozen Lake als MDP – Transitionen

  • Aktionen führen nicht immer zum erwarteten Ergebnis

Bild, das zeigt, dass der Agent auch nach unten gehen kann.

Reinforcement Learning mit Gymnasium in Python

Frozen Lake als MDP – Transitionen

  • Aktionen führen nicht immer zum erwarteten Ergebnis

Bild, das zeigt, dass der Agent auch stehen bleiben kann.

Reinforcement Learning mit Gymnasium in Python

Frozen Lake als MDP – Transitionen

  • Aktionen führen nicht immer zum erwarteten Ergebnis

Bild, das zeigt: Wählt der Agent rechts, gibt es Wahrscheinlichkeiten für rechts, runter oder stehen bleiben.

  • Übergangswahrscheinlichkeiten: Wahrscheinlichkeit, einen Zustand zu erreichen, gegeben Zustand und Aktion
Reinforcement Learning mit Gymnasium in Python

Frozen Lake als MDP – Belohnungen

  • Belohnung nur im Zielzustand

Bild mit dem Agenten im Zielzustand.

Reinforcement Learning mit Gymnasium in Python

Gymnasium: Zustände und Aktionen

import gymnasium as gym


env = gym.make('FrozenLake', is_slippery=True)
print(env.action_space)
print(env.observation_space)
print("Number of actions: ", env.action_space.n)
print("Number of states: ", env.observation_space.n)
Discrete(4)

Discrete(16)
Number of actions: 4
Number of states: 16
Reinforcement Learning mit Gymnasium in Python

Gymnasium: Belohnungen und Transitionen

env.unwrapped.P: Dictionary mit Zustands-Aktions-Paaren als Schlüsseln

print(env.unwrapped.P[state][action])
[
  (probability_1, next_state_1, reward_1, is_terminal_1), 
  (probability_2, next_state_2, reward_2, is_terminal_2), 
  etc.
]
Reinforcement Learning mit Gymnasium in Python

Gymnasium: Belohnungen und Transitionen – Beispiel

state = 6
action = 0

print(env.unwrapped.P[state][action])
[(0.3333333333333333, 2, 0.0, False), 
(0.3333333333333333, 5, 0.0, True), 
(0.3333333333333333, 10, 0.0, False)]

Bild mit Aktionsnummern: 0-links, 1-runter, 2-rechts, 3-hoch.

Bild mit dem Agenten in Zustand 6; Zustände von oben links nach unten rechts zeilenweise nummeriert.

Reinforcement Learning mit Gymnasium in Python

Lass uns üben!

Reinforcement Learning mit Gymnasium in Python

Preparing Video For Download...