Q-Learning এবং Deep Q-Networks (DQN) হল Reinforcement Learning (RL) এর দুটি গুরুত্বপূর্ণ অ্যালগরিদম যা মডেল-ফ্রি এবং ভ্যালু-বেসড মেথড হিসেবে কাজ করে। এই অ্যালগরিদমগুলি অনুকূল নীতি শিখতে সাহায্য করে, যা একটি এজেন্টকে সর্বোচ্চ cumulative reward (যত বেশি পুরস্কার সম্ভব) পেতে সহায়ক হয়। Q-learning সাধারণত ছোট, সহজ সমস্যায় ব্যবহৃত হয়, তবে DQN বড় এবং জটিল সমস্যার জন্য গভীর লার্নিং-এর শক্তি ব্যবহার করে।
1. Q-Learning:
Q-Learning হল একটি মডেল-ফ্রি Reinforcement Learning অ্যালগরিদম যা action-value function বা Q-function শিখতে সাহায্য করে। এটি মডেল বা পরিবেশ সম্পর্কে কোনো পূর্বধারণা ছাড়াই কাজ করে এবং একটি Q-table ব্যবহার করে best action নির্বাচন করার জন্য এজেন্টকে প্রশিক্ষণ দেয়।
Q-Learning এর মূল ধারণা:
- Q-value (action-value): Q(s, a) হল একটি ফাংশন যা একটি নির্দিষ্ট অবস্থায় (state) একটি নির্দিষ্ট অ্যাকশন (action) নেয়ার পরে cumulative reward বা দীর্ঘমেয়াদী পুরস্কারের মান হিসাব করে।
- Q-value update rule: Q-learning এ Q-value আপডেট করা হয় এই রুলের মাধ্যমে: যেখানে:
- = বর্তমান অবস্থায় (state) একটি নির্দিষ্ট ক্রিয়ার (action) Q-value
- = পরবর্তী স্তরের reward
- = discount factor (ভবিষ্যতের পুরস্কারকে বর্তমানের তুলনায় কম গুরুত্ব দেয়)
- = learning rate (এজেন্ট নতুন তথ্য শিখতে কতটা দ্রুত শিখবে)
- = পরবর্তী অবস্থায় (s') সর্বোচ্চ Q-value
Q-Learning এর প্রক্রিয়া:
- প্রাথমিক Q-table তৈরি: শুরুতে সমস্ত Q-values (Q(s, a)) শূন্য বা এলোমেলো মানের মধ্যে সেট করা হয়।
- অবস্থা নির্বাচন: এজেন্ট বর্তমান অবস্থায় (state) থাকে এবং তারপরে একটি অ্যাকশন (action) নির্বাচন করে।
- অ্যাকশন নির্বাচন: ε-greedy policy অনুসারে, এজেন্ট সর্বোচ্চ Q-value সহ একটি অ্যাকশন নির্বাচন করে, তবে কখনও কখনও এলোমেলোভাবে (explore) অন্য অ্যাকশনও নির্বাচন করতে পারে।
- রিওয়ার্ড এবং নতুন অবস্থান: এজেন্ট নির্বাচিত অ্যাকশনটি বাস্তবায়ন করে এবং পরবর্তী অবস্থান (state) এবং পুরস্কার (reward) পায়।
- Q-value আপডেট: পরবর্তী অবস্থায় অ্যাকশন গ্রহণের পর, Q-value আপডেট হয়।
- এটি পুনরাবৃত্তি হয় যতক্ষণ না এজেন্ট সর্বোচ্চ মোট পুরস্কার পেতে সক্ষম হয়।
2. Deep Q-Networks (DQN):
Deep Q-Networks (DQN) হল Q-Learning-এর একটি উন্নত সংস্করণ যেখানে Deep Learning ব্যবহার করা হয়। Q-learning যখন ব্যবহার করা হয় তখন Q-value ধারণ করার জন্য একটি Q-table ব্যবহার করা হয়, তবে DQN-এ এই Q-function শিখতে neural networks ব্যবহার করা হয়, যা বড় এবং জটিল সমস্যাগুলির জন্য উপযুক্ত।
DQN এর মূল ধারণা:
- Q-table এর পরিবর্তে Neural Network:
- DQN-এ একটি নিউরাল নেটওয়ার্ক ব্যবহার করা হয়, যা Q(s, a) মান অনুমান করে। এখানে, ইনপুট হিসাবে একটি অবস্থান (state) নেওয়া হয় এবং আউটপুট হিসাবে সম্ভাব্য সমস্ত অ্যাকশনের জন্য Q-values দেয়।
- এটি Q-function approximation নামে পরিচিত, যেখানে নিউরাল নেটওয়ার্ক action-value function শিখে।
- Replay Buffer:
- DQN একটি experience replay buffer ব্যবহার করে, যেখানে এজেন্ট তার পূর্ববর্তী অভিজ্ঞতা (state, action, reward, next state) সংরক্ষণ করে রাখে এবং পরে এলোমেলোভাবে তা ব্যবহার করে ট্রেনিং করে।
- এই পদ্ধতিটি মডেলকে correlated data থেকে শিখতে সাহায্য করে, এবং data efficiency বৃদ্ধি করে।
- Target Network:
- DQN এর একটি গুরুত্বপূর্ণ বৈশিষ্ট্য হল target network, যা একটি স্থির (fixed) নিউরাল নেটওয়ার্ক, যা Q-value updates গণনা করতে ব্যবহৃত হয়। এটি মূল নেটওয়ার্কের পরিবর্তে প্রতি কিছু সাইকেলে আপডেট হয়, যাতে ট্রেনিং স্টেবল হয়।
Loss Function:
- DQN এ Mean Squared Error (MSE) loss function ব্যবহার করা হয়, যা বাস্তব Q-value এবং অনুমানকৃত Q-value এর মধ্যে পার্থক্য পরিমাপ করে। এটি সাধারণত নেটওয়ার্ক আপডেট করতে ব্যবহৃত হয়।
যেখানে:
- হল বর্তমান Q-value যা নিউরাল নেটওয়ার্ক থেকে বের করা হয়।
- হল target network এর প্যারামিটার।
Q-Learning vs Deep Q-Networks (DQN):
| বিষয় | Q-Learning | Deep Q-Network (DQN) |
|---|---|---|
| Q-value | Q-table ব্যবহার করে | নিউরাল নেটওয়ার্ক ব্যবহার করে Q-value অনুমান করা |
| ডেটার আকার | ছোট এবং সহজ ডেটা, যেখানে Q-table ম্যানেজ করা সম্ভব | বড়, জটিল ডেটা, যেখানে Q-table ব্যবহার করা কঠিন |
| প্রয়োজনীয়তা | ছোট পরিবেশ, ফিনাইট অ্যাকশন স্পেস | বড় পরিবেশ, বড় অ্যাকশন স্পেস |
| প্রযুক্তি | সাধারণ Q-table ভিত্তিক মেথড | নিউরাল নেটওয়ার্ক, Experience Replay এবং Target Network ব্যবহার |
| উন্নতির গতি | ধীর, যখন বড় অ্যাকশন স্পেস থাকে | দ্রুত, কারণ নিউরাল নেটওয়ার্কের মাধ্যমে প্রচুর ডেটা শেখা সম্ভব |
| অ্যাপ্লিকেশন | ছোট গেম বা সমস্যা (যেমন ট্যাবলেট গেম, সিম্পল পরিবেশ) | বৃহৎ গেম, বাস্তব জীবন সমস্যা, স্বচালিত গাড়ি, রোবোটিকস |
DQN এর উদাহরণ (Keras):
import numpy as np
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import Adam
from collections import deque
class DQNAgent:
def init(self, state_size, action_size):
self.state_size = state_size
self.action_size = action_size
self.memory = deque(maxlen=2000)
self.gamma = 0.95 # Discount factor
self.epsilon = 1.0 # Exploration rate
self.epsilon_min = 0.01
self.epsilon_decay = 0.995
self.learning_rate = 0.001
self.model = self._build_model()
def _build_model(self):
model = Sequential()
model.add(Dense(24, input_dim=self.state_size, activation='relu'))
model.add(Dense(24, activation='relu'))
model.add(Dense(self.action_size, activation='linear'))
model.compile(loss='mse', optimizer=Adam(lr=self.learning_rate))
return model
def act(self, state):
if np.random.rand() <= self.epsilon:
return np.random.choice(self.action_size)
act_values = self.model.predict(state)
return np.argmax(act_values[0])
def remember(self, state, action, reward, next_state, done):
self.memory.append((state, action, reward, next_state, done))
def replay(self, batch_size):
if len(self.memory) < batch_size:
return
minibatch = np.random.choice(self.memory, batch_size)
for state, action, reward, next_state, done in minibatch:
target = reward
if not done:
target = reward + self.gamma * np.amax(self.model.predict(next_state)[0])
target_f = self.model.predict(state)
target_f[0][action] = target
self.model.fit(state, target_f, epochs=1, verbose=0)
if self.epsilon > self.epsilon_min:
self.epsilon *= self.epsilon_decay
এখানে:
- Q-model একটি নিউরাল নেটওয়ার্ক তৈরি করে যা state এবং action এর জন্য Q-values অনুমান করে।
- Experience Replay ব্যবহার করা হয়, যাতে এজেন্ট তার অভিজ্ঞতা সংরক্ষণ করতে পারে এবং পরে তা থেকে শিখতে পারে।
- Target Network ব্যবহার করা হয় যা Q-value আপডেটের জন্য আরো স্থিতিশীল এবং ধারাবাহিক হতে সাহায্য করে।
সারাংশ:
- Q-Learning হল একটি মডেল-ফ্রি RL অ্যালগরিদম যা Q-value ফাংশন শিখে এবং optimal policy শিখে।
- Deep Q-Networks (DQN) হল Q-Learning-এর একটি উন্নত সংস্করণ যা Deep Learning ব্যবহার করে। এটি বড় এবং জটিল সমস্যাগুলির জন্য উপযুক্ত যেখানে Q-table তৈরি করা সম্ভব নয়, এবং এটি neural networks, experience replay, এবং target networks ব্যবহার করে মডেলকে প্রশিক্ষিত করে।
Read more