গ্রেডিয়েন্ট ডিসেন্ট — পাহাড় থেকে নিচে
এই পাঠে যা শিখবেন
- Gradient Descent অ্যালগরিদম — তিনটি ধাপে
- Learning rate ($\eta$) কী, কেন এত গুরুত্বপূর্ণ
- একটি বাস্তব মডেল প্রশিক্ষণ — শূন্য থেকে কোডে
- "কোথায় থামব" — convergence-এর ধারণা
১ · মূল ধারণাটি দু'লাইনে
১) যেখানে আছেন সেখানের গ্রেডিয়েন্ট হিসাব করুন।
২) তার বিপরীত দিকে একটি ছোট ধাপ যান।
৩) পুনরাবৃত্তি — যতক্ষণ না গ্রেডিয়েন্ট প্রায় শূন্য (অর্থাৎ আপনি সর্বনিম্নে)।
গণিতের ভাষায় — প্রতিটি ধাপে ওজন (weight) আপডেট হয়:
$$w \;\leftarrow\; w \;-\; \eta \, \nabla L(w)$$
- $w$ — যা শিখতে চাই (model parameters)
- $L(w)$ — loss functionLoss Functionমডেলের prediction সঠিক উত্তর থেকে কত দূরে — তা মাপার ফাংশন। training-এ এই loss কমানোই লক্ষ্য।: মডেল কতটা ভুল
- $\nabla L(w)$ — গ্রেডিয়েন্ট: $w$-এর সাপেক্ষে $L$ কত দ্রুত বদলায়
- $\eta$ — learning rateLearning Rate (η)প্রতিটি weight update-এ ধাপের আকার। সবচেয়ে গুরুত্বপূর্ণ hyperparameter. সাধারণ DL-এ ১০⁻⁴ থেকে ১০⁻¹। GPT/LLM-এ ১০⁻⁵ scale-এ। বড় = diverge ঝুঁকি; ছোট = ধীর। Modern practice: warmup + cosine decay schedule.: ধাপের আকার (সাধারণত ছোট সংখ্যা যেমন $0.01$)
২ · একটি সরল উদাহরণ — হাতে চালানো
$L(w) = w^2$ — একটি সরল প্যারাবোলা। সর্বনিম্ন স্পষ্ট: $w = 0$, $L = 0$।
ডেরিভেটিভ: $L'(w) = 2w$।
শুরু করি $w = 5$ থেকে, learning rate $\eta = 0.1$:
- ধাপ ০: $w = 5$, $L = 25$, $\nabla L = 10$ → $w \leftarrow 5 - 0.1 \cdot 10 = 4$
- ধাপ ১: $w = 4$, $L = 16$, $\nabla L = 8$ → $w \leftarrow 4 - 0.8 = 3.2$
- ধাপ ২: $w = 3.2$, $L = 10.24$, $\nabla L = 6.4$ → $w \leftarrow 3.2 - 0.64 = 2.56$
- ...
- ধাপ ১০: $w \approx 0.54$, $L \approx 0.29$ — শূন্যের কাছাকাছি!
প্রতিটি ধাপে $w$ ছোট হচ্ছে — সর্বনিম্নের দিকে এগোচ্ছে। ঠিক যা আমরা চেয়েছি।
৩ · Python-এ Gradient Descent
# L(w) = w^2 কে minimize করি
def L(w):
return w ** 2
def grad_L(w):
return 2 * w
# শুরু
w = 5.0
eta = 0.1 # learning rate
for step in range(15):
g = grad_L(w)
w = w - eta * g
print(f"ধাপ {step+1:2d}: w = {w:7.4f}, L = {L(w):8.4f}")
৪ · Learning Rate — সবচেয়ে গুরুত্বপূর্ণ hyperparameter
$\eta$ বদলিয়ে দেখুন কী হয় —
- খুব ছোট ($\eta = 0.001$): ধাপ এত ছোট, ১৫ বার পরেও $w \approx 4.7$। অনেক ধাপ লাগবে।
- সঠিক ($\eta = 0.1$): দ্রুত নিচে নামছে। ১৫ ধাপে প্রায় ০।
- বড় ($\eta = 0.9$): এক ধাপে এত দূরে যায় যে অন্য পাশে চলে যায়। ফলাফল দোলাচ্ছে।
- খুব বড় ($\eta = 1.1$): প্রতিটি ধাপে আরও দূরে — diverge করে যাচ্ছে। ভয়াবহ!
def L(w):
return w ** 2
def grad_L(w):
return 2 * w
for eta in [0.001, 0.1, 0.9, 1.1]:
w = 5.0
for _ in range(10):
w = w - eta * grad_L(w)
print(f"η = {eta:5.3f} → ১০ ধাপ পরে w = {w:12.4f}")
৫ · একটি বাস্তব AI উদাহরণ — Linear Regression
বাড়ির আকার ($x$) থেকে দাম ($y$) অনুমান। মডেল: $\hat{y} = w \cdot x$। loss: $L(w) = \frac{1}{n}\sum_i (y_i - w x_i)^2$।
import numpy as np
# কৃত্রিম ডেটা — সত্য সম্পর্ক y = 3x
x = np.array([1, 2, 3, 4, 5], dtype=float)
y = np.array([3, 6, 9, 12, 15], dtype=float)
# w 0 থেকে শুরু — দেখি GD এটি 3-এ পৌঁছাতে পারে কি না
w = 0.0
eta = 0.02
for step in range(30):
y_hat = w * x
error = y_hat - y
grad = 2 * np.mean(error * x) # Loss-এর ডেরিভেটিভ
w = w - eta * grad
if step % 5 == 0 or step == 29:
loss = np.mean(error ** 2)
print(f"ধাপ {step:2d}: w = {w:.4f}, loss = {loss:.4f}")
print(f"\nচূড়ান্ত w = {w:.4f} (সত্য মান: 3.0)")
৬ · কোথায় থামব? — ConvergenceConvergencetraining-এ যখন loss আর উল্লেখযোগ্য কমে না — মডেল optimal বা local minimum-এ পৌঁছেছে। তখন training থামানোর সময়।
তিনটি সাধারণ থামার কৌশল —
- নির্দিষ্ট সংখ্যা ধাপ: "১০০০ epochEpochপুরো training data-এর উপর একবার পাস। ১ epoch = সব training examples একবার দেখা। DL training সাধারণত কয়েক থেকে শত শত epoch চলে। পর্যন্ত চালাও।"
- Loss পরিবর্তন কম: "যদি loss টানা ১০ ধাপে $0.0001$-এর কম পরিবর্তন হয়, থামো।"
- Validation loss বাড়ছে: "Train loss কমলেও test loss বাড়ছে — overfitting শুরু, থামো" (early stoppingEarly Stoppingএকটি regularization কৌশল — validation loss আর কমলে training থামানো। overfitting প্রতিরোধে সবচেয়ে সহজ ও কার্যকর উপায়।)।
৭ · Gradient Descent-এর ভ্যারিয়েন্ট
মূল ধারণা একই — শুধু কীভাবে গ্রেডিয়েন্ট হিসাব হবে তাতে পার্থক্য —
- Batch GDBatch Gradient Descentপ্রতিটি update-এ পুরো training dataset-এর উপর gradient হিসাব। Exact কিন্তু বড় dataset-এ অত্যন্ত slow ও memory-heavy.: পুরো ডেটাসেটে গ্রেডিয়েন্ট হিসাব। সঠিক, কিন্তু ধীর।
- Stochastic GDSGD (Stochastic Gradient Descent)প্রতিটি update-এ একটি (বা mini-batch) example ব্যবহার করে gradient approximate. Robbins-Monro ১৯৫১। DL-এর backbone. Noise = exploration; saddle escape; flat minima preferred → better generalization. Momentum ও Adam সব এর variants. (SGD): প্রতি ধাপে শুধু একটি ডেটা-পয়েন্ট। দ্রুত, কিন্তু কোলাহলপূর্ণ।
- Mini-batch GDMini-batch Gradient Descentপ্রতি update-এ একটি ছোট সাবসেট (যেমন ৩২, ৬৪, ১২৮ examples) ব্যবহার করে gradient. Batch GD-র efficiency ও SGD-র noise — দু'টোর সমন্বয়। আধুনিক DL-এ default.: ছোট ব্যাচ (যেমন ৩২-৬৪)। বাস্তবে সবচেয়ে বেশি ব্যবহৃত।
- Adam, AdamWAdamWAdam optimizer + decoupled weight decay (Loshchilov ২০১৭)। আধুনিক LLM training-এর (GPT, Claude, Llama) standard optimizer., RMSProp: "smart" GD — যা প্রতিটি প্যারামিটারের জন্য আলাদা optimizerOptimizerএকটি algorithm যা loss কমাতে weight কীভাবে update করবে তা ঠিক করে। উদাহরণ: SGD, Adam, AdamW, RMSProp, Lion. দিয়ে learning rate সমন্বয় করে। আধুনিক AI-তে standard.
৮ · এক বাক্যে সারাংশ
AI শিখে — Gradient Descent দিয়ে। Loss কমাতে কোটি কোটি ছোট ধাপ।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১ SGD-র "noise" কীভাবে local minimum থেকে বের হতে সাহায্য করে? কেন pure batch GD এতে দুর্বল?
SGD-এর counterintuitive efficacy — DL সাফল্যের অন্যতম কারণ। Noise "bug" না, "feature"।
Batch GD-র সমস্যা:
- সম্পূর্ণ ডেটাসেটে gradient = exact. deterministic.
- Loss landscape-এ একটি local minimum-এ পৌঁছালে — gradient ০, stuck.
- Saddle point-এ — gradient প্রায় ০, slow escape.
- Sharp minima preferred — flat-এর তুলনায়। GeneralizationGeneralizationমডেলের training data-র বাইরে নতুন data-তে ভাল perform করার ক্ষমতা। DL-এর ultimate goal — শুধু মুখস্থ না, প্রকৃত pattern শেখা। দুর্বল।
SGD-এর noise কীভাবে সাহায্য করে:
- প্রতিটি mini-batch-এ gradient = approximate. True gradient + noise.
- Local minimum-এ — noise random push. ছোট hill ডিঙাতে পারে।
- Saddle point-এ — noise specific direction-এ push, escape দ্রুত।
- Sharp minima-এ noise দিয়ে kicked out. Flat minima stable.
Sharp vs flat minima — generalization:
- Sharp = high curvature; weights একটু পরিবর্তনে loss বিশাল বাড়ে।
- Flat = low curvature; weights পরিবর্তনে loss স্থির।
- Test data slightly ভিন্ন distribution → flat minima robust.
- Keskar et al. (২০১৬), Hochreiter (১৯৯৭) — empirically প্রমাণিত।
Implicit regularization:
- SGD-এর noise — small effective L2 regularization.
- Smaller batch size → more noise → stronger regularization.
- এই কারণে — large batch training-এ extra regularization দরকার।
Modern variants:
- SGD with momentum: noisy SGD + history smoothing. Practical sweet spot.
- Adam: momentum + per-parameter scaling. DL default.
- SGD with warmup: prevents early divergence.
Counterargument — noise too much:
- Very small batch → too noisy → unstable training.
- Sweet spot সাধারণত batch size 32-256.
- Linear scaling rule (Goyal et al., ২০১৭): batch size × N → η × N.
মূল উপলব্ধি: "Exact gradient" সবসময় ভাল — এই intuition ভুল। Noise-এ exploration; exploration-এ generalization. DL একটি stochastic, not deterministic, optimization problem.
প্র ০২ Adam বনাম SGD with momentum — কোনটি কখন ব্যবহার করবেন? GPT-৪/Claude-এর training-এ কোনটি ব্যবহৃত হয়, কেন?
Optimizer choice — DL practical সবচেয়ে বিতর্কিত একটি বিষয়। দু'টিরই দৃঢ় সমর্থক আছে।
SGD with momentum:
- Update: $v_t = \beta v_{t-1} + \nabla L$; $w_t = w_{t-1} - \eta v_t$।
- Per-parameter learning rate একই।
- Memory: O(parameters) — একটি velocity vector.
- Hyperparameters: $\eta$, $\beta$ (typically 0.9)।
- Generalization: প্রায়ই Adam থেকে ভাল (computer vision-এ)।
Adam (Kingma ২০১৪):
- Update: momentum (1st moment) + variance estimate (2nd moment) per-parameter.
- $\hat{m}_t / (\sqrt{\hat{v}_t} + \epsilon)$ — adaptive scaling.
- Memory: 2x parameters — দু'টি running stats.
- Hyperparameters: $\eta$, $\beta_1, \beta_2, \epsilon$।
- Convergence: দ্রুত। নতুন setting-এ "এটি ব্যবহার করুন"।
AdamW (Loshchilov ২০১৭):
- Adam + decoupled weight decay.
- Adam-এর "weight decay actually L2 regularization" সমস্যা সমাধান।
- Modern LLM (GPT, Claude, Llama) standard.
কখন কোনটি:
-
SGD with momentum বেছে নিন যদি:
- Computer Vision (ResNet, EfficientNet) — historically SGD ভাল।
- Large-scale ImageNet training.
- Generalization critical.
- Time আছে hyperparameter tune-এ।
-
AdamW বেছে নিন যদি:
- NLP / LLM training.
- Sparse gradients (rare features)।
- Hyperparameter tuning কম time.
- Default choice — যখন uncertain.
GPT-৪ ও Claude-এ:
- OpenAI/Anthropic — AdamW with cosine decay schedule.
- Learning rate ~3e-4 (peak), decayed to 1/10.
- $\beta_1 = 0.9$, $\beta_2 = 0.95$ (LLM-এ লোয়ার)।
- Weight decay ~0.1.
- Warmup ~2000 steps.
কেন AdamW LLM-এ:
- Word embedding-এ rare token-এর rare update. Per-parameter scaling sparse gradients-এ critical.
- Loss landscape বিভিন্ন parameter group-এ ভিন্ন scale.
- Robust — কম hyperparameter sensitivity.
সাম্প্রতিক alternatives:
- Lion (Google ২০২৩): Adam-এর simpler, memory-efficient.
- Sophia (Stanford ২০২৩): 2nd-order info LLM-এ।
- Schedule-Free (Meta ২০২৪): learning rate schedule-এর প্রয়োজন কম।
মূল উপলব্ধি: "Best optimizer" নেই। Domain ও scale-এ depend. ২০২৫-এও — research চলছে।
প্র ০৩ Modern LLM training-এ "warmup" ও "cosine decay" learning rate schedule ব্যবহৃত। এটি কেন? Constant rate কেন কাজ করে না?
Learning rate schedule — engineering সিদ্ধান্ত যা training stability ও convergence quality উভয়েই নিয়ন্ত্রণ করে।
Constant LR-এর সমস্যা:
- প্রথমে: gradients বড়। Constant LR বিশাল ধাপ → divergence.
- মাঝখানে: গভীর exploration দরকার। বড় LR ঠিক আছে।
- শেষে: minimum-এর কাছে। বড় LR-এ overshoot.
- একটি LR দু'টি phase-কে satisfy করতে পারে না।
Warmup phase (~১০০-১০,০০০ steps):
- LR ০ থেকে peak-এ গ্রাজুয়ালি বাড়ে।
- উদ্দেশ্য: প্রথমদিকে stable updates. Random init-এ gradient খুব বড়।
- Adam-এর $v_t$ (running variance) এই সময়ে warm up — প্রথম দিকে scaling unstable.
- Linear warmup most common; cosine warmup-ও ব্যবহৃত।
Plateau / steady phase:
- Peak LR-এ exploration.
- Loss দ্রুত কমে।
Decay phase (cosine, exponential, step):
- LR ধীরে ধীরে কমে।
- Goal: minimum-এ "settle"।
- Cosine decay: smooth, popular. $\eta_t = \eta_{min} + 0.5(\eta_{max} - \eta_{min})(1 + \cos(\pi t / T))$।
- Linear decay: simpler.
- Step decay: discrete drops at milestones.
কেন cosine LLM-এ:
- Smooth — sudden drops minimum miss করে না।
- Long tail — fine-tuning শেষের দিকে। Better convergence.
- Empirically — Chinchilla, GPT-3, GPT-4 paper-এ optimal.
আরও complex schedules:
- Cyclical LR (Smith ২০১৫): LR oscillate. sometimes saddle escape এ সাহায্য।
- One-Cycle (Smith ২০১৭): warmup-up-down একটি cycle-এ।
- Chinchilla schedule: compute-optimal training — fixed token count, schedule সেই অনুযায়ী।
- SGDR (warm restarts): periodically restart with new warmup. ensemble effect.
Practical tips:
- Warmup steps = ~১% of total training steps.
- Peak LR — empirical tune. Max stable rate-এর half.
- Min LR = peak / ১০।
- Schedule decoupled from optimizer — Adam, SGD সবার সাথে কাজ করে।
Schedule-Free optimizers (২০২৪):
- Schedule-এর জটিলতা থেকে মুক্তির চেষ্টা।
- Internal warmup logic embedded.
- Research front — promise কিন্তু production-এ এখনো adoption সীমিত।
মূল উপলব্ধি: Modern LLM training-এ optimization "set and forget" না — careful schedule design. হাজার ঘণ্টার GPU-time সাশ্রয় বা নষ্ট। এটি AI engineering-এর underrated discipline.
প্র ০৪ Gradient Descent — এত সরল, ১৮৪৭-এ Cauchy বের করেছেন। তাহলে DL-এর জন্য কেন এত wait? কেন ২০১২-র আগে এটি দিয়ে শেখানো যায়নি?
এই প্রশ্ন AI ইতিহাসের সবচেয়ে গুরুত্বপূর্ণ paradox-গুলোর একটি। Algorithm পুরানো, কিন্তু success নতুন।
GD-র ইতিহাস:
- Cauchy (১৮৪৭) — Method of Steepest Descent.
- Robbins-Monro (১৯৫১) — Stochastic GD.
- Backpropagation (Rumelhart, Hinton, Williams ১৯৮৬) — neural networks-এ chain rule.
- SGD প্রায় শুরু থেকেই neural network-এ ব্যবহৃত।
২০১২-র আগে কেন কাজ করেনি — কারণ একাধিক:
-
(১) Vanishing gradients (deep networks):
- Sigmoid activation: derivative max = 0.25.
- ১০ layer-এ chain rule = 0.25¹⁰ ≈ 10⁻⁶। Gradient vanishes.
- Lower layers কখনো শিখতেই পারে না।
- Solution: ReLU (Hinton ২০১০)। Derivative = 0 or 1.
-
(২) Bad initialization:
- Random small weights → vanishing gradients.
- Random large weights → exploding gradients.
- Solution: Xavier init (২০১০), He init (২০১৫)। Variance properly scaled.
-
(৩) Compute power:
- একটি deep CNN train করতে ১৯৯০-এ মাস লাগত।
- Hyperparameter tune impossible.
- NVIDIA CUDA (২০০৬) → GPU-তে ১০০× speedup.
- ২০১২-তে GPU practical.
-
(৪) Data scarcity:
- Deep network ১,০০০ images-এ overfit.
- ImageNet (Fei-Fei Li, ২০০৯) — ১.৪M images, gamechanger.
- Internet + smartphones — data abundance ২০১০+।
-
(৫) Regularization techniques:
- Dropout (২০১২) — overfitting কমানোর সহজ trick.
- Batch Normalization (২০১৫) — internal covariate shift.
- Weight decay, label smoothing, mixup — সব ২০১০+।
-
(৬) Optimizer improvements:
- Vanilla SGD slow.
- Momentum, Nesterov (পুরানো কিন্তু কম জানা)।
- RMSProp (Hinton ২০১২), Adam (২০১৪) — practical breakthroughs.
-
(৭) Skip connections (২০১৫):
- ResNet — gradient flow shortcut paths.
- ১০০+ layer training সম্ভব।
২০১২-র moment — AlexNet:
- Hinton's lab, ImageNet challenge.
- ReLU + Dropout + GPU + ImageNet + clever architecture.
- Error rate 26% → 15% — competitor-দের অনেক এগিয়ে।
- "Perfect storm" — সব ingredients একসাথে।
উপলব্ধি — algorithm vs ecosystem:
- Algorithm: ১৮০ বছর পুরানো (GD)।
- Ecosystem: GPU + data + tricks + frameworks (TensorFlow ২০১৫)।
- "Bitter lesson" (Sutton ২০১৯): clever algorithm < scalable methods + compute.
মূল উপলব্ধি: AI breakthrough rarely "new theory"। Often "old idea + sufficient compute + sufficient data + small engineering tricks"। এটি research direction-এ প্রভাব ফেলে — fundamental advances vs scaling.
অনুশীলন
-
হাতে কয়েকটি ধাপ: $L(w) = (w - 4)^2$, শুরু $w = 0$, $\eta = 0.5$। প্রথম ৩ ধাপ হিসাব করুন।
$L'(w) = 2(w-4)$। Update: $w \leftarrow w - 0.5 \cdot 2(w-4) = w - (w-4) = 4$।
- ধাপ ১: $w = 0$, $L'(0) = -8$ → $w = 0 - 0.5 \cdot (-8) = 4$।
- ধাপ ২: $w = 4$, $L'(4) = 0$ → $w = 4 - 0 = 4$। (already minimum)
- ধাপ ৩: $w = 4$ (unchanged)।
লক্ষ্য: এই particular case-এ $\eta = 0.5$ exactly এক ধাপে minimum-এ পৌঁছায় — কোনো overshoot বা undershoot. Quadratic-এ optimal $\eta = 1/(2\cdot \text{coefficient})$।
-
কোডে চেষ্টা: উপরের Linear Regression কোডে $\eta$-কে $0.001$, $0.02$, $0.1$, $0.2$ — চারটি মানে চালান। কোনটি ভালো? কেন?
- $\eta = 0.001$: ৩০ ধাপে $w$ ০.৫-এর নিচে — অনেক slow.
- $\eta = 0.02$: ৩০ ধাপে $w \approx 3$ — সঠিক।
- $\eta = 0.1$: দ্রুত converge. কিন্তু প্রথমে কিছুটা oscillation.
- $\eta = 0.2$: Diverge. $w$ লক্ষ ছাড়িয়ে যায়।
কারণ: Loss surface-এর curvature-এর সাথে $\eta$ মিলতে হয়। $\eta = 2/(\text{max eigenvalue})$-র চেয়ে বড় হলে diverge.
-
চিন্তা করুন: AI-তে loss landscape অনেক জটিল হয় (অনেক উপত্যকা, পাহাড়)। SGD-র "noise" কীভাবে এতে সাহায্য করতে পারে — local minimum থেকে বের হতে?
প্র ০১-এ বিস্তারিত আছে। সংক্ষেপে:
- Random mini-batch → noisy gradient.
- Local minimum-এ noise = random push, ছোট hill ডিঙাতে পারে।
- Sharp minima থেকে kicked out, flat minima stable → better generalization.
- Saddle point-এ specific direction-এ push.
মূল কথা: noise = exploration. DL-এ "deterministic optimization" থেকে "stochastic" অনেক ভাল।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- পাঠ ১৬ · সম্ভাবনার মূল ধারণা পরবর্তী পাঠ Calculus complete. এখন probability — AI-র অন্য প্রধান ভাষা।
- পাঠ ১৪ · গ্রেডিয়েন্ট আগের পাঠ Gradient descent বুঝতে — gradient কী, পুনরায় দেখুন।
- পাঠ ২২ · Optimization এই পাঠের সাথে সম্পর্কিত Adam, AdamW, Lion — modern optimizers-এর deep dive.
- সব AI Courses দেখুন ABCL TECH Python, ML, DL, NLP, CV, GenAI, RL, MLOps — সব AI কোর্স একসাথে।