Reinforcement Learning (RL) একটি ধরনের মেশিন লার্নিং যেখানে এজেন্ট একটি পরিবেশের সাথে যোগাযোগ করে এবং পুরস্কারের ভিত্তিতে একটি সেরা সিদ্ধান্ত নেয়ার চেষ্টা করে। RL মডেল ট্রেনিং এ Keras-RL লাইব্রেরি ব্যবহার করা হয়, যা Keras এর সাথে RL এলগরিদম সহজভাবে ইন্টিগ্রেট করে।
এখানে Keras-RL ব্যবহার করে একটি সিম্পল RL মডেল তৈরি করার জন্য স্টেপ বাই স্টেপ গাইড দেওয়া হলো। আমরা Q-Learning বা Deep Q-Network (DQN) এলগরিদম ব্যবহার করব, যা একটি জনপ্রিয় RL এলগরিদম।
১. Keras-RL ইনস্টলেশন
প্রথমে আপনাকে Keras-RL লাইব্রেরি ইনস্টল করতে হবে। এটি ইনস্টল করতে, নিচের কমান্ডটি ব্যবহার করুন:
pip install keras-rl2
এছাড়া TensorFlow এবং Keras ইনস্টল করা থাকতে হবে।
pip install tensorflow keras
২. অবশ্যই প্রয়োজনীয় লাইব্রেরি ইনপোর্ট করা
Keras-RL এবং অন্যান্য প্রয়োজনীয় লাইব্রেরি ইনপোর্ট করুন:
import numpy as np
import random
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from keras_rl.agents.dqn import DQNAgent
from keras_rl.environments import gym
import gym
৩. পরিবেশ তৈরি করা (OpenAI Gym)
এখানে আমরা OpenAI Gym ব্যবহার করব, যা RL পরীক্ষার জন্য অনেক জনপ্রিয় একটি লাইব্রেরি। আমরা CartPole পরিবেশ ব্যবহার করব, যেখানে একটি পোলের ভারসাম্য বজায় রাখতে হবে।
# OpenAI Gym এর CartPole পরিবেশ তৈরি করা
env = gym.make('CartPole-v1')
৪. Q-Network মডেল তৈরি করা
এখন আমরা Q-Network তৈরি করব। এখানে একটি সিম্পল নিউরাল নেটওয়ার্ক ব্যবহার করা হবে, যা Q-values প্রেডিক্ট করবে।
# নিউরাল নেটওয়ার্ক মডেল তৈরি
model = Sequential()
model.add(Dense(24, input_dim=env.observation_space.shape[0], activation='relu'))
model.add(Dense(24, activation='relu'))
model.add(Dense(env.action_space.n, activation='linear')) # আউটপুট লেয়ার যা অ্যাকশন স্পেসের আকারের হবে
# মডেল কম্পাইল করা
model.compile(loss='mse', optimizer='adam')
এখানে:
env.observation_space.shape[0]হল ইনপুট স্পেসের আকার, যা CartPole পরিবেশের অবস্থার (state) আকার নির্দেশ করে।env.action_space.nহল অ্যাকশন স্পেসের আকার, যা সম্ভবত ২টি অ্যাকশন (পোলের একপাশে ঠেলা বা অন্যপাশে ঠেলা) নির্দেশ করে।
৫. DQN এজেন্ট তৈরি করা
এখন আমরা DQNAgent তৈরি করব, যেটি মডেল এবং পরিবেশের উপর ভিত্তি করে কাজ করবে। এজেন্টটি পরিবেশ থেকে শিখবে এবং Q-values এর মাধ্যমে সেরা অ্যাকশন নেবে।
# DQNAgent তৈরি
agent = DQNAgent(model=model, nb_actions=env.action_space.n, memory=50000, nb_steps_warmup=1000,
epsilon=1.0, epsilon_final=0.1, epsilon_decay=0.995, gamma=0.99, batch_size=32)
এখানে:
memory=50000: এটি পরিবেশের অভিজ্ঞতার সাইজ সীমিত করে।epsilon=1.0: এটি প্রথমে পুরোপুরি র্যান্ডম অ্যাকশন নেয়ার জন্য নির্ধারণ করে (exploration), এবং ধীরে ধীরেepsilon_final=0.1এ নেমে আসে।gamma=0.99: এটি ডিসকাউন্ট ফ্যাক্টর (future rewards discount)।batch_size=32: প্রশিক্ষণের জন্য কতগুলি অভিজ্ঞতা ব্যাচে ব্যবহার করা হবে।
৬. মডেল প্রশিক্ষণ শুরু করা
এখন আমরা এজেন্টকে প্রশিক্ষণ দেওয়ার জন্য fit() ফাংশন ব্যবহার করব। এটি কয়েকটি এপোকের মাধ্যমে ট্রেনিং চলতে থাকবে এবং অবস্থা অনুযায়ী সেরা অ্যাকশন নির্ধারণ করবে।
# মডেল প্রশিক্ষণ শুরু করা
agent.fit(env, nb_steps=50000, visualize=False, verbose=2)
এখানে:
nb_steps=50000: এটি ৫০,০০০ স্টেপের জন্য এজেন্টকে প্রশিক্ষণ দেবে।visualize=False: আপনি যদি ইমেজ দেখতে চান, তবে এটিTrueকরে দিতে পারেন।
৭. এজেন্টের পারফরম্যান্স পরীক্ষা করা
এখন, আমরা প্রশিক্ষিত এজেন্টের পারফরম্যান্স পরীক্ষা করতে পারি। এটি পরিবেশের মধ্যে কাজ করে এবং পরিবেশ থেকে প্রাপ্ত পুরস্কার (reward) ট্র্যাক করে।
# এজেন্টের পারফরম্যান্স পরীক্ষা করা
agent.test(env, nb_episodes=10, visualize=True)
এখানে:
nb_episodes=10: এটি ১০টি পরীক্ষা চালাবে, যেখানে এজেন্টটি পরিবেশে কার্যক্রম করবে এবং পুরস্কার সংগ্রহ করবে।visualize=True: আপনি যদি গ্রাফিক্যালভাবে ফলাফল দেখতে চান, তবে এটিTrueকরতে পারেন।
সারাংশ
এভাবে, Keras-RL এবং DQN (Deep Q-Network) ব্যবহার করে একটি সিম্পল Reinforcement Learning মডেল তৈরি করা হয়। এখানে আমরা একটি CartPole পরিবেশ ব্যবহার করেছি, যেখানে এজেন্টটি মডেলটি ব্যবহার করে শ্রেষ্ঠ অ্যাকশন নির্বাচন করবে এবং পুরস্কার সংগ্রহ করবে।
Keras-RL লাইব্রেরি ব্যবহার করে আরও উন্নত RL মডেল তৈরি করতে পারেন, যেমন Double DQN, Dueling DQN, বা A3C ইত্যাদি।
Read more