CH 14Phase 2 · Calculus for AI

Gradients

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

পাহাড়ের ঢালে কুয়াশার ভেতরে দাঁড়িয়ে আছেন। সবচেয়ে দ্রুত নিচে নামতে চাইলে কোন দিকে যাবেন? পা দিয়ে চারপাশ অনুভব করে যেদিকে ঢাল সবচেয়ে খাড়া, সেদিকে। সেই "সবচেয়ে খাড়া দিক"-ই হলো gradient-এর বিপরীত দিক।

Gradient descent — modern AI-এর একমাত্র training algorithm — এই একটিমাত্র ধারণার উপর দাঁড়ানো।

Gradient = সব Partials একসাথে

f : ℝⁿ → ℝ-এর gradient একটি n-মাত্রার vector:

∇f = [∂f/∂x₁, ∂f/∂x₂, …, ∂f/∂xn]

উদাহরণ: f(x, y) = x² + 3y²∇f = [2x, 6y]

Direction of Steepest Ascent

যে কোনো direction û-এ f-এর rate of change (directional derivative):

Dû f = ∇f · û = ‖∇f‖ · cos(θ)
  • সর্বাধিক যখন θ = 0, অর্থাৎ û gradient-এর সমান্তরাল।
  • সর্বনিম্ন (steepest descent) যখন û = −∇f / ‖∇f‖
💡 ইনসাইট
এজন্যই gradient descent rule: θ ← θ − η · ∇L(θ)

Contour ও Perpendicularity

Contour line (level set) — যেখানে f constant। Gradient সবসময় contour-এর সাথে perpendicular। এটাই কেন gradient সবচেয়ে দ্রুত ওঠার পথ — সমান-উচ্চতার line থেকে যত দ্রুত সম্ভব দূরে যাওয়া।

ML-এর গুরুত্বপূর্ণ Gradient

MSE Loss

L = (1/n) Σ (ŷᵢ − yᵢ)²
w L = (2/n) Σ (ŷᵢ − yᵢ) · xᵢ

Linear regression

L(w, b) = (wx + b − y)²
∂L/∂w = 2(wx + b − y)·x, ∂L/∂b = 2(wx + b − y)

Cross-entropy + softmax

∂L/∂z = ŷ − y (সবচেয়ে সুন্দর gradient!)

Python Implementation

pythonPython · NumPy
import numpy as np

# 1) Manual gradient of f(x, y) = x^2 + 3y^2
def f(x, y):  return x**2 + 3*y**2
def grad_f(x, y): return np.array([2*x, 6*y])

print("∇f at (1,1) =", grad_f(1, 1))   # [2, 6]

# 2) Gradient descent on f
x, y = 4.0, 4.0
lr = 0.1
for step in range(30):
    g = grad_f(x, y)
    x, y = x - lr*g[0], y - lr*g[1]
print(f"final (x,y) = ({x:.4f}, {y:.4f})  f = {f(x,y):.6f}")

# 3) Linear regression via gradient descent
np.random.seed(0)
X = np.random.randn(100)
y = 3 * X + 2 + 0.1 * np.random.randn(100)

w, b, lr = 0.0, 0.0, 0.05
for epoch in range(200):
    y_hat = w*X + b
    err = y_hat - y
    dw = (2/len(X)) * np.dot(err, X)
    db = (2/len(X)) * err.sum()
    w -= lr * dw
    b -= lr * db
print(f"learned w={w:.3f}, b={b:.3f}  (true 3.0, 2.0)")

# 4) PyTorch autograd
import torch
xy = torch.tensor([4.0, 4.0], requires_grad=True)
f_val = xy[0]**2 + 3*xy[1]**2
f_val.backward()
print("torch grad:", xy.grad)        # [8., 24.]

AI/ML সংযোগ

  • Gradient Descent: θ ← θ − η · ∇L — সমস্ত ML training।
  • SGD / Mini-batch: full gradient-এর noisy approximation।
  • Momentum, Adam: gradient-এর moving average ব্যবহার।
  • Gradient clipping: ‖∇‖ > c হলে scale করে কাটা — RNN/LLM-এ অপরিহার্য।
  • Gradient checking: numerical gradient দিয়ে analytical verify।
  • Saliency maps: ∂output/∂input দিয়ে কোন pixel গুরুত্বপূর্ণ — XAI।

Common Mistakes

  • Gradient = scalar ভাবা — এটা vector।
  • "+ η ∇L" ব্যবহার করে fall করার বদলে rise করা — sign ভুল।
  • Learning rate বড় → gradient direction সঠিক কিন্তু step বড়, oscillate করে।
  • Mini-batch gradient ও full gradient-কে identical ভাবা।

Practice Tasks

  1. f(x, y) = x² + xy + y²-এর gradient বের করুন। (0, 0) কি minimum?
  2. (3, 4) point-এ f = x² + y²-এর gradient ও steepest descent direction।
  3. Linear regression gradient descent চালিয়ে loss curve plot করুন।

Assignment

f(x, y) = (x − 3)² + (y + 2)²-এর জন্য (10, 10) থেকে শুরু করে gradient descent চালান। প্রতি step-এর (x, y) save করে contour plot-এর উপর path draw করুন। তিনটি ভিন্ন learning rate (0.01, 0.1, 0.9) তুলনা করুন।

Interview Questions

  1. Gradient কেন steepest ascent direction?
  2. SGD ও full-batch GD-এর tradeoff কী?
  3. Gradient clipping কেন দরকার RNN-এ?
  4. Momentum কীভাবে কাজ করে?

Mini Project

"Gradient Descent on a Bowl" — f(x, y) = x² + 4y²-এর contour plot এর উপর gradient descent path animate করুন (matplotlib FuncAnimation)। দেখান কীভাবে narrow valley-তে zigzag হয় এবং momentum যোগ করলে কেমন মসৃণ হয়।

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

  • Gradient = সব partial derivative-এর vector।
  • Gradient direction = steepest ascent; বিপরীত = steepest descent।
  • Gradient সবসময় contour line-এর perpendicular।
  • Modern AI training = gradient descent-এর variations (SGD, Adam, …)।
✨ পরবর্তী পদক্ষেপ
Chapter 15-এ chain rule গভীরভাবে — যেটা ছাড়া কোনো deep network-এর gradient হিসাব করা যায় না, আর Chapter 18-এ সরাসরি backpropagation।