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

মেশিন লার্নিং (Machine Learning) কী?

কম্পিউটারকে গতানুগতিক বা নির্দিষ্ট কোনো নিয়ম শেখানোর বদলে বিভিন্ন উদাহরণের সাহায্যে শেখানো
rule-based approach:ব্রিটল (Brittle) · নতুন কোনো ধরনের কিছু দেখলে এর নিয়ম ভেঙে যায়ML approach:ফ্লেক্সিবল (Flexible) · যত বেশি ডেটা দেওয়া হয়, তত বেশি শিখতে পারেtraining time:শুরুতে ধীরগতির বা স্লো (Slow) · কিন্তু পরে প্রেডিকশন (prediction) করার সময় বেশ ফাস্ট বা দ্রুত কাজ করে

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

মূলত মেশিন লার্নিং (machine learning)-এর পেছনের আইডিয়াটিও ঠিক এরকমই। হাজার হাজার if-else বা শর্তের নিয়ম লিখে দেওয়ার বদলে, আপনি কেবল কম্পিউটারকে ডেটা বা তথ্য দেবেন এবং তাকে একা একা এর পেছনের রহস্য বা প্যাটার্নটি (pattern) খুঁজে নিতে দেবেন।

পুরোনো বা গতানুগতিক উপায়: কেবল রুলস আর রুলস (rules)

ট্রেডিশনাল বা গতানুগতিক প্রোগ্রামিং মূলত একটি রেসিপি বইয়ের মতো কাজ করে। এখানে একজন প্রোগ্রামার নিজের হাতে প্রতিটি নিয়ম লিখে দেন:

  • যদি ইমেইলে "free money" লেখা থাকে → তবে স্প্যাম (spam)
  • যদি ইমেইলটি আপনার কোনো পরিচিত ব্যক্তি বা কন্টাক্ট (contact) থেকে আসে → তবে স্প্যাম নয়
  • যদি ইমেইলটিতে ৫টির বেশি বিস্ময়সূচক (!) চিহ্ন থাকে → তবে স্প্যাম

এগুলো খুব ভালোভাবেই কাজ করে... কিন্তু স্প্যামাররা যতক্ষণ না পর্যন্ত আরও চতুর হচ্ছে। যখন স্প্যামাররা "free money"-এর বদলে "fr33 m0ney" লেখা শুরু করবে আপনার সমস্ত নিয়ম বা রুলস ভেঙে পড়বে। এরপর আপনি একটি নিয়ম বদলালে, তারা আবার নতুন কোনো উপায় খুঁজে বের করবে। আর এভাবে এটি চলতেই থাকবে যা কখনোই শেষ হবে না।

মেশিন লার্নিং (ML) এর উপায়: উদাহরণ থেকে শেখা

মেশিন লার্নিংয়ের ক্ষেত্রে, আপনাকে সম্পূর্ণ ভিন্ন একটি এপ্রোচ বা কৌশল নিতে হয়। আপনি হাজার হাজার এমন সব ইমেইল জোগাড় করেন যেগুলোকে মানুষ আগে থেকেই "স্প্যাম (spam)" বা "নট স্প্যাম (not spam)" হিসেবে লেবেল করে দিয়েছে। এরপর আপনি সেগুলোকে কম্পিউটারের কাছে দিয়ে বলেন: "এই নাও উদাহরণ, এখন এর ভেতরের প্যাটার্নগুলো তুমি নিজে নিজেই খুঁজে নাও।"

এরপর কম্পিউটার সমস্ত ডেটা বা তথ্য ঘাঁটতে শুরু করে এবং এমন সব সূক্ষ্ম প্যাটার্ন খুঁজে বের করে যার কথা আপনি হয়তো কোনো দিন চিন্তাও করেননি — যেমন: নির্দিষ্ট কিছু শব্দের সমন্বয় বা কম্বিনেশন, সময়, প্রেরকের বা সেন্ডারের (sender) দেশ এবং আরও এমন অসংখ্য ছোট ছোট ইঙ্গিত। আর স্প্যামাররা যখন এদের কৌশল বদলাবে? তখন আপনি শুধু আপনার মডেলটিকে নতুন কিছু উদাহরণ বা ডেটা দেবেন আর সে আবার নতুন করে সবকিছু শিখে নেবে।

আপনার প্রথম এমএল মডেল (Your First ML Model)

from sklearn.tree import DecisionTreeClassifier
# ট্রেইনিং ডেটা: [লেখাপড়ার_সময় (hours_studied), ঘুমের_সময় (hours_slept)]
# লেবেল (Labels): 0 = ফেল (fail), 1 = পাস (pass)
X = [[1, 4], [2, 5], [6, 8], [7, 7], [8, 9], [3, 3]]
y = [0, 0, 1, 1, 1, 0]
# মডেল তৈরি এবং ট্রেন করা
model = DecisionTreeClassifier()
model.fit(X, y)
# প্রেডিক্ট বা অনুমান করা: যে শিক্ষার্থী ৫ ঘণ্টা লেখাপড়া করেছে এবং ৭ ঘণ্টা ঘুমিয়েছে
print(model.predict([[5, 7]])) # [1] = পাস!
print(model.predict([[1, 3]])) # [0] = ফেল
Output
[1]
[0]

