CH 30Phase 4 · Optimization Mathematics

Adam, RMSProp, SGD

১৫–২৫ মিনিট বাংলা · Math · Python
📖 একটি ছোট গল্প

একটি পাহাড়ি রাস্তায় নামছেন — কোথাও সমতল, কোথাও খাড়া। প্রতিটি পায়ে একই দৈর্ঘ্য পা ফেলা বোকামি। চালাক hiker খাড়া-তে ছোট, সমতল-এ বড় পা ফেলেন। Adaptive optimizer ঠিক এই কাজটাই করে — প্রতিটি parameter-এর জন্য আলাদা step size।

AdaGrad

G ← G + g² (element-wise)
θ ← θ − η · g / (√G + ε)

Frequent feature-এর LR কমে, rare feature-এর LR বড় থাকে। সমস্যা: G monotonically বাড়ে — LR শেষে ০ হয়ে যায়।

RMSProp

v ← β·v + (1−β)·g² (exponential moving average)
θ ← θ − η · g / (√v + ε)

AdaGrad-এর fix — recent gradient-কে বেশি weight, LR decay-এর problem নেই। RNN-এ ভালো কাজ করে।

Adam (Adaptive Moment Estimation)

Momentum + RMSProp-এর combination, সাথে bias correction।

m ← β₁·m + (1−β₁)·g (1st moment, mean)
v ← β₂·v + (1−β₂)·g² (2nd moment, variance)
m̂ = m / (1 − β₁t), v̂ = v / (1 − β₂t) (bias correction)
θ ← θ − η · m̂ / (√v̂ + ε)

Default: β₁=0.9, β₂=0.999, ε=10⁻⁸, η=10⁻³। Deep learning-এর default optimizer।

AdamW, NAdam, LAMB

  • AdamW: L2 regularization-কে weight decay হিসেবে আলাদা করে — Transformer-এ standard।
  • NAdam: Adam + Nesterov look-ahead।
  • LAMB: layer-wise adaptive — BERT-এর large batch training।
  • Lion (2023): sign-based update, Adam-এর চেয়ে memory-efficient।
  • Sophia (2024): light-weight Hessian-based, LLM pretraining-এ ব্যবহৃত।

Python Implementation (Adam from scratch)

pythonPython · NumPy
import numpy as np

def adam_step(theta, g, state, lr=1e-3, b1=0.9, b2=0.999, eps=1e-8):
    state['t'] += 1
    state['m'] = b1*state['m'] + (1-b1)*g
    state['v'] = b2*state['v'] + (1-b2)*g**2
    m_hat = state['m'] / (1 - b1**state['t'])
    v_hat = state['v'] / (1 - b2**state['t'])
    return theta - lr * m_hat / (np.sqrt(v_hat) + eps)

# Train on noisy quadratic
np.random.seed(0)
theta = np.array([5.0, 5.0])
state = {'t': 0, 'm': np.zeros(2), 'v': np.zeros(2)}

for step in range(500):
    g = np.array([2*theta[0], 20*theta[1]]) + 0.1*np.random.randn(2)
    theta = adam_step(theta, g, state)
    if step % 100 == 0:
        loss = theta[0]**2 + 10*theta[1]**2
        print(f"step {step:3d}  theta={theta}  loss={loss:.4f}")

# Verify with PyTorch
import torch
t = torch.tensor([5.0, 5.0], requires_grad=True)
opt = torch.optim.Adam([t], lr=1e-3)
for _ in range(500):
    loss = t[0]**2 + 10*t[1]**2
    opt.zero_grad(); loss.backward(); opt.step()
print(f"\nPyTorch Adam final: {t.detach().numpy()}")

When to Use What

  • SGD + momentum: image classification (ResNet, ViT) — best final accuracy with tuning।
  • Adam / AdamW: NLP, Transformer, GAN, RL — default for most।
  • RMSProp: RNN/LSTM।
  • LAMB: large batch (BERT pretraining)।
  • Lion / Sophia: very large LLM-এ memory/speed efficient।

Common Mistakes

  • Adam-এ default LR সব সময় চলবে ধরে নেওয়া — Transformer-এ warmup দরকার।
  • AdamW vs Adam confusion — weight decay implementation আলাদা।
  • Bias correction skip করে early-step instability।
  • Adam দিয়ে ResNet train করে SGD-এর চেয়ে worse val acc পেয়ে অবাক হওয়া।

Practice Tasks

  1. SGD, Momentum, RMSProp, Adam একই network-এ compare করুন (CIFAR-10)।
  2. Adam-এ β₂ = 0.9 vs 0.999 — কী পার্থক্য?
  3. AdamW-এ weight_decay = 0 vs 0.01 — generalization কেমন?

Assignment

Adam, AdamW, এবং Lion optimizer scratch থেকে NumPy-তে implement করুন। একটি logistic regression problem-এ train loss/accuracy curve plot করে compare করুন। প্রতিটির memory ও per-step compute রিপোর্ট করুন।

Interview Questions

  1. Adam-এ bias correction কেন দরকার?
  2. AdamW Adam-এর সমস্যা কীভাবে fix করে?
  3. Adam সব সময় SGD-এর চেয়ে ভালো — সত্য নাকি মিথ্যা? কেন?
  4. Adaptive optimizer generalization-এ কেন কখনো খারাপ হয়?

Mini Project

"Optimizer Comparison Suite" — একটি benchmark যেখানে user dataset choose করে এবং ৬টি optimizer simultaneously train হয়; learning curve, final accuracy, training time, memory side-by-side দেখায়।

Summary · সারসংক্ষেপ

  • AdaGrad → RMSProp → Adam = adaptive LR-এর evolution।
  • Adam = momentum + per-parameter LR + bias correction।
  • AdamW = Transformer-এর standard।
  • SGD+momentum এখনো computer vision-এ best generalization দেয়।
✨ পরবর্তী পদক্ষেপ
Chapter 31-এ Learning Rate Scheduling — η সময়ের সাথে কীভাবে বদলায়।