Machine Learning কীভাবে ভুল থেকে শেখে? Gradient Descent-এর সহজ গল্প

loss, gradient descent আর bias-variance (Series 04, Episode 07)

🟡 INTERMEDIATE Series 04 — Math, Statistics ও Probability Episode 07 / 07

📑 এই পর্বে যা যা আছে

🏹 ১. গল্প: তীর ছোড়া শেখা

Rahim প্রথমবার তীর-ধনুক হাতে নিল। প্রথম তীর target-এর অনেক ডানে গেল। সে একটু বাঁয়ে তাক করে আবার ছুড়ল — এবার একটু কম ডানে। আবার সমন্বয় করল, আবার ছুড়ল। কয়েকবার পর তীর প্রায় কেন্দ্রে।

Maya (senior AI Engineer) পাশে দাঁড়িয়ে বলল: "তুমি এইমাত্র একটা model-কে train করলে — নিজেকেই! প্রতিবার তুমি দেখলে কতটা ভুল হলো (সেটাই loss), কোন দিকে ভুল (সেটাই gradient), আর একটু সমন্বয় করলে (parameter update)। এটাই gradient descent। আর খেয়াল করো — খুব বেশি সমন্বয় করলে (overcorrect) উল্টো দিকে চলে যেতে; এটাই overfitting-এর ইঙ্গিত।"

এটাই Series 04-এর চূড়ান্ত পর্ব। আজকে আমরা আগের চারটা স্তম্ভ — vector, gradient, statistics, probability — একসাথে জুড়ে ML-এর সবচেয়ে গুরুত্বপূর্ণ ধারণাটা বুঝব: model কীভাবে ভুল থেকে শেখে, আর কোথায় থামতে হয়।

🎯 ২. আসল সমস্যা: "ভুল" মাপব কীভাবে

S04E03-এ আমরা "ঢাল ধরে নামা" শিখেছি, কিন্তু একটা প্রশ্ন বাকি ছিল — model কীসের ঢাল ধরে নামে? উত্তর: ভুলের (loss-এর) ঢাল। কিন্তু "ভুল" তো একটা অস্পষ্ট শব্দ। computer-কে ভুল কমাতে বললে আগে তাকে একটা সংখ্যায় "ভুল" মাপতে দিতে হবে। সেই সংখ্যাই loss।

📏 ৩. Loss function — ভুলের একটা সংখ্যা

Loss function হলো এমন একটা function যা model-এর prediction আর আসল উত্তরের মধ্যে পার্থক্যকে একটা সংখ্যায় প্রকাশ করে। কম loss = কম ভুল = ভালো model।

সমস্যার ধরনপ্রচলিত lossintuition
Regression (সংখ্যা predict)MSE (Mean Squared Error)ভুলের বর্গের গড় — বড় ভুলকে বেশি শাস্তি
Classification (শ্রেণি predict)Cross-Entropyভুল probability-কে শাস্তি — কতটা "আত্মবিশ্বাসী ভুল"
খেয়াল করুন: loss হলো সেই "পাহাড়" (S04E03) যার নিচে model নামতে চায়। MSE-তে Statistics (গড়, বর্গ) আছে; Cross-Entropy-তে Probability (log-probability) আছে — মানে আগের পর্বগুলো এখানে জড়ো হচ্ছে।

🌡️ ৪. Level 1 — গরম-ঠান্ডা খেলা (feedback)

ছোটবেলার "গরম-ঠান্ডা" খেলা মনে আছে? লুকানো জিনিস খুঁজতে বন্ধু বলে "গরম হচ্ছে" (কাছে) বা "ঠান্ডা হচ্ছে" (দূরে)। আপনি সেই feedback ধরে এগোন।

model-এর training ঠিক তাই:
loss = "তুমি কতটা ঠান্ডা/দূরে" (ভুলের পরিমাণ)।
gradient = "কোন দিকে গেলে গরম হবে" (ভুল কমার দিক)।
parameter update = সেই দিকে এক পা এগোনো।
epoch = পুরো data দেখে বারবার এই feedback নেওয়া।

⚙️ ৫. Level 2 — gradient descent পুরো ছবিতে

এবার S04E03-এর loop-টা loss সহ সম্পূর্ণ করি:

