Q-learning

Python में Gymnasium के साथ Reinforcement Learning

Fouad Trad

Machine Learning Engineer

Q-learning परिचय

  • quality learning का संक्षेप
  • Model-free तकनीक
  • इंटरैक्शन से optimal Q-table सीखता है

Q-learning के चरण: Q-table इनिशियलाइज़ करना, action चुनना, environment से reward लेना, और टेबल अपडेट करना। एजेंट यह लूप एपिसोड्स के बाद convergence तक दोहराता है.

Python में Gymnasium के साथ Reinforcement Learning

Q-learning बनाम SARSA

SARSA

SARSA अपडेट नियम का गणितीय सूत्र दिखाने वाली इमेज.

  • ली गई action पर आधारित अपडेट
  • On-policy learner
Q-learning

Q-learning अपडेट नियम का गणितीय सूत्र दिखाने वाली इमेज.

  • ली गई actions से स्वतंत्र अपडेट
  • Off-policy learner
Python में Gymnasium के साथ Reinforcement Learning

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 = []
Python में Gymnasium के साथ Reinforcement Learning

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)
Python में Gymnasium के साथ Reinforcement Learning

Q-learning अपडेट

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)
Python में Gymnasium के साथ Reinforcement Learning

पॉलिसी का उपयोग

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)
Python में Gymnasium के साथ Reinforcement Learning

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

बार प्लॉट: सीखी हुई पॉलिसी का रिटर्न (लगभग 0.26) रैंडम पॉलिसी (लगभग 0.01) से काफ़ी अधिक है.

Python में Gymnasium के साथ Reinforcement Learning

अभ्यास करते हैं!

Python में Gymnasium के साथ Reinforcement Learning

Preparing Video For Download...