Q-Learning এবং Deep Q-Networks (DQN)

Deep Reinforcement Learning - পাইথন ডিপ লার্নিং (Python Deep Learning) - Machine Learning

413

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 আপডেট করা হয় এই রুলের মাধ্যমে: Q(s,a)=Q(s,a)+α(r+γmaxaQ(s,a)Q(s,a))Q(s, a) = Q(s, a) + \alpha \left( r + \gamma \cdot \max_{a'} Q(s', a') - Q(s, a) \right) যেখানে:
    • Q(s,a)Q(s, a) = বর্তমান অবস্থায় (state) একটি নির্দিষ্ট ক্রিয়ার (action) Q-value
    • rr = পরবর্তী স্তরের reward
    • γ\gamma = discount factor (ভবিষ্যতের পুরস্কারকে বর্তমানের তুলনায় কম গুরুত্ব দেয়)
    • α\alpha = learning rate (এজেন্ট নতুন তথ্য শিখতে কতটা দ্রুত শিখবে)
    • maxaQ(s,a)\max_{a'} Q(s', a') = পরবর্তী অবস্থায় (s') সর্বোচ্চ Q-value

Q-Learning এর প্রক্রিয়া:

  1. প্রাথমিক Q-table তৈরি: শুরুতে সমস্ত Q-values (Q(s, a)) শূন্য বা এলোমেলো মানের মধ্যে সেট করা হয়।
  2. অবস্থা নির্বাচন: এজেন্ট বর্তমান অবস্থায় (state) থাকে এবং তারপরে একটি অ্যাকশন (action) নির্বাচন করে।
  3. অ্যাকশন নির্বাচন: ε-greedy policy অনুসারে, এজেন্ট সর্বোচ্চ Q-value সহ একটি অ্যাকশন নির্বাচন করে, তবে কখনও কখনও এলোমেলোভাবে (explore) অন্য অ্যাকশনও নির্বাচন করতে পারে।
  4. রিওয়ার্ড এবং নতুন অবস্থান: এজেন্ট নির্বাচিত অ্যাকশনটি বাস্তবায়ন করে এবং পরবর্তী অবস্থান (state) এবং পুরস্কার (reward) পায়।
  5. Q-value আপডেট: পরবর্তী অবস্থায় অ্যাকশন গ্রহণের পর, Q-value আপডেট হয়।
  6. এটি পুনরাবৃত্তি হয় যতক্ষণ না এজেন্ট সর্বোচ্চ মোট পুরস্কার পেতে সক্ষম হয়।

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 এর মূল ধারণা:

  1. Q-table এর পরিবর্তে Neural Network:
    • DQN-এ একটি নিউরাল নেটওয়ার্ক ব্যবহার করা হয়, যা Q(s, a) মান অনুমান করে। এখানে, ইনপুট হিসাবে একটি অবস্থান (state) নেওয়া হয় এবং আউটপুট হিসাবে সম্ভাব্য সমস্ত অ্যাকশনের জন্য Q-values দেয়।
    • এটি Q-function approximation নামে পরিচিত, যেখানে নিউরাল নেটওয়ার্ক action-value function শিখে।
  2. Replay Buffer:
    • DQN একটি experience replay buffer ব্যবহার করে, যেখানে এজেন্ট তার পূর্ববর্তী অভিজ্ঞতা (state, action, reward, next state) সংরক্ষণ করে রাখে এবং পরে এলোমেলোভাবে তা ব্যবহার করে ট্রেনিং করে।
    • এই পদ্ধতিটি মডেলকে correlated data থেকে শিখতে সাহায্য করে, এবং data efficiency বৃদ্ধি করে।
  3. Target Network:
    • DQN এর একটি গুরুত্বপূর্ণ বৈশিষ্ট্য হল target network, যা একটি স্থির (fixed) নিউরাল নেটওয়ার্ক, যা Q-value updates গণনা করতে ব্যবহৃত হয়। এটি মূল নেটওয়ার্কের পরিবর্তে প্রতি কিছু সাইকেলে আপডেট হয়, যাতে ট্রেনিং স্টেবল হয়।
  4. Loss Function:

    • DQN এ Mean Squared Error (MSE) loss function ব্যবহার করা হয়, যা বাস্তব Q-value এবং অনুমানকৃত Q-value এর মধ্যে পার্থক্য পরিমাপ করে। এটি সাধারণত নেটওয়ার্ক আপডেট করতে ব্যবহৃত হয়।

    L(θ)=E[(yQ(st,at;θ))2]L(\theta) = \mathbb{E} \left[ \left( y - Q(s_t, a_t; \theta) \right)^2 \right]

    যেখানে:

    • y=r+γmaxaQ(s,a;θ)y = r + \gamma \cdot \max_{a'} Q(s', a'; \theta^-)
    • Q(st,at;θ)Q(s_t, a_t; \theta) হল বর্তমান Q-value যা নিউরাল নেটওয়ার্ক থেকে বের করা হয়।
    • θ\theta^- হল target network এর প্যারামিটার।

Q-Learning vs Deep Q-Networks (DQN):

বিষয়Q-LearningDeep Q-Network (DQN)
Q-valueQ-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 ব্যবহার করে মডেলকে প্রশিক্ষিত করে।

Content added By
Promotion

Are you sure to start over?

Loading...