১. parameter (weight) random ভাবে শুরু │ ▼ ২. prediction করো → loss মাপো (কত ভুল, এক সংখ্যায়) │ ▼ ৩. gradient বের করো: প্রতিটা weight সাপেক্ষে loss-এর ঢাল │ ▼ ৪. weight = weight − learning_rate × gradient │ ▼ ৫. loss কমেছে? না হলে ২-এ ফিরে যাও (আরেক epoch) │ ▼ loss ন্যূনতমের কাছে → model শিখে গেছে

এই একটা loop — নাম gradient descent — Linear Regression থেকে বিশাল neural network পর্যন্ত সবখানে। Series 06-এ PyTorch-এ আপনি ঠিক এই loop হাতে লিখবেন; আজকে intuition-টা পাকা করছি।

🧩 ৬. চার স্তম্ভ একসাথে আসছে

এই মুহূর্তে Series 04-এর সবকিছু একসাথে জোড়া লাগে — এটাই এই পর্বের সৌন্দর্য:

মানে — আপনি বিচ্ছিন্ন চারটা math topic শেখেননি; আপনি আসলে একটা machine-এর চারটা যন্ত্রাংশ শিখেছেন, যা এখন একসাথে ঘুরছে।

💻 ৭. Code: scratch থেকে Linear Regression শেখা

কোনো ML library ছাড়া, শুধু NumPy দিয়ে আমরা একটা Linear Regression গড়ে তুলব gradient descent দিয়ে — যাতে "শেখা" জিনিসটা চোখে দেখা যায়। NumPy কারণ এটাই সংখ্যার হিসাবের ভিত্তি।

import numpy as np # data: y ≈ 3x + 2 (model-কে এটা নিজে বের করতে হবে) X = np.array([1, 2, 3, 4, 5], dtype=float) y = np.array([5, 8, 11, 14, 17], dtype=float) w, b = 0.0, 0.0 # parameter (random শুরু) lr = 0.01 # learning rate n = len(X) for epoch in range(1000): y_pred = w * X + b # prediction (vector) error = y_pred - y # ভুল loss = np.mean(error ** 2) # MSE (Statistics!) grad_w = (2 / n) * np.sum(error * X) # w সাপেক্ষে ঢাল grad_b = (2 / n) * np.sum(error) # b সাপেক্ষে ঢাল w -= lr * grad_w # gradient descent step b -= lr * grad_b if epoch % 200 == 0: print(f"epoch {epoch:4d} loss={loss:.4f} w={w:.3f} b={b:.3f}") print(f"শেখা: y = {w:.2f}x + {b:.2f} (আসল: y = 3x + 2)")

কী observe করবেন: শুরুতে w,b = 0, loss বড়। প্রতি epoch-এ loss কমে, w ৩-এর দিকে আর b ২-এর দিকে যায়। কেউ w,b বলে দেয়নি — model gradient descent দিয়ে নিজে শিখল। এটাই ML-এর মূল জাদু, আর এখানে কোনো জাদু নেই — শুধু ঢাল ধরে নামা।

⚖️ ৮. Bias-Variance: under বনাম overfitting

model শিখল, ভালো কথা। কিন্তু "কতটা শিখবে" — এখানেই সবচেয়ে সূক্ষ্ম সিদ্ধান্ত। দুটো বিপদ:

High Bias → Underfitting
model খুব সরল, data-র pattern-ই ধরতে পারেনি। training-এও ভুল বেশি। যেমন বাঁকা data-তে সরলরেখা ফিট করা। "কম পড়া ছাত্র"।
High Variance → Overfitting
model এত বেশি শিখেছে যে training data মুখস্থ করে ফেলেছে, noise-ও ধরেছে। training-এ দারুণ, নতুন data-তে খারাপ। "মুখস্থ করা ছাত্র, নতুন প্রশ্নে ফেল"।
Bias-Variance trade-off: খুব সরল করলে bias বাড়ে (underfit), খুব জটিল করলে variance বাড়ে (overfit)। লক্ষ্য — মাঝের সেই বিন্দু যেখানে নতুন (unseen) data-তে total error সবচেয়ে কম। এটাই ভালো model-এর সংজ্ঞা।

🎯 ৯. Visual: bias-variance target

Low Bias, Low Variance High Bias (underfit) High Variance (overfit) (আদর্শ) ┌───────┐ ┌───────┐ ┌───────┐ │ ◎●● │ │◎ │ │ ● ◎ ●│ │ ●●● │ │ ● ● │ │● ● │ │ │ │ ● ● │ │ ● ● │ └───────┘ └───────┘ └───────┘ তীর কেন্দ্রে ও জমাট সব একদিকে (ভুল জায়গায়) ছড়ানো, এলোমেলো ◎ = target কেন্দ্র, ● = model-এর prediction

