RL & Generative AIপড়তে ১০ মিনিট লাগবে

রিইনফোর্সমেন্ট লার্নিং (Reinforcement Learning) বেসিকস

চেষ্টা করা, ভুল করা এবং পুরস্কার পাওয়ার মাধ্যমে শেখা
scope:কোর কনসেপ্ট (মূল ধারণা)difficulty:ইন্টারমিডিয়েট (Intermediate)

একটি কুকুরছানাকে ট্রেইনিং দেওয়া (Training a Dog)

ধরুন, আপনি একটি কুকুরছানাকে বসতে শেখাচ্ছেন। আপনি বললেন "বসো (sit)"। কুকুরছানাটি হয়তো গোল হয়ে ঘুরতে শুরু করল। কিছুই হলো না। এরপর কুকুরটি শুয়ে পড়ল। এতেও কিছু হলো না। কিন্তু যখন কুকুরছানাটি ভুল করে বসে পড়ল, তখনই আপনি তাকে পুরস্কার বা ট্রিট (Treat!) দিলেন। কুকুরছানাটির চোখ আনন্দে উজ্জ্বল হয়ে উঠল। এভাবে বেশ কয়েকবার করার পর সে নিজে থেকেই বুঝতে পারবে: বসতে পারলেই ট্রিট বা পুরস্কার পাওয়া যায়।

এই পুরো ব্যাপারটিই হলো রিইনফোর্সমেন্ট লার্নিং (RL) — বারবার চেষ্টা করা, ভুল করা এবং সেখান থেকে রিওয়ার্ড বা পুরস্কার পাওয়ার মাধ্যমে নিজে নিজে শেখা। কেউ কুকুরছানাটিকে কোনো ম্যানুয়াল বা বই পড়তে দেয়নি। কেউ বসে থাকার ১০ হাজার উদাহরণ বা ছবিও তাকে দেখায়নি। সে কেবল নিজে থেকেই নানা ধরনের কাজ করে দেখেছে এবং তার ফলাফলের ওপর ভিত্তি করেই সে শিখেছে।

রিইনফোর্সমেন্ট লার্নিং (RL) যেভাবে কাজ করে

যেকোনো আরএল (RL) সমস্যার মূলত ৪টি অংশ থাকে:

  • এজেন্ট (Agent) — যে শিখছে (যেমন: সেই কুকুরছানা, গেমের বট কিংবা কোনো রোবট)।
  • এনভায়রনমেন্ট (Environment) — এজেন্ট যে দুনিয়া বা পরিবেশে কাজ করে (যেমন: একটি রুম, কোনো গেম, বা কোনো ফ্যাক্টরির ফ্লোর)।
  • স্টেট (State) — এজেন্ট ঠিক এই মুহূর্তে যা কিছু দেখছে বা বুঝতে পারছে (যেমন: রুমের অবস্থা, গেমের স্ক্রিন, বা সেন্সরের রিডিং)।
  • অ্যাকশন (Action) — এজেন্ট যে কাজগুলো করতে পারে (যেমন: বসা, লাফ দেওয়া, বামে যাওয়া বা কোনো কিছু ধরা)।

পুরো চক্রটি মূলত এরকম: এজেন্ট একটি স্টেট (state) দেখে, তারপর একটি অ্যাকশন (action) নেয়, যার ফলে সে একটি রিওয়ার্ড (reward) (ইতিবাচক বা নেতিবাচক) পায়, এবং নতুন আরেকটি স্টেটে চলে যায়। এই চক্রটি বারবার চলতেই থাকে। আর এর মূল উদ্দেশ্য হলো: সময়ের সাথে সাথে একটি পলিসি (policy) বা নির্দিষ্ট কৌশল শেখা—যা তাকে ভবিষ্যতে সবচেয়ে বেশি রিওয়ার্ড পেতে সাহায্য করবে।

নতুন কিছু খোঁজা বনাম চেনা পথে হাঁটা (The Exploration-Exploitation Dilemma)

কল্পনা করুন, আপনি নতুন একটি শহরে গেছেন এবং রাতের খাবারের জন্য আপনি ভীষণ ক্ষুধার্ত। গতকাল আপনি একটি মোটামুটি ভালো রেস্টুরেন্ট বা খাবার দোকান খুঁজে পেয়েছিলেন, যাকে ১০-এর মধ্যে ৭ দেওয়া যায় (7/10)। এখন আপনি কি আবার সেখানেই ফিরে যাবেন (অর্থাৎ আপনার জানা জিনিসটির সদ্ব্যবহার বা exploit করবেন)? নাকি নতুন আরেকটি জায়গা খুঁজবেন (অর্থাৎ explore করবেন, যেখানে আপনি হয়তো ৯/১০ মানের একটি দারুণ খাবার পেতে পারেন — আবার সেটি ৩/১০ মানের জঘন্য খাবারও হতে পারে!)?

