পর্ব ১৯ · মেশিন লার্নিং-এ ক্যালকুলাস

Autodiff: NumPy/PyTorch hands-on

তত্ত্ব শেষ — কোডে gradient check, JVP/VJP, computation graph।

শেখার লক্ষ্য

  • forward vs reverse mode
  • PyTorch autograd ব্যবহার
  • gradient check করতে

পূর্বপ্রয়োজন

chain rule, backprop, Python ভিত্তি।

Numerical gradient (check)

∂f/∂xᵢ ≈ (f(x+h eᵢ) − f(x−h eᵢ))/(2h)

Central difference O(h²) accurate। analytic gradient verify করতে essential — ML বাগ ধরার সেরা টুল।

Reverse-mode (PyTorch)

import torch; x=torch.tensor([1.0,2.0], requires_grad=True); y=(x**2).sum(); y.backward(); print(x.grad) → tensor([2.,4.])।

  • requires_grad=True → tracking start।
  • .backward() → graph traverse, .grad পূরণ।
  • torch.no_grad(): inference সময় graph off।
  • detach() → graph থেকে বিচ্ছিন্ন copy।

Forward vs reverse mode

Forward (JVP): input-pertubation → output-perturbation; cost O(n_input)। Reverse (VJP/backprop): output-grad → input-grad; cost O(n_output)। DL-এ output=scalar loss, input=million parameters → reverse জেতে।

JAX সংস্কৃতি

grad, jit, vmap, pmap — functional autodiff। jax.grad(f)(x) সরাসরি function returns। jvp(f,(x,),(v,)) ও vjp(f,x)[1](w) দিয়ে Hessian-vector product cheap।