📚 সমস্ত অধ্যায় দেখুন
অধ্যায়/ফেজ 4 · Phase 4 · Deep Learning
4.2৩০ মিনিট পড়া27 / 68

Backpropagation — কীভাবে শেখে network

Backpropagation

Chain rule, gradient flow।

Hook — Network কীভাবে শেখে?

Forward pass এ prediction পাওয়া গেল, loss measure হলো। কিন্তু weight গুলো কীভাবে update হবে? উত্তর — Backpropagation: error কে পিছনে পাঠানো, প্রতিটি weight এর gradient হিসাব করে gradient descent দিয়ে update করা।

Chain Rule — গাণিতিক ভিত্তি

Composite function এর derivative — chain rule দিয়ে।

dL/dw = (dL/dy) · (dy/dz) · (dz/dw)

Output layer থেকে শুরু করে input layer পর্যন্ত — প্রতিটি weight এর partial derivative হিসাব হয়।

Backprop এর ধাপ

  • Forward pass — prediction ও loss।
  • Output layer এ gradient হিসাব।
  • Hidden layer এ chain rule দিয়ে gradient propagate।
  • Gradient descent দিয়ে weight update: w ← w - η · ∂L/∂w।

Gradient Descent Variants

  • Batch GD — পুরো dataset, স্থির কিন্তু ধীর।
  • SGD — এক sample, noisy কিন্তু দ্রুত।
  • Mini-batch — সাধারণত ৩২/৬৪/১২৮ — practical sweet spot।

Optimizers

  • SGD + Momentum — past gradient memory।
  • RMSProp — adaptive learning rate।
  • Adam — Momentum + RMSProp, default choice।
  • AdamW — weight decay সঠিকভাবে।

Vanishing & Exploding Gradient

Deep network এর শত্রু

Sigmoid/Tanh এ gradient ০-১ এর মধ্যে — অনেক layer পেরিয়ে ০ হয়ে যায় (vanishing)। আবার বড় weight এ gradient বিস্ফোরিত হয় (exploding)।

  • ReLU — vanishing কমায়।
  • Weight Initialization (He, Xavier) — শুরুতে সঠিক scale।
  • Batch Normalization — layer wise normalize।
  • Gradient Clipping — exploding রোধ।
  • Residual Connection — gradient highway।

Code — Training Loop

train_loop.py
for epoch in range(epochs):
    for X, y in train_loader:
        optimizer.zero_grad()      # পুরোনো gradient মুছে ফেলো
        logits = model(X)          # Forward
        loss = loss_fn(logits, y)
        loss.backward()            # Backprop — autograd সব gradient হিসাব করে
        optimizer.step()           # Weight update
    print(f"Epoch {epoch}: loss={loss.item():.4f}")

Common Mistakes

  • optimizer.zero_grad() ভুলে যাওয়া — gradient accumulate হয়।
  • Learning rate খুব বড় — loss diverge।
  • Learning rate খুব ছোট — training plateau।
  • Eval mode ছাড়া BatchNorm/Dropout সহ inference।

Summary

এক নজরে

Backprop = Chain Rule দিয়ে gradient → Optimizer দিয়ে update। এটাই Deep Learning এর engine।