Function, Derivative, Gradient: 'ঢাল' কী আর কেন model শেখে এটা দিয়ে

gradient descent-এর প্রস্তুতি (Series 04, Episode 03)

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

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

🏔️ ১. গল্প: অন্ধকারে পাহাড় থেকে নামা

Rahim-কে Nila একটা কল্পনা করতে বলল: "তুমি একটা পাহাড়ের গায়ে দাঁড়িয়ে, ঘন কুয়াশা, চারপাশে কিছুই দেখা যাচ্ছে না। তোমাকে সবচেয়ে নিচে (উপত্যকায়) পৌঁছাতে হবে। তুমি কী করবে?"

Rahim ভাবল, তারপর বলল: "পা দিয়ে চারপাশ অনুভব করব — কোন দিকে জমি নিচের দিকে ঢালু, সেদিকে এক পা ফেলব। তারপর আবার অনুভব করব, আবার এক পা। এভাবে নামতে থাকব।"

Nila হাসল: "অভিনন্দন! তুমি এইমাত্র gradient descent আবিষ্কার করলে। 'কোন দিকে ঢালু' — সেটাই derivative বা gradient। আর ছোট ছোট পা ফেলে নিচে নামা — সেটাই model-এর শেখা। ML-এ 'নিচে' মানে 'কম ভুল'।"

এই একটা গল্পই এই পুরো পর্বের সারাংশ। Calculus মানে ভয়ংকর integral না — junior-দের জন্য Calculus মানে এই "ঢাল ধরে নামা"-র intuition।

🎯 ২. আসল সমস্যা: model কীভাবে বুঝবে কোন দিকে যাবে

একটা model শুরুতে random parameter নিয়ে বসে থাকে — মানে শুরুতে খুব ভুল prediction দেয়। এখন প্রশ্ন: parameter-গুলো কোন দিকে, কতটুকু বদলালে ভুল কমবে? এটাই ML-এর কেন্দ্রীয় সমস্যা। উত্তর: প্রতিটা parameter-এর সাপেক্ষে ভুলের (loss-এর) "ঢাল" বের করে সেই ঢালের বিপরীত দিকে একটু সরে যাওয়া। এই "ঢাল" বের করার হাতিয়ারই derivative/gradient।

🔢 ৩. Function কী — input থেকে output

Function হলো একটা মেশিন: input দিলে output দেয়। ML-এ আমাদের সবচেয়ে গুরুত্বপূর্ণ function হলো loss function — এর input হলো model-এর parameter, output হলো "model কতটা ভুল করছে"।

মূল ধারণা: model শেখা মানে loss function-এর সবচেয়ে নিচু বিন্দু (minimum) খুঁজে বের করা — অর্থাৎ যেখানে ভুল সবচেয়ে কম। পাহাড়ের উপত্যকা = কম ভুল।

📉 ৪. Level 1 — derivative মানে "ঢাল" (পাহাড়ের গল্প)

derivative-এর ভয়ংকর সংজ্ঞা ভুলে যান। এক কথায়:

Derivative = কোনো বিন্দুতে function কতটা খাড়া, আর কোন দিকে ঢালু।

• ঢাল ধনাত্মক (positive) → function উপরে উঠছে → ভুল বাড়ছে → উল্টো দিকে যাও।
• ঢাল ঋণাত্মক (negative) → function নিচে নামছে → ভুল কমছে → এই দিকেই যাও।
• ঢাল প্রায় শূন্য → সমতল → হয়তো সবচেয়ে নিচু বিন্দুতে (minimum) পৌঁছে গেছি।

পাহাড় থেকে নামার সময় আপনি ঠিক এই কাজটাই করেন — সবচেয়ে বেশি নিচু-ঢালু দিক খুঁজে সেদিকে পা ফেলেন।

⚙️ ৫. Level 2 — derivative technical ভাবে

Technical ভাবে derivative হলো — input খুব সামান্য বদলালে output কতটা বদলায় তার হার (rate of change)। যেমন speed হলো "সময়ের সাপেক্ষে দূরত্বের derivative"।