আদর্শ model-এর তীর কেন্দ্রে (low bias) এবং জমাট (low variance)। underfit — সব ভুল একদিকে; overfit — এলোমেলো ছড়ানো।

👷 ১০. Level 3 — engineer কীভাবে এই trade-off সামলায়

একজন AI Engineer overfitting/underfitting ধরতে ও সামলাতে যা করে (Series 05-এ বিস্তারিত):

গুরুত্বপূর্ণ distinction (accuracy vs generalization): training data-তে ৯৯% accuracy মানে ভালো model নয় — সেটা মুখস্থও হতে পারে। আসল প্রশ্ন সবসময়: নতুন, না-দেখা data-তে কেমন করে। তাই আমরা data-কে train/validation/test-এ ভাগ করি — যা Series 05-এর মূল থিম।

🇧🇩 ১১. বাংলাদেশের context

একটা local team যদি churn model বানায় আর দেখায় "training accuracy ৯৮%!" — অভিজ্ঞ engineer সাথে সাথে সন্দেহ করবে overfitting। বাস্তবে নতুন customer-এ হয়তো ৭০%। তাই bKash/Daraz-এর মতো জায়গায় model deploy করার আগে সবসময় held-out/validation data-তে যাচাই করা হয়। এই bias-variance intuition junior-দের প্রথম দিন থেকেই দরকার — নইলে "কাগজে ভালো, বাস্তবে খারাপ" model production-এ চলে যায়।

💼 ১২. Boss Question

💼 Boss Question

Boss: "তোমার model তো training-এ ৯৭% accurate দেখাচ্ছে! তাহলে সোজা production-এ দিয়ে দাও, দেরি কেন?"

উত্তর: এই ৯৭% training data-র উপর — model হয়তো এই নির্দিষ্ট data মুখস্থ করে ফেলেছে (overfitting)। বাস্তবে নতুন customer আসবে যাদের model আগে দেখেনি। তাই আমি আলাদা রাখা validation/test data-তে যাচাই করব — সেখানে যদি ৯৭%-এর কাছাকাছি থাকে, তবেই বিশ্বাসযোগ্য। নইলে production-এ গিয়ে model ভুল prediction দেবে, আর আমরা টাকা/বিশ্বাস দুটোই হারাব। এক দিন বেশি যাচাই করা মানে মাসের পর মাসের ভুল সিদ্ধান্ত থেকে বাঁচা — এটাই business value.

🔎 ১৩. Job Requirement Decoder

"Strong grasp of loss functions, gradient descent, and the bias-variance trade-off."
প্রশ্নউত্তর
এর মানে কী?model কীভাবে ভুল মাপে (loss), কীভাবে শেখে (gradient descent), আর কোথায় থামতে হয় (bias-variance)।
কোম্পানি কেন চায়?এটাই ML-এর কেন্দ্র; না বুঝলে model debug/improve করা যায় না।
কোন সমস্যা সমাধান করে?overfitting/underfitting ধরা, training না-শেখা diagnose করা।
junior-এর কী জানা লাগে?loss = ভুলের সংখ্যা, gradient descent-এর loop, overfit vs underfit, train/val/test-এর দরকার।
এখনই কী master লাগে না?প্রতিটা optimizer-এর গণিত, custom loss derive, regularization-এর গভীর তত্ত্ব।
GitHub-এ কীভাবে দেখাবেন?from-scratch gradient descent notebook + একটা project যেখানে train/val loss curve দিয়ে overfitting দেখান।
Interview-তে কী জিজ্ঞেস করতে পারে?"gradient descent + loss কীভাবে জড়িত?", "overfitting কী ও কীভাবে ঠেকাবেন?", "bias-variance trade-off বোঝান"।

⚠️ ১৪. সাধারণ ভুল ধারণা

ভুল ১: "high training accuracy = ভালো model।" → ঠিক: validation/test-এ ভালো হলে তবেই; নইলে হয়তো overfitting।

ভুল ২: "loss আর accuracy একই জিনিস।" → ঠিক: loss হলো training-এ কমানোর objective; accuracy হলো একটা evaluation metric।

ভুল ৩: "বেশি জটিল model সবসময় ভালো।" → ঠিক: বেশি জটিল = high variance = overfit-এর ঝুঁকি।

