Foundationsপড়তে ৭ মিনিট লাগবে

মেশিন লার্নিং (Machine Learning)-এর ধরনগুলো

তিনটি ক্লাসরুম ও তিনটি শেখার ধরন — সুপারভাইজড (supervised), আনসুপারভাইজড (unsupervised) এবং রিইনফোর্সমেন্ট (reinforcement)
supervised:লেবেল করা ডেটা (Labeled data) · এর কাজই হলো কোনো নির্দিষ্ট ফলাফল বের বা প্রেডিক্ট (predict) করাunsupervised:কোনো লেবেল দেওয়া থাকে না (No labels) · ডেটার ভেতরের লুকানো প্যাটার্ন বা গঠন খুঁজে বের করাreinforcement:ভুল করা আর শেখা (Trial & error) · সবচেয়ে বেশি রিওয়ার্ড বা পুরস্কার (reward) অর্জন করা

যেকোনো তিনটি ভিন্ন ভিন্ন ক্লাসরুম বা শ্রেণিকক্ষের কথা ভাবুন।

ধরা যাক ক্লাসরুম এ (Classroom A)-তে, শিক্ষক একটি ছবির কার্ড বা ফ্ল্যাশকার্ড উঁচিয়ে ধরে বললেন, "এটি হলো একটি বিড়াল।" এরপর তিনি আরেকটি ছবি দেখিয়ে বললেন: "এটি একটি কুকুর।" এখানকার শিক্ষার্থীরা মূলত সঠিক উত্তর দেওয়া আছে এমন সব উদাহরণ দেখে শেখে। অনেকগুলো ফ্ল্যাশকার্ড দেখার পর, তারা একা একাই নতুন কোনো প্রাণী দেখে সেটি চিনতে পারে।

আবার ক্লাসরুম বি (Classroom B)-তে, কোনো শিক্ষকই নেই। এর বদলে সেখানে থাকা শিক্ষার্থীদের কেবল এক গাদা ছবি দিয়ে বলা হলো: "এগুলোকে তোমাদের কাছে যেমন ভালো মনে হয়, সেগুলোর ওপর ভিত্তি করে আলাদা আলাদা দলে ভাগ করো।" এখানে কেউই বলে দেয় না যে এর দলগুলো বা গ্রুপগুলো কেমন হবে — বরং শিক্ষার্থীরা একা একাই এর ভেতরের প্যাটার্ন বা গঠনগুলো আবিষ্কার করে।

আর ক্লাসরুম সি (Classroom C)-তে, একজন শিক্ষার্থী সাইকেল চালানো শিখছে। তাকে কেউই কোনো নিয়মকানুন বা ম্যানুয়াল (manual) হাতে ধরিয়ে দেয়নি। সে শুধু চালানোর চেষ্টা করে, টলমল করে, পড়ে যায় এবং এরপর আবার নিজেকে শুধরে নিয়ে নতুন করে চেষ্টা করে। এরপর যতবার সে তার ব্যালেন্স বা ভারসাম্য আগের চেয়ে সামান্য আরেকটু বেশি সময় ধরে রাখতে পারে, ততবার সে একটি "বাহ, দারুণ!" শোনে। সে মূলত বারবার চেষ্টা করা, ভুল করা এবং সেখান থেকে পাওয়া রিওয়ার্ড বা প্রাপ্তির মাধ্যমে এটি শেখে।

আর এই তিনটি ক্লাসরুমের গল্পের সাথেই মেশিন লার্নিংয়ের প্রধান তিনটি ধরনের একেবারে হুবহু মিল রয়েছে।

১. সুপারভাইজড লার্নিং (Supervised Learning) — "সঠিক উত্তর বা অ্যানসার-কী (answer key) থেকে শেখা"

এটি হলো মেশিন লার্নিংয়ের সবচেয়ে পরিচিত এবং কমন একটি ধরন। এখানে মডেলকে ইনপুট-আউটপুট জোড়া (input-output pairs) দেওয়া হয় — অর্থাৎ এখানে আপনি ডেটার সঠিক উত্তর আগে থেকেই জানেন। আর মডেলটি মূলত যেকোনো ইনপুটের সাথে তার সঠিক আউটপুটের সম্পর্ক বা সংযোগটি শিখে নেয়।

