CH 13Phase 2 · Calculus for AI

Partial Derivatives

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

একটি পাহাড়ি ভূমিতে দাঁড়িয়ে আছেন। উত্তর দিকে এক পা গেলে উচ্চতা কেমন বদলাবে? পূর্ব দিকে গেলে? প্রতিটি দিকের জন্য আলাদা slope। সেটাই partial derivative

Neural network-এ কোটি কোটি parameter — প্রতিটির জন্য আলাদা "এক পা গেলে loss কতটা বদলাবে" — সেটাই training-এর হৃদয়।

সংজ্ঞা

Function f(x, y)-এর x-এর সাপেক্ষে partial derivative —y-কে constant ধরে নিয়ে normal derivative:

∂f/∂x = limh→0 [f(x+h, y) − f(x, y)] / h

একইভাবে ∂f/∂yx-কে fix রেখে।

উদাহরণ

f(x, y) = x²y + 3xy² + 5
∂f/∂x = 2xy + 3y² (y constant)
∂f/∂y = x² + 6xy (x constant)

Geometric intuition

f(x, y)-এর graph একটি 3-D surface। ∂f/∂x = x-অক্ষ বরাবর slope।∂f/∂y = y-অক্ষ বরাবর slope। প্রতিটি (x, y) point-এ দুটি আলাদা সংখ্যা।

Higher-Order ও Mixed Partials

∂²f/∂x² = ∂/∂x (∂f/∂x)
∂²f/∂x∂y = ∂/∂x (∂f/∂y)
💡 ইনসাইট
Clairaut's theorem: যদি partials continuous হয়, তাহলে ∂²f/∂x∂y = ∂²f/∂y∂x। অর্থাৎ derivative-এর order matter করে না।

সব second partial একসাথে = Hessian matrix:

H = [[∂²f/∂x², ∂²f/∂x∂y], [∂²f/∂y∂x, ∂²f/∂y²]]

Multi-variable Chain Rule

যদি z = f(x, y), এবং x = x(t), y = y(t), তাহলে:

dz/dt = (∂f/∂x)·(dx/dt) + (∂f/∂y)·(dy/dt)
✨ টিপ
Backpropagation এই rule-এর সরাসরি প্রয়োগ — প্রতিটি neuron কয়েকটি input-এর function, এবং loss সব neuron-এর function।

Jacobian Matrix

যখন vector-valued function f : ℝⁿ → ℝᵐ — সব partial-এর collection:

Jij = ∂fi / ∂xj shape (m, n)

Single-output function-এ Jacobian = gradient-এর transpose (একটি row)।

Python Implementation

pythonPython · NumPy
import sympy as sp
import numpy as np

# 1) Symbolic partials
x, y = sp.symbols('x y')
f = x**2 * y + 3*x*y**2 + 5
print(sp.diff(f, x))                  # 2*x*y + 3*y**2
print(sp.diff(f, y))                  # x**2 + 6*x*y
print(sp.diff(f, x, 2))               # 2*y      (∂²f/∂x²)
print(sp.diff(f, x, y))               # 2*x + 6*y (mixed)

# 2) Hessian
H = sp.hessian(f, (x, y))
print(H)

# 3) Numerical partial derivative
def partial(f, point, i, h=1e-5):
    p1, p2 = list(point), list(point)
    p1[i] += h; p2[i] -= h
    return (f(*p1) - f(*p2)) / (2 * h)

g = lambda x, y: x**2 * y + 3*x*y**2 + 5
print(partial(g, (1.0, 2.0), 0))      # ~16
print(partial(g, (1.0, 2.0), 1))      # ~13

# 4) PyTorch autograd for vector-input function
import torch
x = torch.tensor([1.0, 2.0], requires_grad=True)
f = x[0]**2 * x[1] + 3 * x[0] * x[1]**2 + 5
f.backward()
print("gradient:", x.grad)            # [16., 13.]

# 5) Jacobian (m outputs, n inputs)
def vector_fn(v):
    return torch.stack([v[0]**2 + v[1], v[0] * v[1]])
v = torch.tensor([1.0, 2.0])
J = torch.autograd.functional.jacobian(vector_fn, v)
print("Jacobian:\n", J)

AI/ML সংযোগ

  • Loss-এর প্রতি weight: ∂L/∂wi — হাজার পরিমাণে।
  • Backprop = multi-variable chain rule + Jacobian compose।
  • Hessian: second-order optimization (Newton's method), curvature analysis।
  • Saddle point: deep network-এ critical point-এর ৯৯%+ saddle (min নয়, max-ও নয়)।
  • Adam, RMSProp: প্রতি parameter-এর জন্য আলাদা learning rate, partial-এর moment ব্যবহার করে।

Common Mistakes

  • ∂f/∂x-এ y-কে variable ভেবে differentiate করা।
  • Jacobian-এর shape mismatch — সবসময় (output, input)।
  • Mixed partial-এ order ভুলে যাওয়া (যদিও equal, notation সাবধান)।

Practice Tasks

  1. f(x, y) = sin(x)·cos(y)-এর সব partial বের করুন।
  2. f(x, y, z) = xyz-এর Hessian বানান।
  3. SymPy-তে f(x, y) = ex²+y²-এর gradient বের করুন।

Assignment

Linear regression-এ L(w, b) = (wx + b − y)²-এর জন্য ∂L/∂w∂L/∂b হাতে derive করুন। তারপর Python-এ verify করুন PyTorch autograd দিয়ে।

Interview Questions

  1. Partial derivative ও ordinary derivative-এর পার্থক্য?
  2. Jacobian ও Hessian কী?
  3. Saddle point কেন deep learning-এ গুরুত্বপূর্ণ?
  4. Multi-variable chain rule-এর সাথে backprop-এর সম্পর্ক?

Mini Project

"3-D Surface + Partials Visualizer" — matplotlib 3-D-এ f(x, y) = x² + y² plot করুন। User input point-এ x ও y direction-এর tangent line আঁকুন (দুটি ভিন্ন রঙ)। এটাই partial derivative-এর জ্যামিতিক রূপ।

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

  • Partial derivative = অন্য variable fix রেখে একটির derivative।
  • Hessian = সব second partial; curvature বোঝায়।
  • Jacobian = vector function-এর সব first partial; backprop-এর building block।
  • Multi-variable chain rule = backpropagation-এর গাণিতিক ভিত্তি।
✨ পরবর্তী পদক্ষেপ
Chapter 14-এ সব partial-কে একসাথে vector আকারে দেখব — gradient — এবং কেন gradient direction-ই "সবচেয়ে দ্রুত উপরে ওঠার পথ"।