ভুল ৪: "loss ০ হওয়াই লক্ষ্য।" → ঠিক: training loss ০ প্রায়ই overfitting-এর লক্ষণ; লক্ষ্য unseen data-তে কম error।

🎤 ১৫. Interview Prep

প্রশ্ন ১: loss function কী?
উত্তর: model-এর ভুলকে একটা সংখ্যায় প্রকাশ; training-এ এটাই gradient descent দিয়ে কমানো হয়।

প্রশ্ন ২: bias-variance trade-off বোঝান।
উত্তর: সরল model = high bias (underfit); জটিল model = high variance (overfit); লক্ষ্য মাঝের balance যেখানে unseen error কম।

প্রশ্ন ৩: overfitting কীভাবে ধরবেন ও ঠেকাবেন?
উত্তর: training ভালো কিন্তু validation খারাপ = overfit; সমাধান: বেশি data, regularization, সরল model, early stopping, CV।

প্রশ্ন ৪: gradient descent-এ learning rate-এর ভূমিকা?
উত্তর: প্রতি step-এ কতটা সরব; বড় হলে diverge, ছোট হলে ধীর — balance দরকার।

✍️ ১৬. হাতে-কলমে (Mini Exercise)

১. উপরের scratch Linear Regression-এ lr বদলে 0.0010.3 দিন — loss কীভাবে বদলায়, diverge করে কিনা লক্ষ্য করুন।
২. y-তে একটা outlier যোগ করুন (যেমন শেষ মান ১৭ → ৫০) — শেখা w,b কতটা টলল? MSE কেন outlier-এ sensitive ভাবুন।
৩. এক লাইনে করে লিখুন underfitting ও overfitting-এর সংজ্ঞা, নিজের ভাষায়।

🚀 ১৭. Project Connection

আমাদের flagship "Bangladesh Tech Career Assistant" Series 05-এ V3 (ML model) হবে। তখন আমরা scikit-learn দিয়ে model train করব — কিন্তু ভেতরে ঠিক আজকের loss + gradient descent চলবে। আর deploy করার আগে train/validation দিয়ে overfitting যাচাই করব, ঠিক আজকের bias-variance পাঠ ধরে। মানে Series 04 এখানে শেষ হলেও, এর প্রতিটা ধারণা V3 থেকে V10 পর্যন্ত ফিরে ফিরে আসবে।

📌 ১৮. সারসংক্ষেপ ও Series 04 সমাপ্তি

এই পর্বে আমরা শিখলাম:

✓ loss function = model-এর ভুলের একটা সংখ্যা (MSE regression-এ, cross-entropy classification-এ)
✓ gradient descent-এর সম্পূর্ণ loop: predict → loss → gradient → update → repeat
✓ scratch থেকে NumPy দিয়ে model "নিজে শিখল" — কোনো জাদু নয়, ঢাল ধরে নামা
✓ bias-variance: underfit (high bias) বনাম overfit (high variance); লক্ষ্য unseen data-তে কম error
✓ high training accuracy ≠ ভালো model; train/val/test আলাদা করা জরুরি
✓ Series 04-এর চার স্তম্ভ (vector, gradient, statistics, probability) এখানে একসাথে কাজ করে
🎓 Series 04 শেষ! আপনি এখন ML-এর জন্য প্রয়োজনীয় গণিতের intuition অর্জন করেছেন — heavy proof ছাড়াই। মনে রাখবেন: এই গণিত "চশমা", "কলম" নয় — model বোঝার জন্য, না derive করার জন্য। এটাই junior AI Engineer-এর জন্য যথেষ্ট।
পরবর্তী Series (Series 05): "Classical Machine Learning"। এবার তত্ত্ব থেকে বাস্তবে — scikit-learn দিয়ে সত্যিকারের model বানানো, evaluate করা, আর একটা project raw data থেকে API পর্যন্ত নিয়ে যাওয়া। আজকের loss ও bias-variance সেখানে প্রতিটা পদক্ষেপে কাজে লাগবে।
© 2025 Sheikh Thanbir Alam. All Rights Reserved. thanbirtamim.github.io
এই লেখা মূল লেখকের সম্পত্তি — লিখিত অনুমতি ছাড়া কপি করে অন্য কোনো ওয়েবসাইট, ব্লগ, বই বা প্ল্যাটফর্মে প্রকাশ/বিতরণ করা কঠোরভাবে নিষিদ্ধ। Content may not be copied or republished without permission.