এটিই হলো এক্সপ্লোরেশন-এক্সপ্লয়েটেশন ডিলেমা (exploration-exploitation dilemma) বা পুরোনো নিয়মে চলা বনাম নতুন কিছু খোঁজার মধ্যকার দ্বন্দ্ব। আর এটিই আরএল (RL)-এর মূল ভিত্তি। যদি আপনি অতিরিক্ত এক্সপ্লয়েটেশন করেন: তবে আপনি মাঝারিমানেই আটকে থাকবেন। আর যদি অতিরিক্ত এক্সপ্লোরেশন করেন: তবে আপনি আপনার শেখা জ্ঞানকে কখনোই ঠিকঠাক কাজে লাগাতে পারবেন না। প্রতিটি আরএল (RL) অ্যালগরিদমকেই এই দুইয়ের মাঝে একটি চমৎকার ভারসাম্য বজায় রাখতে হয়।

এ ক্ষেত্রে একটি সাধারণ উপায় হলো: এপসাইলন-গ্রিডি (epsilon-greedy)। এপসাইলন সম্ভাবনায় (probablity) (ধরুন ১০% সময়ে), আপনি র্যান্ডম বা এলোমেলো কোনো অ্যাকশন বেছে নেবেন (অর্থাৎ এক্সপ্লোর করবেন)। আর বাকি (১-এপসাইলন) বা ৯০% সময়ে, আপনি আপনার জানা মতে সেরা অ্যাকশনটি বেছে নেবেন (অর্থাৎ এক্সপ্লয়েট করবেন)। সময়ের সাথে সাথে, এপসাইলনের পরিমাণ ধীরে ধীরে কমানো হয় — অর্থাৎ প্রথমে বেশি বেশি এক্সপ্লোর করা হয় এবং পরে শেখা জ্ঞানের ওপরে নির্ভর করে এক্সপ্লয়েট করতে হয়।

রিওয়ার্ড শেপিং (Reward Shaping): ইনসেন্টিভ বা পুরস্কারের কলাকৌশল

এআই-এর জন্য সঠিক রিওয়ার্ড ফাংশন ডিজাইন করাটা খুবই গুরুত্বপূর্ণ — এবং একই সাথে এটি বেশ কঠিনও। একটি রোবটকে যদি বলা হয় "দরজার কাছে পৌঁছাও", তাহলে সে হয়তো এমন একটি পদ্ধতি শিখতে পারে যেখানে সে কেবল সামনের দিকে হেলে পড়বে, কারণ সেন্সরটিকে দরজার সবচেয়ে কাছাকাছি নেওয়ার জন্য সেটিই হয়তো সবচেয়ে দ্রুত উপায়। আবার কোনো গেম বটকে যদি বেশি স্কোরের জন্য রিওয়ার্ড দেওয়া হয়, তবে সে হয়তো গেমটি ঠিকমতো খেলার বদলে গেমের কোনো বাগ বা ভুল বের করে এক জায়গাতেই বারবার স্কোর করতে থাকবে!

এই ব্যাপারটিকে রিওয়ার্ড হ্যাকিং (reward hacking) বলা হয়, এবং বর্তমান এআই-এর জন্য এটি সবচেয়ে বড় চ্যালেঞ্জগুলোর একটি। এগুলোর ক্ষেত্রে, এজেন্ট ঠিক ততটুকুই করবে যতটুকু করলে তাকে পুরস্কার বা ইনসেন্টিভ দেওয়া হবে — যা হয়তো আদতে আপনার আসল উদ্দেশ্য নাও হতে পারে।

গ্রিড ওয়ার্ল্ডে একটি সাধারণ আরএল (RL) এজেন্ট

