Expected SARSA

Reinforcement Learning mit Gymnasium in Python

Fouad Trad

Machine Learning Engineer

Expected SARSA

  • TD-Methode
  • Model-free-Technik
  • Aktualisiert die Q-Tabelle anders als SARSA und Q-Learning

Diagramm der Schritte von Expected SARSA: Q-Tabelle initialisieren, Aktion wählen, Belohnung erhalten und Tabelle aktualisieren. Die Schleife läuft bis zur Konvergenz nach einigen Episoden.

Reinforcement Learning mit Gymnasium in Python

Expected-SARSA-Update

SARSA

Bild mit der mathematischen Formel der SARSA-Aktualisierungsregel.

Q-Learning

Bild mit der mathematischen Formel der Q-Learning-Aktualisierungsregel.

Expected SARSA

Bild mit der mathematischen Formel der Expected-SARSA-Aktualisierungsregel.

Reinforcement Learning mit Gymnasium in Python

Erwartungswert des nächsten Zustands

Bild mit der mathematischen Formel der Expected-SARSA-Aktualisierungsregel.

  • Berücksichtigt alle Aktionen

Bild mit der Formel für den erwarteten Q-Wert des nächsten Zustands.

  • Zufällige Aktionen → gleiche Wahrscheinlichkeiten

Bild mit der Formel für den erwarteten Q-Wert des nächsten Zustands bei zufälliger Aktionswahl mit gleichen Wahrscheinlichkeiten.

Reinforcement Learning mit Gymnasium in Python

Implementierung mit Frozen Lake

env = gym.make('FrozenLake-v1', 
               is_slippery=False)

num_states = env.observation_space.n
num_actions = env.action_space.n
Q = np.zeros((num_states, num_actions))

gamma = 0.99 alpha = 0.1 num_episodes = 1000

Bild der Frozen-Lake-Umgebung

Reinforcement Learning mit Gymnasium in Python

Expected-SARSA-Update-Regel

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

expected_q = np.mean(Q[next_state])
Q[state, action] = (1-alpha) * Q[state, action] + alpha * (reward + gamma * expected_q)

Bild mit der mathematischen Formel der Expected-SARSA-Aktualisierungsregel.

Reinforcement Learning mit Gymnasium in Python

Training

for i in range(num_episodes):
    state, info = env.reset()    
    terminated = False  

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

Policy des Agenten

policy = {state: np.argmax(Q[state]) 
          for state in range(num_states)}
print(policy)
{ 0: 1,  1: 2,  2: 1,  3: 0, 
  4: 1,  5: 0,  6: 1,  7: 0, 
  8: 2,  9: 2, 10: 1, 11: 0, 
 12: 0, 13: 2, 14: 2, 15: 0}

Bild der vom Agenten gelernten Policy, die zeigt, welche Aktion in jedem Zustand auszuführen ist.

Reinforcement Learning mit Gymnasium in Python

Lass uns üben!

Reinforcement Learning mit Gymnasium in Python

Preparing Video For Download...