একটা সহজ উদাহরণ: f(x) = x²। এর derivative f'(x) = 2x। মানে:

junior-দের জন্য জরুরি অংশ: আপনাকে derivative হাতে বের করা শিখতে হবে না — PyTorch/ TensorFlow স্বয়ংক্রিয়ভাবে (autograd) এটা করে। আপনার লাগবে শুধু এর মানে বোঝা: ঢাল ভুল কমানোর দিক দেখায়।

🧭 ৬. Gradient — একাধিক দিকের ঢাল

বাস্তব model-এ একটা না, হাজার হাজার parameter থাকে। প্রতিটা parameter-এর সাপেক্ষে আলাদা আলাদা ঢাল থাকে। এই সব ঢাল একসাথে একটা vector-এ রাখলে সেটাকে বলে gradient

Gradient = সব দিকের ঢালের vector, যা বলে দেয় loss সবচেয়ে দ্রুত কোন দিকে বাড়ে। তাই আমরা তার বিপরীত দিকে যাই — এজন্যই নাম "gradient descent" (নিচে নামা)।

খেয়াল করুন — এখানে Series 04-এর আগের পর্বের vector ফিরে এল। gradient একটা vector, তাই Linear Algebra ও Calculus এখানে হাত মেলায়।

👷 ৭. Level 3 — কেন model gradient দিয়ে শেখে

একজন AI Engineer-এর চোখে পুরো training loop-টা এমন:

১. random parameter দিয়ে শুরু ২. prediction করো → ভুল (loss) মাপো ৩. gradient বের করো (কোন দিকে loss বাড়ে) ৪. gradient-এর বিপরীত দিকে parameter একটু সরাও ৫. আবার ২ নম্বরে যাও (বহুবার = epoch) ↓ loss ধীরে ধীরে কমে → model শেখে

এটাই প্রায় সব ML/Deep Learning model-এর শেখার মূল কৌশল। Linear Regression থেকে বিশাল LLM পর্যন্ত — সবাই কোনো না কোনো রূপে gradient descent ব্যবহার করে। তাই এই intuition একবার বুঝলে পুরো ML জুড়ে কাজে দেবে।

📊 ৮. Visual: loss পাহাড় ও নামার পথ

loss │ \ / │ \ / │ \ (উঁচু = বেশি ভুল) / │ \ / │ \___ __/ │ \___ ___/ │ \__ ● __/ ← এখানে ঢাল ≈ 0 (minimum, কম ভুল) │ নামার দিকে ছোট ছোট পা └────────────────────────────────────► parameter প্রতিটা "পা" = এক ধাপ gradient descent

model শুরুতে বাঁ বা ডান পাশে উঁচুতে থাকে (বেশি ভুল)। ঢাল ধরে ছোট ছোট পা ফেলে ধীরে ধীরে মাঝের নিচু বিন্দুতে (কম ভুল) নামে।

💻 ৯. Code: হাতে-কলমে ঢাল দেখা

NumPy দিয়ে আমরা f(x) = x²-এর সবচেয়ে নিচু বিন্দু gradient descent দিয়ে খুঁজব — কোনো library-র জাদু ছাড়া, নিজের হাতে। NumPy ব্যবহার করছি কারণ এটা সংখ্যার হিসাবের standard tool।

# লক্ষ্য: f(x) = x^2 -এর minimum খোঁজা (আমরা জানি উত্তর x=0) def f(x): return x ** 2 def gradient(x): # f'(x) = 2x (ঢাল) return 2 * x x = 8.0 # random শুরু learning_rate = 0.1 # পায়ের আকার for step in range(20): g = gradient(x) # এখন ঢাল কত x = x - learning_rate * g # ঢালের বিপরীতে এক পা print(f"step {step:2d}: x={x:.4f} loss={f(x):.4f}")

কী observe করবেন: প্রতি step-এ x ৮ থেকে ধীরে ধীরে ০-র দিকে যাবে, আর loss কমতে থাকবে। এই পুরো "ঢাল বের করে বিপরীতে পা ফেলা" — এটাই gradient descent, যা S04E07-এ আরও বিস্তারিত আসবে।