কম্পিউটার আসলে কীভাবে "শিখতে" পারে?

এটিকে একটি গিটার টিউন (tune) বা সুর মেলানোর মতো মনে করতে পারেন। একেবারে শুরুতে এর তারগুলো ঠিকমতো বাঁধা থাকে না বা বেসুরো থাকে — অর্থাৎ মডেলের প্রেডিকশনগুলোও (predictions) তখন অনেক ভুল বা জঘন্য হয়। কিন্তু প্রতিটি উদাহরণ দেখার পর, মডেলটি তার ভেতরের সেটিংসগুলোকে সামান্য একটু অ্যাডজাস্ট (adjust) বা পরিবর্তন করে যাতে এর ভুলগুলো কমে আসে। এভাবে প্রতিটি উদাহরণের পর একবার করে অ্যাডজাস্ট করতে করতে একসময় এর প্রেডিকশনগুলো অনেক নিখুঁত হয়ে ওঠে।

এই পুরো প্রক্রিয়াটিকেই ট্রেইনিং (training) বলা হয়। আর ভেতরের যে সেটিংসগুলোকে অ্যাডজাস্ট করা হয় সেগুলোকে প্যারামিটার্স (parameters) বা ওয়েটস (weights) বলা হয়। এবং প্রেডিকশনগুলো কতটা ভুল তা যে হিসেবে মাপা হয় তাকে লস (loss) বলা হয়।

ট্রেইনিংয়ের একমাত্র এবং সবচেয়ে বড় লক্ষ্য হলো: এই লস (loss) যতটা সম্ভব কমিয়ে আনা

বড় দৃষ্টিকোণ থেকে এর কাজ বা পুরো বিষয় (The big picture)

  1. ডেটা সংগ্রহ করা (Collect data) — সঠিক উত্তর বা ফলাফল জানা আছে এমন সব উদাহরণ জোগাড় করা
  2. মডেলকে ট্রেন বা প্রশিক্ষণ দেওয়া (Train a model) — অ্যালগরিদমটিকে একা একাই এর ভেতরের প্যাটার্ন বা নিয়মগুলো খুঁজে নিতে সাহায্য করা
  3. ইভ্যালুয়েট বা মূল্যায়ন করা (Evaluate) — মডেলটি আগে কখনো দেখেনি এমন সব ডেটা ব্যবহার করে সেটিকে পরীক্ষা করে দেখা
  4. প্রেডিক্ট বা অনুমান করা (Predict) — এরপর সত্যিকারের যেকোনো কাজে বা নতুন ডেটার ওপর ট্রেইন করা মডেলটি ব্যবহার করে তার ফলাফল বের করা

Key Metrics

📏 রুল-বেসড সিস্টেম (Rule-Based System)
পৃথিবীর নিয়মগুলো বদলালে এটি আর কাজ করে না
নিজ হাতে কাজ করা প্রতিটি নিয়ম নিজের হাতে লিখতে হয়
🤖 এমএল মডেল (ML Model)
নতুন উদাহরণ বা ডেটা দিলে এটি আবার তা শিখে নিতে পারে
ট্রেইনিংয়ের সময় (Training time) ডেটা থেকেই নিজের নিয়ম একা একা শিখে নেয়
🧠 প্রেডিকশনের গতি বা স্পিড (Prediction Speed)
এর ট্রেইনিং অনেক ধীরগতির হলেও এর প্রেডিকশন বা অনুমানের ক্ষমতা ভীষণ দ্রুত
ফাস্ট (Fast) প্রতিটি অনুমানের জন্য কেবল কয়েক মিলিসেকেন্ড লাগে
📊 ডেটার প্রয়োজনীয়তা (Data Requirement)
গার্বেজ ইন, গার্বেজ আউট (Garbage in, garbage out) বা খারাপ ডেটার আউটপুটও সবসময় খারাপ হয়
মাঝারি থেকে খুব বেশি (Moderate to High) যত বেশি ডেটা থাকবে = তত ভালো একটি মডেল তৈরি হবে
Note: মেশিন লার্নিং আসলে কোনো জাদুর বাক্স নয় — এটি শুধুমাত্র একটি বড় আকারের প্যাটার্ন মেলানোর মেশিন। কোনো কম্পিউটার আসলে নিজে থেকে সরাসরি বিড়াল বা কুকুরকে "বুঝতে" পারে না। এটি কেবল এটুকুই বোঝে যে, পিক্সেলের (pixel) একটি নির্দিষ্ট প্যাটার্নের মানেই হলো এটি একটি "বিড়াল"। ডেটা না থাকলে, এটি কিছুই শিখতে পারবে না। আবার ভুল বা খারাপ ডেটা দিলে এটি ভুল বা খারাপ জিনিসই শিখবে।

ছোট কুইজ

ট্রেডিশনাল বা গতানুগতিক প্রোগ্রামিং এবং মেশিন লার্নিংয়ের মধ্যে মূল পার্থক্য কী?
Challenge

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

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