Python দিয়ে Reinforcement Learning প্রজেক্ট তৈরি করা

Reinforcement Learning এর ভূমিকা - পাইথন দিয়ে মেশিন লার্নিং (Machine Learning with Python) - Machine Learning

314

Reinforcement Learning (RL) একটি জনপ্রিয় এবং শক্তিশালী মেশিন লার্নিং পদ্ধতি যেখানে একটি এজেন্ট (agent) পরিবেশের সাথে ইন্টারঅ্যাক্ট করে এবং পরবর্তীতে প্রতিক্রিয়া হিসেবে পুরস্কার বা শাস্তি পায়। এর মাধ্যমে এজেন্টটি সর্বোত্তম সিদ্ধান্ত নেওয়ার জন্য শিখে থাকে। RL এজেন্ট তার কর্ম (actions) দ্বারা তার পরিবেশ (environment) পরিবর্তন করে এবং পরবর্তীতে পুরস্কার (reward) বা শাস্তি (punishment) পেয়ে থাকে।

আমরা এখানে একটি RL প্রজেক্ট তৈরি করব যেখানে OpenAI Gym ব্যবহার করে একটি পরিবেশ তৈরি করা হবে এবং Q-learning অ্যালগরিদম ব্যবহার করে এজেন্টটি শেখানো হবে। OpenAI Gym হল একটি ওপেন সোর্স লাইব্রেরি যা বিভিন্ন RL পরিবেশ প্রদান করে, যেগুলি এজেন্টের জন্য ট্রেনিং এবং পরীক্ষা করতে সহায়ক।

প্রয়োজনীয় লাইব্রেরি ইনস্টলেশন

প্রথমে, আপনার প্রজেক্টে gym, numpy, এবং matplotlib লাইব্রেরিগুলি ইনস্টল করতে হবে। এই লাইব্রেরিগুলি ব্যবহার করা হবে পরিবেশ তৈরির জন্য এবং ফলাফল ভিজ্যুয়ালাইজ করার জন্য।

pip install gym numpy matplotlib

Q-learning অ্যালগরিদম

Q-learning হল একটি model-free reinforcement learning অ্যালগরিদম যা action-value function ব্যবহার করে। এটি এজেন্টকে শিখতে সহায়ক হয় যে কোন কর্ম (action) তাকে সর্বোত্তম পুরস্কার প্রদান করবে, এভাবে তার দীর্ঘমেয়াদী পুরস্কার সর্বাধিক করা সম্ভব।

Example: CartPole Problem - Q-learning

আমরা এখানে CartPole নামক একটি ক্লাসিক্যাল RL পরিবেশ ব্যবহার করব যেখানে একটি পোল (stick) একটি কার্টে ভারসাম্য বজায় রাখতে হবে। লক্ষ্য হল পোলটিকে যতটা সম্ভব উল্লম্ব অবস্থায় রাখা, যাতে এটি পড়ে না যায়।

১. Gym Environment Setup

import gym
import numpy as np
import matplotlib.pyplot as plt

# Gym এর CartPole পরিবেশ লোড করা
env = gym.make('CartPole-v1')

# পরিবেশের পরিসীমা জানি
action_space = env.action_space.n  # 0 বা 1 (কর্মের সংখ্যা)
state_space = env.observation_space.shape[0]  # 4টি অবজারভেশন (state)

# Q-টেবিল তৈরি করা (state x action)
Q = np.zeros((state_space, action_space))

# Q-learning অ্যালগরিদমের জন্য প্যারামিটার
alpha = 0.1  # Learning rate
gamma = 0.99  # Discount factor
epsilon = 0.1  # Exploration rate
episodes = 1000  # প্রজেক্টের জন্য মোট episodes

# Q-learning প্রক্রিয়া
for episode in range(episodes):
    state = env.reset()  # পরিবেশের শুরু
    done = False
    total_reward = 0
    
    while not done:
        if np.random.rand() < epsilon:  # Exploration
            action = env.action_space.sample()  # র‍্যান্ডম কর্ম
        else:  # Exploitation
            action = np.argmax(Q[state, :])  # সর্বোত্তম কর্ম
        
        next_state, reward, done, _ = env.step(action)  # কর্ম সম্পাদন
        total_reward += reward
        
        # Q-টেবিল আপডেট করা
        Q[state, action] = Q[state, action] + alpha * (reward + gamma * np.max(Q[next_state, :]) - Q[state, action])
        
        state = next_state
    
    # প্রগতি ট্র্যাক করা
    if episode % 100 == 0:
        print(f"Episode {episode}, Total Reward: {total_reward}")

