Q-Learning

Reinforcement Learning mit Gymnasium in Python

Fouad Trad

Machine Learning Engineer

Einführung in Q-Learning

  • Steht für Quality Learning
  • Modellfreie Technik
  • Lernt die optimale Q-Tabelle durch Interaktion

Diagramm der Q-Learning-Schritte: Q-Tabelle initialisieren, Aktion wählen, Belohnung aus der Umgebung erhalten und die Tabelle aktualisieren. Der Agent wiederholt dies, bis nach einigen Episoden Konvergenz erreicht ist.

Reinforcement Learning mit Gymnasium in Python

Q-Learning vs. SARSA

SARSA

Bild mit der mathematischen Formel für die SARSA-Aktualisierungsregel.

  • Aktualisiert basierend auf der gewählten Aktion
  • On-Policy-Lernen
Q-Learning

Bild mit der mathematischen Formel für die Q-Learning-Aktualisierungsregel.

  • Aktualisiert unabhängig von ausgeführten Aktionen
  • Off-Policy-Lernen
Reinforcement Learning mit Gymnasium in Python

Q-Learning implementieren

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

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

Q-Learning implementieren

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

while not terminated:
# Zufällige Aktionswahl action = env.action_space.sample()
# Aktion ausführen und neuen Zustand sowie Belohnung beobachten new_state, reward, terminated, truncated, info = env.step(action)
# Q-Tabelle aktualisieren update_q_table(state, action, new_state)
episode_reward += reward state = new_state
reward_per_random_episode.append(episode_reward)
Reinforcement Learning mit Gymnasium in Python

Q-Learning-Update

Bild mit der mathematischen Formel für die Q-Learning-Aktualisierungsregel.

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

old_value = Q[state, action]
next_max = max(Q[new_state])
Q[state, action] = (1 - alpha) * old_value + alpha * (reward + gamma * next_max)
Reinforcement Learning mit Gymnasium in Python

Policy verwenden

reward_per_learned_episode = []
policy = get_policy()

for episode in range(num_episodes): state, info = env.reset() terminated = False episode_reward = 0 while not terminated: # Beste Aktion basierend auf erlernter Q-Tabelle wählen action = policy[state] # Aktion ausführen und neuen Zustand beobachten new_state, reward, terminated, truncated, info = env.step(action) state = new_state
episode_reward += reward
reward_per_learned_episode.append(episode_reward)
Reinforcement Learning mit Gymnasium in Python

Q-Learning evaluieren

import numpy as np
import matplotlib.pyplot as plt

avg_random_reward = np.mean(reward_per_random_episode) avg_learned_reward = np.mean(reward_per_learned_episode)
plt.bar(['Random Policy', 'Learned Policy'], [avg_random_reward, avg_learned_reward], color=['blue', 'green']) plt.title('Average Reward per Episode') plt.ylabel('Average Reward') plt.show()

Balkendiagramm: Die gelernte Policy liefert deutlich höhere Erträge (ca. 0,26) als die zufällige Policy (ca. 0,01).

Reinforcement Learning mit Gymnasium in Python

Lass uns üben!

Reinforcement Learning mit Gymnasium in Python

Preparing Video For Download...