একটি পাহাড়ি ভূমিতে দাঁড়িয়ে আছেন। উত্তর দিকে এক পা গেলে উচ্চতা কেমন বদলাবে? পূর্ব দিকে গেলে? প্রতিটি দিকের জন্য আলাদা slope। সেটাই partial derivative।
Neural network-এ কোটি কোটি parameter — প্রতিটির জন্য আলাদা "এক পা গেলে loss কতটা বদলাবে" — সেটাই training-এর হৃদয়।
সংজ্ঞা
Function f(x, y)-এর x-এর সাপেক্ষে partial derivative —y-কে constant ধরে নিয়ে normal derivative:
একইভাবে ∂f/∂y — x-কে fix রেখে।
উদাহরণ
Geometric intuition
f(x, y)-এর graph একটি 3-D surface। ∂f/∂x = x-অক্ষ বরাবর slope।∂f/∂y = y-অক্ষ বরাবর slope। প্রতিটি (x, y) point-এ দুটি আলাদা সংখ্যা।
Higher-Order ও Mixed Partials
সব second partial একসাথে = Hessian matrix:
Multi-variable Chain Rule
যদি z = f(x, y), এবং x = x(t), y = y(t), তাহলে:
Jacobian Matrix
যখন vector-valued function f : ℝⁿ → ℝᵐ — সব partial-এর collection:
Single-output function-এ Jacobian = gradient-এর transpose (একটি row)।
Python Implementation
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
- f(x, y) = sin(x)·cos(y)-এর সব partial বের করুন।
- f(x, y, z) = xyz-এর Hessian বানান।
- 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
- Partial derivative ও ordinary derivative-এর পার্থক্য?
- Jacobian ও Hessian কী?
- Saddle point কেন deep learning-এ গুরুত্বপূর্ণ?
- 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-এর গাণিতিক ভিত্তি।