এটিকে এমন কোনো পাঠ্যবই দিয়ে পড়ার সাথে তুলনা করতে পারেন, যার পেছনে সমস্ত প্রশ্নের উত্তর দেওয়া থাকে। যেখানে আপনি শুধু অনুশীলন করেন, এরপর নিজের উত্তরের সাথে বইয়ের পৃষ্ঠার শেষের উত্তরটি মিলিয়ে দেখেন এবং নিজের ভুলগুলো শুধরে নেন।

বাস্তব দুনিয়ায় এর ব্যবহার:

  • ইমেইল → স্প্যাম (spam) নাকি স্প্যাম নয়? (ক্লাসিফিকেশন বা classification)
  • বাড়ির বিভিন্ন বৈশিষ্ট্য বা ফিচার → এটির সম্ভাব্য দাম কত হতে পারে? (রিগ্রেশন বা regression)
  • মেডিকেল স্ক্যান → কোনো রোগ আছে নাকি রোগী সম্পূর্ণ সুস্থ? (ক্লাসিফিকেশন বা classification)
  • কাস্টমার ডেটা → তারা কি জিনিসটি কিনবে? (ক্লাসিফিকেশন বা classification)

এর প্রধান শর্ত: এর জন্য আপনার লেবেল করা ডেটা (labeled data)-এর প্রয়োজন হবে — অর্থাৎ এখানে ট্রেইনিংয়ের প্রতিটি উদাহরণের সঠিক উত্তরগুলো কেউ একজন (সাধারণত মানুষ) আগে থেকেই দিয়ে রাখে।

সুপারভাইজড লার্নিং (Supervised Learning): বাড়ির দাম প্রেডিক্ট বা অনুমান করা

from sklearn.linear_model import LinearRegression
import numpy as np
# ফিচার (Features): [আকার_বর্গফুট (size_sqft), বেডরুম (bedrooms), বয়স_বছর (age_years)]
X = np.array([
[1400, 3, 10],
[1600, 3, 5],
[1700, 4, 8],
[1875, 4, 3],
[1100, 2, 15],
[2200, 5, 2],
])
# লেবেল (Labels): দামগুলো হাজারে দেওয়া আছে
y = np.array([245, 312, 279, 380, 180, 450])
model = LinearRegression()
model.fit(X, y)
# নতুন একটি বাড়ির দাম প্রেডিক্ট বা অনুমান করা
new_house = [[1500, 3, 7]]
print(f"প্রেডিক্ট করা দাম (Predicted price): ${model.predict(new_house)[0]:.0f}k")
Output
প্রেডিক্ট করা দাম (Predicted price): $282k

২. আনসুপারভাইজড লার্নিং (Unsupervised Learning) — "লুকানো গ্রুপ বা দলগুলো খুঁজে বের করা"

এখানে ডেটার কোনো লেবেল থাকে না। এখানে মডেলটিকে কেবল কিছু কাঁচা বা র ডেটা (raw data) দেওয়া হয় এবং এর ভেতরের গঠন বা কাঠামো মডেলটিকে একা একাই খুঁজে নিতে হয়। এটিকে আপনি এমন ভাবতে পারেন যে, কাউকে একটি বক্সে ১,০০০টি বোতাম দিয়ে বলা হলো, "তোমার কাছে যেভাবে ভালো মনে হয় তুমি সেভাবে এগুলোকে গুছিয়ে রাখো।"

এখন মডেলটি চাইলে সেগুলোর রঙ, আকার, তাতে থাকা ছিদ্রে সংখ্যা অথবা সেগুলো কী দিয়ে বানানো হয়েছে, তার ওপর ভিত্তি করে এগুলোকে আলাদা দলে ভাগ করতে পারে — মূলত এখানে এটি এমন কিছু প্যাটার্ন খুঁজে বের করে, যা মানুষের পক্ষে খুঁজে পাওয়া প্রায় অসম্ভব।

