Q-Learning হল একটি জনপ্রিয় রিইনফোর্সমেন্ট লার্নিং (Reinforcement Learning) এলগোরিদম, যা একটি এজেন্টকে একটি পরিবেশে কাজ করে তার শিখন প্রক্রিয়া চালিয়ে যেতে সক্ষম করে। এটি মডেল-ফ্রি এলগোরিদম, যার মানে হল যে এটি পরিবেশের ডাইনামিক্স বা মডেল জানে না, বরং শুধুমাত্র পুরস্কার (reward) এবং শাস্তি (penalty) থেকে শেখে।
Q-Learning এর মূল ধারণা
Q-Learning হল একটি ভ্যালু-ভিত্তিক এলগোরিদম যা Q-ফাংশন (Quality function) ব্যবহার করে সিদ্ধান্ত নিতে সহায়ক। এটি একটি পরিবেশে কাজ করার সময় প্রতিটি স্থিতি (state) এবং ক্রিয়া (action) জুড়ির জন্য Q-ভ্যালু (Q-value) নির্ধারণ করে, যা পরবর্তীতে একটি নির্দিষ্ট কৌশল অনুসরণ করার জন্য সর্বোত্তম কর্ম পছন্দ করতে ব্যবহৃত হয়।
Q-ফাংশনটির মূল লক্ষ্য হল প্রতিটি অবস্থার জন্য সবচেয়ে ভাল কর্ম (action) বেছে নেওয়া, যা ভবিষ্যতে সর্বোচ্চ পুরস্কার (reward) প্রদান করবে। এই মান (Q-value) কম্পিউট করা হয়:
যেখানে:
- : অবস্থা এবং কর্ম এর জন্য Q-ভ্যালু।
- : অবস্থা এবং কর্ম এর জন্য বর্তমান পুরস্কার।
- : ডিসকাউন্ট ফ্যাক্টর, যা ভবিষ্যত পুরস্কারের গুরুত্ব নির্দেশ করে।
- : পরবর্তী অবস্থায় (state ) সর্বোত্তম কর্মের জন্য Q-ভ্যালু।
Q-Learning এর পদক্ষেপ
- অবস্থা নির্ধারণ (Initialize Q-table):
একটি টেবিল তৈরি করা হয় যেখানে প্রতিটি অবস্থার জন্য প্রতিটি ক্রিয়া (action) এর জন্য Q-ভ্যালু থাকে। এই Q-ভ্যালুগুলি শুরুতে 0 বা র্যান্ডম মান দিয়ে ইনিশিয়ালাইজ করা হয়। - এজেন্টের ট্রেনিং:
- এজেন্ট শুরু করে একটি নির্দিষ্ট অবস্থা (state) থেকে।
- এটি একটি কর্ম (action) নির্বাচন করে। কর্ম নির্বাচন করার জন্য -greedy কৌশল ব্যবহার করা হয়, যেখানে এজেন্ট 90% সময় সবচেয়ে ভাল কর্ম নির্বাচন করবে এবং 10% সময় এলোমেলো (random) কর্ম নিবে।
- কর্মটি পরিবেশে প্রয়োগ হয় এবং একটি নতুন অবস্থা এবং পুরস্কার প্রদান করা হয়।
- পরবর্তী Q-ভ্যালু আপডেট করা হয় পুরস্কারের মাধ্যমে।
Q-ভ্যালু আপডেট:
Q-ভ্যালু আপডেট করার জন্য নিচের রীতি অনুসরণ করা হয়:যেখানে:
- হল লার্নিং রেট, যা নতুন তথ্যের প্রভাবের পরিমাণ নির্দেশ করে।
- পুনরাবৃত্তি:
- এই পদক্ষেপগুলি বারবার করা হয় যতক্ষণ না Q-ভ্যালুগুলি কনভার্জ (converge) হয়ে যায়, অর্থাৎ কোন পরিবর্তন না আসা পর্যন্ত।
Q-Learning Algorithm এর ব্যবহার
Q-Learning একাধিক ক্ষেত্রে ব্যবহার করা যেতে পারে, যেখানে একটি এজেন্ট কোনও নির্দিষ্ট লক্ষ্য অর্জন করার জন্য বিভিন্ন কর্মের মাধ্যমে পরিবেশের সাথে ইন্টারঅ্যাক্ট করে। কিছু গুরুত্বপূর্ণ ব্যবহার ক্ষেত্র হলো:
1. গেম প্লে (Gaming)
- চেস বা গো এর মতো গেমগুলিতে এজেন্টের জন্য কৌশল শেখাতে Q-Learning ব্যবহৃত হয়। এজেন্ট প্রতিটি অবস্থার জন্য সর্বোত্তম পদক্ষেপ (move) নির্ধারণ করতে সক্ষম হয়।
2. রোবোটিক্স (Robotics)
- রোবটগুলি কাস্টম পরিবেশে কাজ করার জন্য Q-Learning ব্যবহার করে, যেমন একটি রোবটকে একটি এলাকা অনুসন্ধান বা একটি নির্দিষ্ট লক্ষ্যস্থলে পৌঁছানোর জন্য শেখানো।
3. অটোনোমাস ভেহিকেল (Autonomous Vehicles)
- Q-Learning অটোনোমাস ভেহিকেলগুলির জন্যও ব্যবহৃত হয়, যাতে এটি পরিবেশের মধ্যে চলাচল করার জন্য বিভিন্ন সিদ্ধান্ত নিতে পারে, যেমন সিগন্যাল অনুসরণ বা দুর্ঘটনা এড়ানো।
4. নির্ধারিত প্রক্রিয়া (Optimization Problems)
- এটি বিভিন্ন অপ্টিমাইজেশন সমস্যা যেমন রাস্তা নির্মাণ বা লগিস্টিক্স ব্যবস্থাপনায় ব্যবহৃত হয় যেখানে সঠিক পথ বা কর্মের সিরিজ নির্বাচন করতে হয়।
5. ফিনান্স (Finance)
- ফিনান্সের ক্ষেত্রে Q-Learning ব্যবহৃত হতে পারে স্টক ট্রেডিং বা পোর্টফোলিও অপ্টিমাইজেশনের জন্য, যেখানে একটি এজেন্ট সেরা ট্রেডিং কৌশল শিখতে পারে।
Q-Learning এর উদাহরণ
এখানে একটি সহজ উদাহরণ দেওয়া হলো যেখানে একটি এজেন্ট একটি গ্রিড-ওয়ার্ল্ডে চলে এবং লক্ষ্য (goal) পর্যন্ত পৌঁছানোর জন্য কর্ম নির্বাচন করে:
import numpy as np
import random
# পরিবেশের আকার (4x4 গ্রিড)
grid_size = 4
# Q টেবিল ইনিশিয়ালাইজ করা
Q = np.zeros((grid_size, grid_size))
# হাইপারপ্যারামিটার
alpha = 0.8 # লার্নিং রেট
gamma = 0.9 # ডিসকাউন্ট ফ্যাক্টর
epsilon = 0.1 # epsilon-greedy
# পরিমাণ লুপ (Episodes)
episodes = 1000
# প্রশিক্ষণ লুপ
for _ in range(episodes):
state = (0, 0) # শুরু অবস্থা
done = False
while not done:
if random.uniform(0, 1) < epsilon: # exploration
action = random.choice([(0, 1), (1, 0), (0, -1), (-1, 0)]) # এলোমেলো কর্ম
else: # exploitation
action = max([(0, 1), (1, 0), (0, -1), (-1, 0)], key=lambda x: Q[state[0] + x[0], state[1] + x[1]])
next_state = (state[0] + action[0], state[1] + action[1])
# সীমানার চেক
if next_state[0] < 0 or next_state[1] < 0 or next_state[0] >= grid_size or next_state[1] >= grid_size:
next_state = state # অবৈধ পদক্ষেপ ফেরত
# পুরস্কার
reward = -1 # প্রতিটি পদক্ষেপে শাস্তি
if next_state == (3, 3): # লক্ষ্য অবস্থা
reward = 100 # পুরস্কার
# Q-ভ্যালু আপডেট
Q[state[0], state[1]] = Q[state[0], state[1]] + alpha * (reward + gamma * np.max(Q[next_state[0], next_state[1]]) - Q[state[0], state[1]])
# পরবর্তী অবস্থা
state = next_state
if state == (3, 3):
done = True # লক্ষ্য পৌঁছানো
# পরিশেষে, শেখানো Q টেবিল
print(Q)
সারাংশ
Q-Learning হল একটি শক্তিশালী রিইনফোর্সমেন্ট লার্নিং এলগোরিদম যা বিভিন্ন পরিবেশে সিদ্ধান্ত গ্রহণের জন্য ব্যবহার করা হয়। এটি এজেন্টকে নিজে থেকে শিখতে সাহায্য করে এবং বিভিন্ন পরিস্থিতিতে সর্বোত্তম কর্ম নির্বাচন করতে সক্ষম করে।
Read more