👣 ১০. Learning rate — কত বড় পা ফেলব

উপরের কোডে learning_rate ঠিক করে আমরা কত বড় পা ফেলব। এটা junior-দের সবচেয়ে বেশি টিউন করা hyperparameter:

খুব ছোট learning rate
পা ছোট → নিরাপদ কিন্তু ধীর। minimum-এ পৌঁছাতে অনেক সময়/epoch লাগে।
খুব বড় learning rate
পা বড় → minimum পেরিয়ে লাফিয়ে যায়, কখনো ঠিকমতো নামেই না (diverge করে)।
Experiment: উপরের কোডে learning_rate = 1.1 দিন — দেখবেন x ছোট হওয়ার বদলে বড় হয়ে যাচ্ছে (diverge)। আবার 0.001 দিন — খুব ধীরে নামবে। এই hands-on অনুভূতিই interview ও কাজে কাজে দেবে।

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

যেকোনো local team-এ যখন আপনি Linear Regression, Logistic Regression বা একটা neural network train করবেন — বলুন Nagad-এ fraud model বা Daraz-এ demand forecast — ভেতরে ঠিক এই gradient descent-ই চলছে। model "শিখছে না" (loss কমছে না) মানে সাধারণত learning rate ভুল, বা data সমস্যা। এই intuition থাকলে আপনি model debug করতে পারবেন; না থাকলে শুধু হতাশ হয়ে বসে থাকবেন।

💼 ১২. Boss Question

💼 Boss Question

Boss: "তুমি বলছ model 'শিখছে'। কিন্তু কীভাবে বুঝব সে শিখছে, নাকি সময় নষ্ট করছে? আর derivative দিয়ে আমার কী?"

উত্তর: খুব সহজ signal — training চলাকালীন loss কমছে কিনা সেটা দেখি। loss কমা মানে model প্রতি ধাপে কম ভুল করছে, মানে শিখছে। loss আটকে গেলে বা বেড়ে গেলে বুঝি learning rate বা data-তে সমস্যা — তখন সময় নষ্ট না করে থামিয়ে ঠিক করি। এই "loss কমছে কিনা" বোঝাটাই derivative/gradient-এর সরাসরি ব্যবহার — এটা না বুঝলে GPU-তে ঘণ্টার পর ঘণ্টা টাকা পুড়িয়েও টের পাবেন না model খারাপ শিখছে।

🔎 ১৩. Job Requirement Decoder

"Understanding of gradient descent and how models are optimized/trained."
প্রশ্নউত্তর
এর মানে কী?model কীভাবে ভুল কমিয়ে শেখে (gradient descent) সেই প্রক্রিয়া বোঝেন।
কোম্পানি কেন চায়?training কাজ না করলে (loss না কমলে) আপনি কারণ ধরে ঠিক করতে পারবেন।
কোন সমস্যা সমাধান করে?model "শিখছে না", diverge করছে, ধীরে শিখছে — এসব diagnose করা।
junior-এর কী জানা লাগে?derivative = ঢাল, gradient = দিক, learning rate-এর প্রভাব, loss কমা = শেখা।
এখনই কী master লাগে না?backprop-এর chain rule হাতে derive, ভিন্ন optimizer-এর গণিত, convergence proof।
GitHub-এ কীভাবে দেখাবেন?একটা from-scratch gradient descent notebook, loss curve plot করে ব্যাখ্যা।
Interview-তে কী জিজ্ঞেস করতে পারে?"gradient descent কীভাবে কাজ করে?", "learning rate বড় হলে কী হয়?", "loss না কমলে কী দেখবেন?"

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

ভুল ১: "gradient descent শেখার আগে সব Calculus শিখতে হবে।" → ঠিক: derivative = ঢাল, এই intuition-ই junior-দের জন্য যথেষ্ট।

ভুল ২: "বড় learning rate = দ্রুত শেখা, তাই ভালো।" → ঠিক: খুব বড় হলে minimum পেরিয়ে diverge করে; balance দরকার।

