Q-learning

Reinforcement Learning cu Gymnasium în Python

Fouad Trad

Machine Learning Engineer

Introducere în Q-learning

  • Reprezintă învățarea calității
  • Tehnică fără model
  • Învață tabelul Q optim prin interacțiune

Diagramă care ilustrează etapele Q-learning: inițializarea tabelului Q, alegerea unei acțiuni, primirea unei recompense din mediu și actualizarea tabelului. Agentul repetă acest ciclu până la convergență, după un anumit număr de episoade.

Reinforcement Learning cu Gymnasium în Python

Q-learning vs. SARSA

SARSA

Imagine care arată formula matematică a regulii de actualizare SARSA.

  • Actualizare bazată pe acțiunea executată
  • Algoritm on-policy
Q-learning

Imagine care arată formula matematică a regulii de actualizare Q-learning.

  • Actualizare independentă de acțiunea executată
  • Algoritm off-policy
Reinforcement Learning cu Gymnasium în Python

Implementarea Q-learning

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 cu Gymnasium în Python

Implementarea Q-learning

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

while not terminated:
# Random action selection action = env.action_space.sample()
# Take action and observe new state and reward new_state, reward, terminated, truncated, info = env.step(action)
# Update Q-table update_q_table(state, action, new_state)
episode_reward += reward state = new_state
reward_per_random_episode.append(episode_reward)
Reinforcement Learning cu Gymnasium în Python

Actualizarea Q-learning

Imagine care arată formula matematică a regulii de actualizare Q-learning.

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 cu Gymnasium în Python

Utilizarea politicii

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: # Select the best action based on learned Q-table action = policy[state] # Take action and observe new state new_state, reward, terminated, truncated, info = env.step(action) state = new_state
episode_reward += reward
reward_per_learned_episode.append(episode_reward)
Reinforcement Learning cu Gymnasium în Python

Evaluarea Q-learning

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

Imagine a unui grafic cu bare care arată că politica învățată obține o recompensă medie mult mai mare (aproximativ 0,26) față de politica aleatoare (aproximativ 0,01).

Reinforcement Learning cu Gymnasium în Python

Să exersăm!

Reinforcement Learning cu Gymnasium în Python

Preparing Video For Download...