import random
class GridWorld:
"""একটি 4x4 গ্রিড। এজেন্ট (0,0) থেকে শুরু করে এবং তার লক্ষ্য থাকে (3,3) এ পৌঁছানো।"""
def __init__(self):
self.size = 4
self.reset()
def reset(self):
self.pos = (0, 0)
return self.pos
def step(self, action):
x, y = self.pos
if action == 'up': y = max(0, y - 1)
elif action == 'down': y = min(self.size - 1, y + 1)
elif action == 'left': x = max(0, x - 1)
elif action == 'right': x = min(self.size - 1, x + 1)
self.pos = (x, y)
if self.pos == (3, 3):
return self.pos, 10, True # লক্ষ্যের জন্য বড় পুরস্কার!
return self.pos, -1, False # প্রতি ধাপের জন্য ছোট শাস্তি
def train_agent(episodes=500):
env = GridWorld()
actions = ['up', 'down', 'left', 'right']
# কিউ-টেবিল (Q-table): স্টেট -> অ্যাকশন -> ভ্যালু
Q = {}
for x in range(4):
for y in range(4):
Q[(x,y)] = {a: 0.0 for a in actions}
epsilon = 0.3
alpha = 0.1 # লার্নিং রেট (Learning rate)
gamma = 0.9 # ডিসকাউন্ট ফ্যাক্টর (Discount factor)
for ep in range(episodes):
state = env.reset()
for _ in range(50): # সর্বোচ্চ ধাপসংখ্যা
# এপসাইলন-গ্রিডি অ্যাকশন সিলেকশন (Epsilon-greedy action selection)
if random.random() < epsilon:
action = random.choice(actions)
else:
action = max(actions, key=lambda a: Q[state][a])
next_state, reward, done = env.step(action)
# কিউ-লার্নিং আপডেট (Q-learning update)
best_next = max(Q[next_state].values())
Q[state][action] += alpha * (reward + gamma * best_next - Q[state][action])
state = next_state
if done:
break
return Q
random.seed(42)
Q = train_agent()
# শেখা পলিসি বা কৌশল দেখানো হচ্ছে
print("শেখা পলিসি (প্রতিটি সেলের সেরা চাল):")
arrows = {'up': '^', 'down': 'v', 'left': '<', 'right': '>'}
for y in range(4):
row = ""
for x in range(4):
if (x, y) == (3, 3):
row += " G "
else:
best = max(Q[(x,y)], key=Q[(x,y)].get)
row += f" {arrows[best]} "
print(row)
Output
শেখা পলিসি (প্রতিটি সেলের সেরা চাল):
 v  v  >  v
 >  v  >  v
 >  >  >  v
 >  >  >  G
Note: আরএল (RL) নিয়ে যুগান্তকারী কিছু মাইলফলক: আলফাগো (AlphaGo - 2016) আরএল ব্যবহার করেই গো (Go) গেমে দক্ষতা অর্জন করেছিল এবং বিশ্ব চ্যাম্পিয়ন লি সেডলকে (Lee Sedol) হারিয়েছিল। এ ছাড়া ওপেনএআই ফাইভ (OpenAI Five - 2019) আরএল ব্যবহার করে পেশাদার ডোটা ২ (Dota 2) দলগুলোকে পরাজিত করেছিল। এমনকি ডেটা সেন্টারের কুলিং সিস্টেম অপ্টিমাইজ করতে (যার ফলে গুগলের ৪০% বিদ্যুৎ সাশ্রয় হয়েছে), নিউক্লিয়ার ফিউশন রিয়্যাক্টর (nuclear fusion reactors) নিয়ন্ত্রণ করতে এবং লার্জ ল্যাঙ্গুয়েজ মডেল বা এলএলএম (LLM)-কে আরও উন্নত করতেও এই আরএল (RLHF — যে প্রযুক্তির কারণে চ্যাটজিপিটি মানুষের মতো উত্তর দিতে পারে) দারুণভাবে ব্যবহার করা হচ্ছে।

আরএল বনাম সুপারভাইজড লার্নিং (RL vs Supervised Learning)

সুপারভাইজড লার্নিংয়ে (supervised learning) আপনার হাতে সঠিক উত্তরের একটি বিশাল ডেটাসেট থাকে: যেমন মডেলটি স্পষ্টভাবেই জানে যে "এই ছবিটি একটি বিড়ালের"। কিন্তু আরএল (RL)-এ আগে থেকে কোনো সঠিক উত্তর দেওয়া থাকে না — এজেন্ট কেবল কাজ করার পরই কিছু রিওয়ার্ড বা পুরস্কার পায়। এজেন্টকেই তার নিজের বুদ্ধি খাটিয়ে বুঝতে হয় যে তার আগের ঠিক কোন কাজের জন্য তাকে এই রিওয়ার্ড দেওয়া হয়েছে। যেমন: সে কি বসার কারণে ট্রিট বা পুরস্কার পেয়েছে, নাকি লেজ নাড়ানোর জন্য, নাকি আগে তিনবার ডাকার কারণে?

যেকোনো দেরিতে আসা পুরস্কারের (delayed reward) জন্য পেছনের কোন কাজটি দায়ী তা খুঁজে বের করার এই সমস্যাটিকে ক্রেডিট অ্যাসাইনমেন্ট প্রবলেম (credit assignment problem) বলা হয়। আর ঠিক এ কারণেই আরএল একই সাথে এতটা শক্তিশালী এবং ভীষণ চ্যালেঞ্জিং একটি বিষয়।

ছোট কুইজ

এক্সপ্লোরেশন-এক্সপ্লয়েটেশন ডিলেমা (exploration-exploitation dilemma) কী?
Challenge

পড়া চালিয়ে যান