Gym হল একটি ওপেন সোর্স লাইব্রেরি যা OpenAI দ্বারা তৈরি করা হয়েছে, যা বিভিন্ন Reinforcement Learning (RL) পরিবেশ (environments) সরবরাহ করে। এই লাইব্রেরি ডিপ RL মডেল তৈরির জন্য একটি জনপ্রিয় এবং কার্যকর প্ল্যাটফর্ম, যেখানে আপনি বিভিন্ন টাস্কে মডেলকে প্রশিক্ষণ দিতে পারেন এবং পরীক্ষণ করতে পারেন।
Deep RL হল Reinforcement Learning এর একটি উন্নত সংস্করণ যেখানে Deep Learning মডেল (যেমন CNN বা Fully Connected Networks) ব্যবহার করা হয়। এখানে, আমরা Gym environment ব্যবহার করে একটি Deep Q-Network (DQN) ভিত্তিক RL মডেল তৈরি করব।
প্রক্রিয়া Overview:
- Gym Environment সেটআপ:
- Gym environment এর মধ্যে বিভিন্ন লার্নিং টাস্ক অন্তর্ভুক্ত রয়েছে যেমন, খেলা খেলা (Atari games), রোবটিক মুভমেন্ট, অথবা সহজ 2D/3D গেম। আমরা এখানে একটি সাধারণ গেম ব্যবহার করব, যেমন CartPole-v1।
- Q-Learning Algorithm:
- Q-Learning হল একটি model-free reinforcement learning এলগরিদম যা এলিজিবল একশনগুলি এবং তাদের অভ্যন্তরীণ অবস্থা থেকে সর্বোচ্চ পুরস্কারের জন্য একটি Q-table আপডেট করে।
- Deep Q-Network (DQN) হল Q-Learning এর একটি উন্নত সংস্করণ যা Neural Network ব্যবহার করে Q-values প্রেডিক্ট করে, যা large state spaces-এ কার্যকরী।
- Neural Network (Deep Q-Network):
- Q-values হিসাব করার জন্য fully connected neural network ব্যবহার করা হয়।
- এটি পরিবেশ থেকে state গ্রহণ করে এবং সম্ভাব্য actions এর জন্য Q-values আউটপুট করে।
Step-by-Step:
1. Install Required Libraries:
- প্রথমে আমরা প্রয়োজনীয় লাইব্রেরিগুলি ইনস্টল করব।
pip install gym
pip install tensorflow
pip install keras
pip install numpy
2. Gym Environment Setup:
- Gym থেকে একটি environment (এখানে আমরা CartPole-v1 পরিবেশ ব্যবহার করব) লোড করা হবে।
import gym
# Create a Gym environment
env = gym.make('CartPole-v1')
env.reset()
3. Deep Q-Network (DQN) Model Creation:
- আমরা একটি deep neural network তৈরি করব যা স্টেট থেকে Q-value বের করবে।
import tensorflow as tf
from tensorflow.keras import layers, models
# Define the neural network architecture
def build_dqn(input_shape, action_space):
model = models.Sequential()
model.add(layers.Dense(24, activation='relu', input_shape=input_shape))
model.add(layers.Dense(24, activation='relu'))
model.add(layers.Dense(action_space, activation='linear')) # Output Q-values for each action
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.001), loss='mse')
return model
4. Epsilon-Greedy Strategy:
- Epsilon-Greedy হল একটি একশন নির্বাচন কৌশল যা নির্দিষ্ট পরিমাণ সময়ের জন্য random actions এবং পরবর্তীতে exploitation অর্থাৎ পূর্ববর্তী জ্ঞানের উপর ভিত্তি করে best action নেয়।
import numpy as np
# Epsilon-greedy action selection
def epsilon_greedy(state, epsilon, model, action_space):
if np.random.rand() < epsilon:
return np.random.choice(action_space) # Choose random action
else:
q_values = model.predict(state) # Predict Q-values
return np.argmax(q_values[0]) # Choose action with highest Q-value
5. Training Loop:
- DQN মডেল প্রশিক্ষণের জন্য আমরা একটি প্রশিক্ষণ লুপ তৈরি করব। এই লুপে পরিবেশের সাথে যোগাযোগ করা হবে এবং প্রতিটি সময়ে Q-values আপডেট করা হবে।
def train_dqn(env, model, episodes=1000, gamma=0.99, epsilon=1.0, epsilon_decay=0.995, min_epsilon=0.01):
action_space = env.action_space.n
total_rewards = []
for ep in range(episodes):
state = env.reset()
state = np.reshape(state, [1, -1])
done = False
total_reward = 0
while not done:
action = epsilon_greedy(state, epsilon, model, action_space)
next_state, reward, done, _ = env.step(action)
next_state = np.reshape(next_state, [1, -1])
# Update Q-values using Bellman equation
target = reward + gamma * np.max(model.predict(next_state)[0]) * (1 - done)
target_f = model.predict(state)
target_f[0][action] = target
# Train the model
model.fit(state, target_f, epochs=1, verbose=0)
state = next_state
total_reward += reward
epsilon = max(min_epsilon, epsilon * epsilon_decay) # Decay epsilon
total_rewards.append(total_reward)
if ep % 100 == 0:
print(f"Episode {ep}/{episodes}, Reward: {total_reward}, Epsilon: {epsilon}")
return total_rewards
6. Training and Evaluation:
- DQN মডেলটি প্রশিক্ষণ শুরু করতে এবং পারফরম্যান্স ট্র্যাক করতে নিম্নলিখিত কোডটি ব্যবহার করা হবে:
input_shape = (env.observation_space.shape[0],)
action_space = env.action_space.n
model = build_dqn(input_shape, action_space)
total_rewards = train_dqn(env, model)
# Plotting the total rewards
import matplotlib.pyplot as plt
plt.plot(total_rewards)
plt.xlabel('Episodes')
plt.ylabel('Total Reward')
plt.show()
Key Concepts Explained:
- Gym Environment:
gym.make('CartPole-v1')একটি সহজ পরিবেশ যেখানে একটি কার্ট পোলটি ভারসাম্য রক্ষা করতে চেষ্টা করে। এটিaction_space(যেখানে 0: left move, 1: right move) এবংobservation_space(যতটুকু তথ্য মডেল গ্রহণ করে যেমন, অবস্থান, বেগ, পোলের কোণ) দেয়। - Deep Q-Network (DQN): DQN একটি নিউরাল নেটওয়ার্ক যা Q-values (Action-Value function) প্রেডিক্ট করে এবং এই মানের ভিত্তিতে যথাযথ অ্যাকশন নির্বাচন করতে সাহায্য করে। এটি MSE (Mean Squared Error) loss function ব্যবহার করে প্রশিক্ষিত হয়।
- Epsilon-Greedy: এটি exploration-exploitation dilemma সমাধান করে, যেখানে epsilon উচ্চ থাকলে মডেলটি explore করে এবং epsilon কম হলে এটি exploit করে, অর্থাৎ পূর্ববর্তী অভিজ্ঞতার উপর ভিত্তি করে সিদ্ধান্ত নেয়।
- Gamma (Discount Factor): এটি ভবিষ্যতের রিওয়ার্ডের গুরুত্বকে বোঝায়। ০ এর মানে, ভবিষ্যতের রিওয়ার্ডের কোন গুরুত্ব নেই, এবং ১ এর মানে, ভবিষ্যতের রিওয়ার্ড পুরোপুরি বর্তমান রিওয়ার্ডের মতোই গুরুত্বপূর্ণ।
- Training Process: পরিবেশের সাথে মডেলটি যোগাযোগ করে, সিদ্ধান্ত নেয়, পুরস্কার পায়, এবং তারপরে পূর্বাভাসের ভিত্তিতে Q-values আপডেট করে।
সারাংশ:
Deep Reinforcement Learning (Deep RL) মডেল তৈরি করতে Gym লাইব্রেরি ব্যবহার একটি শক্তিশালী এবং সহজ পদ্ধতি। DQN মডেল ব্যবহার করে আমরা Q-values প্রেডিক্ট করতে পারি এবং epsilon-greedy কৌশল অনুসরণ করে একটি কার্যকরী অ্যাকশন নির্বাচন করতে পারি। মডেলটি পরিবেশে সঠিক সিদ্ধান্ত নিতে শিখে এবং সময়ের সাথে তার পারফরম্যান্স বাড়ায়।
Read more