ভুল ৩: "gradient আর derivative দুটো আলাদা জিনিস।" → ঠিক: gradient হলো একাধিক variable-এর derivative-এর vector; একই ধারণার সম্প্রসারণ।

ভুল ৪: "training মানেই loss সবসময় কমবে।" → ঠিক: ঠিক না হলে loss ওঠানামা করতে পারে বা বাড়তে পারে — সেটাই সমস্যার signal।

🎤 ১৫. Interview Prep

প্রশ্ন ১: gradient কী?
উত্তর: loss সবচেয়ে দ্রুত কোন দিকে বাড়ে তার ঢালের vector; আমরা তার বিপরীতে গিয়ে loss কমাই।

প্রশ্ন ২: derivative শূন্য হলে কী বোঝায়?
উত্তর: সমতল বিন্দু — সম্ভাব্য minimum (বা maximum/saddle); loss আর কমছে না।

প্রশ্ন ৩: learning rate খুব বড় দিলে কী হয়?
উত্তর: parameter minimum পেরিয়ে লাফায়, loss কমার বদলে বাড়ে/diverge করে।

প্রশ্ন ৪: ML-এ Calculus কোথায় লাগে?
উত্তর: loss কমানোর দিক (gradient) বের করতে; এটাই সব gradient-based training-এর ভিত্তি।

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

১. উপরের gradient descent কোডটা চালান, তারপর learning_rate পরিবর্তন করুন: 0.01, 0.5, 1.1 — প্রতিটায় x-এর আচরণ লিখে রাখুন।
২. f(x)=x²-এর জায়গায় f(x)=(x-4)²gradient=2*(x-4) বসিয়ে দেখুন এবার minimum কোথায় যায় — কেন?
৩. এক লাইনে লিখুন: "ঢাল ধরে নামা" আর "model শেখা" কীভাবে একই জিনিস?

🚀 ১৭. Project Connection

Series 05-এ আমাদের flagship "Bangladesh Tech Career Assistant" যখন একটা ML model (V3) হবে — বলুন job description থেকে salary-band predict — সেই model ভেতরে ঠিক আজকের gradient descent দিয়েই শিখবে। যখন আমরা training-এর loss curve দেখব, তখন আজকের "loss কমছে কিনা" intuition-ই বলে দেবে model ঠিক শিখছে কিনা। মানে আজকের পাহাড়-থেকে-নামার গল্প V3-এর training-এ সরাসরি কাজে লাগবে।

📌 ১৮. সারসংক্ষেপ ও পরবর্তী পর্ব

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

✓ function হলো input→output মেশিন; ML-এ সবচেয়ে গুরুত্বপূর্ণ function = loss
✓ derivative = কোনো বিন্দুতে function-এর "ঢাল" ও দিক
✓ gradient = সব parameter-এর ঢালের vector, loss সবচেয়ে দ্রুত কোন দিকে বাড়ে
✓ gradient descent = ঢালের বিপরীতে ছোট ছোট পা ফেলে loss কমানো = model-এর শেখা
✓ learning rate পায়ের আকার — খুব বড়/ছোট দুটোই সমস্যা
✓ junior-দের derivative হাতে করা লাগে না; autograd করে, intuition-টা লাগে
পরবর্তী Episode (S04E04): "Statistics Basics: mean, median, variance, std — data-র চরিত্র"। এবার তৃতীয় স্তম্ভ Statistics — যেটা junior-রা প্রতিদিন সবচেয়ে বেশি ব্যবহার করে। data-কে সংখ্যায় বর্ণনা করা, outlier চেনা, আর কেন mean সবসময় সত্য বলে না — সব শিখব।
© 2025 Sheikh Thanbir Alam. All Rights Reserved. thanbirtamim.github.io
এই লেখা মূল লেখকের সম্পত্তি — লিখিত অনুমতি ছাড়া কপি করে অন্য কোনো ওয়েবসাইট, ব্লগ, বই বা প্ল্যাটফর্মে প্রকাশ/বিতরণ করা কঠোরভাবে নিষিদ্ধ। Content may not be copied or republished without permission.