# Q-টেবিল দেখুন
print("Trained Q-table:")
print(Q)

২. Hyperparameters এবং Model Evaluation

  • Alpha (Learning Rate): এটি শিখন হার নির্ধারণ করে, কতটা নতুন তথ্য আগের তথ্যের সাথে আপডেট হবে।
  • Gamma (Discount Factor): এটি ভবিষ্যতের পুরস্কারের গুরুত্ব নির্ধারণ করে। যদি γ=0\gamma = 0, তবে এজেন্ট শুধুমাত্র বর্তমান পুরস্কারকে গুরুত্ব দেয়। যদি γ=1\gamma = 1, তবে এজেন্ট ভবিষ্যতের পুরস্কারকেও সমান গুরুত্ব দেয়।
  • Epsilon (Exploration Rate): এটি Exploration vs Exploitation সমস্যার সমাধান দেয়। এটি জানায় এজেন্ট কতটা র‍্যান্ডমভাবে কর্ম নির্বাচন করবে।

৩. মডেল ফলাফল ভিজ্যুয়ালাইজেশন

এখন, matplotlib ব্যবহার করে এজেন্টের পারফরম্যান্স ভিজ্যুয়ালাইজ করা যায়।

# মডেল ফলাফল ভিজ্যুয়ালাইজ করা
rewards = []

for episode in range(100):
    state = env.reset()
    done = False
    total_reward = 0
    
    while not done:
        action = np.argmax(Q[state, :])
        next_state, reward, done, _ = env.step(action)
        total_reward += reward
        state = next_state
        
    rewards.append(total_reward)

# ফলাফল প্লট করা
plt.plot(rewards)
plt.title("Rewards per Episode")
plt.xlabel("Episode")
plt.ylabel("Total Reward")
plt.show()

৪. Model Testing

এখন, আমরা পরবর্তী কিছু ইপিসোডে আমাদের প্রশিক্ষিত মডেল পরীক্ষা করতে পারি। এজেন্টটি তার শিখন শেষ করার পর, আমরা দেখতে চাই এটি কতটা ভাল কাজ করছে।

# Model testing with the trained Q-table
state = env.reset()
done = False
total_reward = 0

while not done:
    action = np.argmax(Q[state, :])
    next_state, reward, done, _ = env.step(action)
    total_reward += reward
    state = next_state

print(f"Test Result: Total Reward: {total_reward}")

৫. Conclusion and Improvements

এটি একটি প্রাথমিক Q-learning এজেন্টের উদাহরণ। এটি অনেক ক্ষেত্রে ভাল কাজ করতে পারে, তবে এটির কিছু সীমাবদ্ধতা রয়েছে:

  • Exploration vs Exploitation: epsilon-greedy পদ্ধতি ব্যবহার করা হলেও, এটি সর্বদা সর্বোত্তম পন্থা নাও হতে পারে।
  • State Representation: CartPole-এর মতো সমস্যায়, পরিবেশের সঠিক উপস্থাপন খুব গুরুত্বপূর্ণ।

এগুলো সমাধান করতে:

  • Deep Q-Learning (DQN) ব্যবহার করা যেতে পারে, যা গভীর নিউরাল নেটওয়ার্কের সাহায্যে বৃহৎ বা জটিল স্টেট স্পেস পরিচালনা করতে পারে।
  • Prioritized Experience Replay বা Double Q-learning ইত্যাদি উন্নত পদ্ধতি ব্যবহার করা যেতে পারে।

সারাংশ:

  • Reinforcement Learning হল এমন একটি কৌশল যেখানে এজেন্টটি তার পরিবেশে শিখে এবং প্রতিক্রিয়া হিসাবে পুরস্কার বা শাস্তি পায়।
  • Q-learning হল একটি অপ্রতিরোধ্য RL অ্যালগরিদম যা পলিসি-ভিত্তিক শেখার কাজ করে এবং এজেন্টের সিদ্ধান্তের জন্য পুরস্কার নির্ধারণ করে।
  • OpenAI Gym লাইব্রেরি ব্যবহার করে বিভিন্ন RL পরিবেশ তৈরি করা যায় এবং Q-learning অ্যালগরিদম দিয়ে এজেন্টটি শিখানো যায়।
Content added By
Promotion

Are you sure to start over?

Loading...