বাস্তব দুনিয়ায় এর ব্যবহার:

  • মার্কেটিং বা ব্যবসায়ের জন্য কাস্টমারদের বিভিন্ন দলে ভাগ করা (ক্লাস্টারিং বা clustering)
  • ক্রেডিট কার্ডের যেকোনো অস্বাভাবিক বা অদ্ভুত লেনদেন শনাক্ত করা (অ্যানোমালি ডিটেকশন বা anomaly detection)
  • অনেক বেশি জটিল কোনো ডেটাকে এর মূল ডাইমেনশনে বা মাত্রায় কমিয়ে আনা (ডাইমেনশনালিটি রিডাকশন বা dimensionality reduction)
  • সম্পর্কযুক্ত পণ্যগুলো খুঁজে বের করা ("যারা X কিনেছে তারা Y-ও কিনেছে")

আনসুপারভাইজড লার্নিং (Unsupervised Learning): কাস্টমার ক্লাস্টারিং (Customer Clustering)

from sklearn.cluster import KMeans
import numpy as np
# কাস্টমার ডেটা: [বাৎসরিক_খরচ (annual_spending), আসার_সংখ্যা (visit_frequency)]
customers = np.array([
[500, 2], [480, 3], [520, 1], # খরচের পরিমাণ কম
[3000, 15], [2800, 12], [3200, 18], # খরচের পরিমাণ বেশি
[1500, 8], [1400, 7], [1600, 9], # খরচের পরিমাণ মাঝারি
])
# মডেলকে ৩টি গ্রুপ বা দল খুঁজে বের করে দিতে বলুন (কোনো লেবেল নেই!)
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(customers)
print("গ্রুপ অ্যাসাইনমেন্টস (Group assignments):", kmeans.labels_)
# নতুন কাস্টমার — কোন গ্রুপে পড়বে?
new_customer = [[2500, 10]]
print("নতুন কাস্টমার গ্রুপ (New customer group):", kmeans.predict(new_customer))
Output
গ্রুপ অ্যাসাইনমেন্টস (Group assignments): [2 0 2 0 0 0 1 1 1]
নতুন কাস্টমার গ্রুপ (New customer group): [1]

৩. রিইনফোর্সমেন্ট লার্নিং (Reinforcement Learning) — "কাজের মাধ্যমেই শেখা"

এটি অন্য সবগুলোর চেয়ে একদম আলাদা। কারণ এখানে শেখার জন্য আগে থেকে কোনো ডেটাসেট (dataset) দেওয়া হয় না। এর বদলে একটি এজেন্ট (agent) যেকোনো পরিবেশের (environment) সাথে ইন্টারেক্ট করে কোনো একটি নির্দিষ্ট অ্যাকশন (action) সম্পন্ন করে এবং সেটির ওপর ভিত্তি করে তাকে রিওয়ার্ড বা পুরস্কার (rewards) অথবা পেনাল্টি বা শাস্তি (penalties) দেওয়া হয়। হাজার হাজার বার একই কাজ বারবার করার মাধ্যমে এটি একা একাই সবচেয়ে সেরা কৌশলটি শিখে নেয়。

এটি অনেকটা ভিডিও গেম খেলা শেখার মতোই। কারণ গেম খেলার সময় কখনোই আপনার হাতে "সঠিক মুভ বা চাল" লেখা কোনো ডেটাসেট ধরিয়ে দেওয়া হয় না। আপনি কেবল খেলেন, বারবার হারেন, এরপর ঠিক কোন কারণে আপনি হেরেছেন সেটি বুঝতে পারেন এবং এর পরেরবার ভিন্ন কোনো নিয়ম কাজে লাগিয়ে জেতার চেষ্টা করেন।

বাস্তব দুনিয়ায় এর ব্যবহার:

  • গেম এআই (Game AI) (যেমন: AlphaGo, দাবা ইঞ্জিন (Chess engines), অ্যাটারি বটস্ (Atari bots))
  • সেলফ-ড্রাইভিং কার বা গাড়ি (কোনো কিছুতে ধাক্কা না খেয়ে চলা = রিওয়ার্ড (reward))
  • রোবোটিক বাহু (Robot arms) ব্যবহার করে যেকোনো বস্তু বা জিনিস তোলা শেখা
  • সুপারিশ বা রেকমেন্ডেশন সিস্টেম (Recommendation systems) (কোনো কনটেন্ট দেখানো → ইউজারের সেটি ক্লিক করা = রিওয়ার্ড (reward))

