Reinforcement Learning (RL) হল একটি মেশিন লার্নিং প্রযুক্তি, যেখানে এজেন্ট একটি পরিবেশের সাথে ইন্টারঅ্যাক্ট করে এবং কিছু ক্রিয়া গ্রহণ করে, যার ফলস্বরূপ রিওয়ার্ড অথবা শাস্তি পায়। Keras-RL লাইব্রেরি Keras এর সাথে রিইনফোর্সমেন্ট লার্নিং মডেল তৈরি করার জন্য ব্যবহৃত হয়।
এখানে আমরা Keras-RL ব্যবহার করে একটি Simple RL model তৈরি করব এবং CartPole-v1 পরিবেশে এটি ট্রেনিং করব। CartPole হল একটি ওপেনএআই গিম (OpenAI Gym) পরিবেশ, যেখানে একজন এজেন্ট একটি পোলকে ভারসাম্য বজায় রাখতে চেষ্টা করে।
১. প্রয়োজনীয় লাইব্রেরি ইনস্টলেশন
প্রথমে, Keras-RL এবং OpenAI Gym ইন্সটল করতে হবে:
pip install gym
pip install keras-rl2
২. Simple RL মডেল তৈরি
এখানে আমরা একটি DQN (Deep Q-Network) মডেল তৈরি করব। DQN হল রিইনফোর্সমেন্ট লার্নিং মডেল যা নিউরাল নেটওয়ার্ক ব্যবহার করে Q-value এপ্রোক্সিমেট করতে সহায়তা করে। আমাদের উদ্দেশ্য CartPole-v1 পরিবেশে এই মডেলটিকে প্রশিক্ষিত করা।
২.১. কাস্টম ডিপ Q-নেটওয়ার্ক তৈরি করা
import gym
import numpy as np
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import Adam
from rl.agents.dqn import DQNAgent
from rl.memory import SequentialMemory
from rl.policy import EpsGreedyQPolicy
# 1. OpenAI Gym CartPole-v1 পরিবেশ লোড করা
env = gym.make('CartPole-v1')
env.reset()
# 2. নিউরাল নেটওয়ার্ক তৈরি করা (Q-নেটওয়ার্ক)
model = Sequential()
model.add(Dense(24, input_shape=(1,) + env.observation_space.shape, activation='relu'))
model.add(Dense(24, activation='relu'))
model.add(Dense(env.action_space.n, activation='linear')) # এক্টি একশন স্পেসের আউটপুট
# 3. স্মৃতি সেটআপ (Memory)
memory = SequentialMemory(limit=100000, window_length=1)
# 4. Q-পলিসি (Epsilon-greedy)
policy = EpsGreedyQPolicy()
# 5. DQN এজেন্ট তৈরি করা
dqn = DQNAgent(model=model, nb_actions=env.action_space.n, memory=memory, nb_steps_warmup=10,
target_model_update=1e-2, policy=policy, gamma=0.99, batch_size=32, train_interval=4)
dqn.compile(Adam(lr=1e-3), metrics=['mae'])
# 6. মডেল ট্রেনিং
dqn.fit(env, nb_steps=50000, visualize=False, verbose=2)
# 7. মডেল পরীক্ষা
dqn.test(env, nb_episodes=5, visualize=True)
কোড ব্যাখ্যা:
- Gym পরিবেশ লোড:
env = gym.make('CartPole-v1'):CartPole-v1পরিবেশ লোড করে যেখানে এজেন্টকে পোল ভারসাম্য বজায় রাখতে হবে।
- নিউরাল নেটওয়ার্ক (Q-নেটওয়ার্ক):
model: এখানে একটি সিম্পল নিউরাল নেটওয়ার্ক তৈরি করা হয়েছে। Dense লেয়ারের মাধ্যমে নিউরাল নেটওয়ার্ক তৈরি করা হয় যা ReLU অ্যাকটিভেশন ফাংশন ব্যবহার করে এবং আউটপুট লেয়ারটি linear অ্যাকটিভেশন ফাংশন ব্যবহার করে, কারণ এটি কনটিনিউয়াস Q-value রিটার্ন করবে।
- Memory (স্মৃতি):
memory = SequentialMemory(limit=100000, window_length=1): এখানে স্মৃতি ব্যবস্থাপনা (memory management) করা হচ্ছে, যাতে এটি সর্বশেষ 100,000 পদক্ষেপের তথ্য সঞ্চয় করতে পারে।
- Policy:
policy = EpsGreedyQPolicy(): epsilon-greedy পলিসি ব্যবহার করা হচ্ছে। এজেন্ট কখনো-কখনো এলোমেলোভাবে (exploration) কাজ করবে এবং কখনো-কখনো তার শেখা কৌশল অনুসরণ করবে (exploitation)।
- DQN এজেন্ট তৈরি:
DQNAgent: এখানে DQNAgent তৈরি করা হচ্ছে, যেটি model, policy, memory, gamma (discount factor) এবং অন্যান্য প্যারামিটার দ্বারা পরিচালিত হবে।
- মডেল ট্রেনিং:
dqn.fit(env, nb_steps=50000, visualize=False, verbose=2): এই স্টেপে DQN এজেন্টটি 50,000 পদক্ষেপ (steps) পর্যন্ত পরিবেশে প্রশিক্ষিত হবে।
- মডেল পরীক্ষা:
dqn.test(env, nb_episodes=5, visualize=True): মডেলটি 5টি পরীক্ষার মাধ্যমে পরীক্ষা করা হবে, যেখানেvisualize=Trueমানে এজেন্টটি ইন্টারঅ্যাক্ট করে এবং তার কার্যক্ষমতা আপনি দেখতে পারবেন।
৩. অন্যান্য RL এজেন্ট ব্যবহার করা
Keras-RL লাইব্রেরি দিয়ে অন্যান্য RL এজেন্ট (যেমন SARSA, DoubleDQN, A3C) ব্যবহার করাও সম্ভব। তবে DQN হল সবচেয়ে সাধারণ এবং জনপ্রিয় RL এজেন্ট।
৪. RL মডেল পরীক্ষা এবং ফলাফল বিশ্লেষণ
# 1. পলিসি টেস্ট
score = dqn.test(env, nb_episodes=5, visualize=True)
# 2. স্কোর প্রিন্ট করা
print(f'Average Reward: {np.mean(score.history["reward"])}')
print(f'Average Episode Length: {np.mean(score.history["episode_length"])}')
এটি আপনাকে average reward এবং episode length দেখাবে, যা এজেন্টের পারফরম্যান্স মূল্যায়ন করতে সহায়ক।
৫. সারাংশ
- Keras-RL ব্যবহার করে DQN (Deep Q-Network) মডেল তৈরি এবং প্রশিক্ষণ করা খুবই সহজ। আমরা এখানে CartPole-v1 পরিবেশে RL এজেন্ট তৈরি করেছি।
- Policy (এখানে Epsilon-Greedy), Memory (যেমন
SequentialMemory), এবং Q-Function (নিউরাল নেটওয়ার্কের মাধ্যমে) ব্যবহার করা হয়েছে। - Training এবং Testing স্টেপগুলোতে মডেলটির পারফরম্যান্স মূল্যায়ন করা হয়েছে।
এভাবে আপনি Keras-RL ব্যবহার করে সহজ RL মডেল তৈরি এবং প্রশিক্ষণ করতে পারেন।
Read more