রিইনফোর্সমেন্ট লার্নিং (Reinforcement Learning): সাধারণ রিওয়ার্ড এজেন্ট (Simple Reward Agent)

import random
# সাধারণ RL: এজেন্ট খুঁজে বের করতে শেখে যে কোন দরজার পেছনে গুপ্তধন আছে
# ৩টি দরজা, কেবল ২ নম্বর দরজার পেছনেই রিওয়ার্ড (reward) বা পুরস্কার রয়েছে
reward_door = 2
q_values = [0.0, 0.0, 0.0] # প্রতিটি দরজার অনুমিত মান (estimated value)
learning_rate = 0.1
for episode in range(100):
# ৩০% সময়ে র‍্যান্ডমভাবে (randomly) অন্যান্য দরজায় খোঁজ করে
if random.random() < 0.3:
door = random.randint(0, 2)
else:
door = q_values.index(max(q_values))
reward = 1.0 if door == reward_door else 0.0
# আপডেট বা পরিবর্তন: মানটিকে রিওয়ার্ডের (reward) দিকে একটু বাড়িয়ে দেওয়া
q_values[door] += learning_rate * (reward - q_values[door])
print("শেখা মানগুলো (Learned values):", [f"{v:.2f}" for v in q_values])
print(f"সবচেয়ে সেরা দরজা (Best door): {q_values.index(max(q_values))}")
Output
শেখা মানগুলো (Learned values): ['0.03', '0.02', '0.83']
সবচেয়ে সেরা দরজা (Best door): 2
Note: আপনার আসলে কোন ধরনটি ব্যবহার করা উচিত? মূলত সুপারভাইজড লার্নিং দিয়েই কাজ শুরু করা সবচেয়ে ভালো — কারণ এটি সবচেয়ে বেশি ব্যবহার করা হয়, এটি বোঝা খুব সহজ এবং এর জন্য অসংখ্য টুলও (tools) রয়েছে। অন্যদিকে আপনার কাছে যখন কোনো লেবেল করা ডেটা থাকে না, তখন নতুন কিছু খুঁজে বের করতে আনসুপারভাইজড লার্নিং দারুণ কাজ করে। আর রিইনফোর্সমেন্ট লার্নিং তখন সবচেয়ে বেশি ভালো কাজ করে যখন আপনাকে সময়ের সাথে সাথে কোনো পরিবেশে ধীরে ধীরে মানিয়ে নিয়ে এজেন্টকে কোনো সঠিক সিদ্ধান্ত নেওয়ার জন্য তৈরি করতে হয়।

ছোট কুইজ

আপনার কাছে ৫০,০০০ ইমেইল রয়েছে, যার প্রতিটিই হয় "স্প্যাম (spam)" বা "নট স্প্যাম (not spam)" হিসেবে লেবেল করা আছে। এখন একটি স্প্যাম ফিল্টার তৈরি করার জন্য আপনি কোন ধরনের ML ব্যবহার করবেন?
Challenge

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

মেশিন লার্নিং (Machine Learning) কী?
কম্পিউটারকে গতানুগতিক বা নির্দিষ্ট কোনো নিয়ম শেখানোর বদলে বিভিন্ন উদাহরণের সাহায্যে শেখানো
ফ্রিচার এবং লেবেল (Features & Labels)
রান্নার আইটেমগুলো হলো ফিচার আর খাবারের নামটি হলো লেবেল — আপনার মডেলকে শেখান যে তার কোন কোন উপাদানের দিকে নজর দিতে হবে এবং এর ওপর ভিত্তি করে কী অনুমান করতে হবে
ট্রেইন-টেস্ট স্প্লিট (Train-Test Split)
বাসার কাজ বা হোমওয়ার্ক দিয়ে প্র্যাকটিস করানো এবং নতুন প্রশ্ন দিয়ে পরীক্ষা নেওয়া — এ কারণেই আপনার ডেটাকে আলাদা করা বা স্প্লিট (split) করা খুবই জরুরি
ওভারফিটিং এবং আন্ডারফিটিং (Overfitting & Underfitting)
গোল্ডিলকস এবং তিনটি মডেল — একটি খুব সাধারণ, একটি অনেক জটিল, আর অন্যটি একদম পারফেক্ট