পাঠ ১৩ · ৩০-এর মধ্যে · মডিউল ২
Home / AI Courses / AI Foundations / ডেরিভেটিভ

ডেরিভেটিভ ও ঢাল — পরিবর্তনের গণিত

Derivatives — the math of change
৮ মিনিট পড়া শুরু · Beginner Python কোডসহ

এই পাঠে যা শিখবেন

  • ঢাল (slope) কী — দু'টি বিন্দু ও একটি বিন্দু থেকে
  • ডেরিভেটিভ — যেকোনো বিন্দুতে ফাংশনের তাৎক্ষণিক পরিবর্তনের হার
  • কয়েকটি সাধারণ ফাংশনের ডেরিভেটিভ মুখস্থ — $x^n$, $\sin x$, $e^x$
  • কেন AI-এ ডেরিভেটিভ অপরিহার্য — gradient descent-এর পূর্বপ্রস্তুতি

১ · ঢাল কী?

একটি পাহাড়ের গায়ে আপনি দাঁড়িয়ে আছেন। প্রতিটি ধাপ যতই উঁচুতে নিয়ে যায় বা নিচে নামায় — সেটাই ঢালSlopeএকটি ফাংশনের পরিবর্তনের হার — উল্লম্ব বদল ÷ অনুভূমিক বদল। সরল রেখায় constant; বক্ররেখায় প্রতি বিন্দুতে ভিন্ন।। বেশি ঢাল = খাড়া পাহাড়। কম ঢাল = সমতল।

একটি সরল রেখার ঢাল = $\dfrac{\text{উল্লম্ব পরিবর্তন}}{\text{অনুভূমিক পরিবর্তন}} = \dfrac{\Delta y}{\Delta x}$

উদাহরণ — $y = 2x + 1$ ফাংশনে $x$ ১ একক বাড়লে $y$ বাড়ে ২ একক। তাই ঢাল = $2$।

ঢাকার রাস্তায় গাড়ি চালাচ্ছেন। স্পিডোমিটারে যা দেখছেন — সেটাই গতি, অর্থাৎ "দূরত্ব ফাংশনের ডেরিভেটিভ"। যত বেশি গতি — দূরত্ব তত দ্রুত বাড়ছে।

২ · কিন্তু সরল রেখা না হলে?

$y = x^2$ ফাংশনে ঢাল প্রতি বিন্দুতে আলাদা — কোথাও কম, কোথাও বেশি। তাহলে "এই বিন্দুতে ঢাল কত?" — কীভাবে বলবেন?

উত্তর — দু'টি কাছাকাছি বিন্দু নিন, ঢাল হিসাব করুন, তারপর বিন্দু দু'টি একে অপরের কাছে আনতে থাকুন। সীমাবদ্ধ মানLimitএকটি function-এর মান যখন input কোনো নির্দিষ্ট বিন্দুর কাছে আসে। derivative-এর সংজ্ঞা limit-এর উপর গড়া — $h \to 0$ হলে কী মান পাই। হবে — সেই বিন্দুর তাৎক্ষণিক ঢাল।

ডেরিভেটিভের সংজ্ঞা

$$f'(x) = \lim_{h \to 0} \frac{f(x + h) - f(x)}{h}$$ সংজ্ঞাগতভাবে — ফাংশনের তাৎক্ষণিক পরিবর্তনের হার।

৩ · কয়েকটি গুরুত্বপূর্ণ ডেরিভেটিভ

সংজ্ঞা থেকে বের করা যায়, কিন্তু কয়েকটি মুখস্থ থাকলে কাজ অনেক সহজ —

  • $\dfrac{d}{dx}(c) = 0$   (ধ্রুবকের পরিবর্তন নেই)
  • $\dfrac{d}{dx}(x) = 1$
  • $\dfrac{d}{dx}(x^n) = n x^{n-1}$   (Power rulePower Rule$x^n$-এর derivative = $nx^{n-1}$। সবচেয়ে ব্যবহৃত differentiation rule. যেকোনো polynomial-এর derivative এর দ্বারা পাওয়া যায়। AI-তে loss function প্রায়ই $(y-\hat{y})^2$ form-এ — যা power rule-এ ছোট। প্রমাণ: limit definition থেকে binomial expansion.)
  • $\dfrac{d}{dx}(e^x) = e^x$   (এর নিজের সমান!)
  • $\dfrac{d}{dx}(\ln x) = \dfrac{1}{x}$
  • $\dfrac{d}{dx}(\sin x) = \cos x$
  • $\dfrac{d}{dx}(\cos x) = -\sin x$

উদাহরণ

$f(x) = x^2$   →   $f'(x) = 2x$

মানে $x = 3$ বিন্দুতে ঢাল = $2 \cdot 3 = 6$। অর্থাৎ ওই বিন্দুতে $x$ একটু বাড়লে $y$ বাড়বে ৬ গুণ দ্রুতে।

৪ · যোগ ও ধ্রুবক-গুণের নিয়ম

  • যোগের নিয়ম: $(f + g)' = f' + g'$
  • ধ্রুবক-গুণের নিয়ম: $(c \cdot f)' = c \cdot f'$

উদাহরণ

$f(x) = 3x^2 + 5x + 7$
$f'(x) = 3 \cdot 2x + 5 \cdot 1 + 0 = 6x + 5$

৫ · Python দিয়ে ডেরিভেটিভ — সংখ্যাগত পদ্ধতি

সরাসরি সংজ্ঞা ব্যবহার করে আমরা যেকোনো ফাংশনের ডেরিভেটিভ আনুমানিক বের করতে পারি — অনেক ছোট $h$ নিয়ে।

Python
# f(x) = x^2 ফাংশনের ডেরিভেটিভ
def f(x):
    return x ** 2

def derivative(f, x, h=1e-6):
    return (f(x + h) - f(x)) / h

# x = 3 বিন্দুতে f'(x) = 2x = 6 হওয়ার কথা
print(f"f'(3) ≈ {derivative(f, 3):.4f}")
print(f"f'(5) ≈ {derivative(f, 5):.4f}")
print(f"f'(0) ≈ {derivative(f, 0):.4f}")

    
$f'(3) \approx 6$, $f'(5) \approx 10$, $f'(0) \approx 0$ — গণিতের সূত্র $f'(x) = 2x$-এর সাথে মেলে। সামান্য পার্থক্য $h$ পরিমিত নয় বলে।

৬ · ডেরিভেটিভ যা বলে

  • $f'(x) > 0$: ফাংশন বাড়ছে — ওই বিন্দুতে ঢাল উপরের দিকে।
  • $f'(x) < 0$: ফাংশন কমছে — ঢাল নিচের দিকে।
  • $f'(x) = 0$: ফাংশন স্থির — সর্বোচ্চ, সর্বনিম্ন বা সমতল বিন্দুCritical Pointযেখানে derivative ০ — function-এর সর্বোচ্চ, সর্বনিম্ন বা saddle point. Optimization-এ এই বিন্দুগুলো খোঁজা হয়।।
ডেরিভেটিভ — চিহ্ন কী বলে? f'(x) sign = direction of change f'(x) < 0 কমছে f'(x) = 0 সর্বনিম্ন · target f'(x) > 0 বাড়ছে → x বাড়াও → x কমাও Loss function L(w) — উদাহরণ
Loss function-এ ডেরিভেটিভের চিহ্ন বলে — কোন দিকে $w$ পরিবর্তন করলে loss কমবে।
AI-তে আমরা একটি "loss functionLoss Functionএকটি function যা মাপে — মডেলের prediction সঠিক উত্তর থেকে কতটা দূরে। training-এ এই loss কমানোই লক্ষ্য। উদাহরণ: MSE, cross-entropy." বানাই যা মাপে — আমাদের মডেল কতটা ভুল করছে। এই loss-কে যতটা সম্ভব কমাতে চাই। কীভাবে কমাব? ডেরিভেটিভDerivativeএকটি function-এর তাৎক্ষণিক পরিবর্তনের হার — সেই বিন্দুতে tangent-এর ঢাল। AI-তে loss function-এর derivative দিয়ে weight update দিক ঠিক করা হয়। ব্যবহার করে। যেদিকে ঢাল নিচের দিকে — সেদিকে গেলে loss কমবে। এটাই Gradient DescentGradient Descentএকটি optimization algorithm — gradient-এর বিপরীত দিকে ছোট ছোট ধাপ নিয়ে loss সর্বনিম্ন বিন্দু খুঁজে বের করে। AI-তে শেখার মূল পদ্ধতি।-এর মূল ধারণা।

৭ · একটি বাস্তব AI উদাহরণ

ধরুন আপনি বানিয়েছেন একটি মডেল যা বাড়ির আকার থেকে দাম অনুমান করে: $\hat{y} = w \cdot x + b$। ডেটাতে সত্য দাম $y$, মডেলের অনুমান $\hat{y}$। ভুল (loss) হলো — $L = (y - \hat{y})^2$।

মডেলের কাজ — $w$ ও $b$ সমন্বয় করা যাতে $L$ ছোট হয়। কীভাবে? $L$-এর ডেরিভেটিভ $w$-এর সাপেক্ষে বের করে দেখা — $w$ একটু বাড়ালে $L$ বাড়ে না কমে। যদি কমে — $w$ বাড়াতে থাকুন। যদি বাড়ে — $w$ কমান।

সরল কোডে দেখা

Python
# একটি মাত্র point দিয়ে loss-এর ঢাল দেখা
# x=2 (আকার), y=6 (সত্য দাম)
# মডেল: ŷ = w*x   (b=0 ধরে নিই)
# Loss: L(w) = (y - w*x)^2

def loss(w):
    x, y = 2, 6
    return (y - w * x) ** 2

def derivative(f, w, h=1e-6):
    return (f(w + h) - f(w)) / h

# বিভিন্ন w-এ দেখা যাক
for w in [0, 1, 2, 3, 4]:
    L = loss(w)
    dL = derivative(loss, w)
    print(f"w={w}: L={L}, ঢাল={dL:.2f}")

    
$w = 3$-এ loss = ০ (সঠিক উত্তর) এবং ঢাল = ০। $w$ ৩-এর কম হলে ঢাল নেতিবাচক (বাড়াতে হবে), বেশি হলে ধনাত্মক (কমাতে হবে)। এটাই AI-এর শেখার মূল।
একে চমৎকার লাগলে এখানেই থেমে যাবেন না — এই ছোট ধারণাটাই বিশাল আকারে ChatGPT, Stable Diffusion সব কিছু চালায়। পার্থক্য — এক $w$-এর বদলে কোটি কোটি $w$, এবং এক ডেটা-পয়েন্টের বদলে কোটি কোটি ডেটা।

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।

প্র ০১ ReLU = $\max(0, x)$ — DL-এর সবচেয়ে জনপ্রিয় activation. কিন্তু $x = 0$-এ এর derivative undefined. এটি কি সমস্যা? কীভাবে handle করা হয়?

ReLU-র দু'টি অংশ আছে — $x < 0$-এ slope ০, $x > 0$-এ slope ১। কিন্তু $x = 0$-তে kink — প্রকৃত derivative নেই (left ও right derivatives ভিন্ন)।

কেন তবু ReLU কাজ করে:

  • SubgradientSubgradientnon-differentiable বিন্দুতে derivative-এর সাধারণীকৃত রূপ। convex function-এ একটি set of slopes যা legitimate ব্যবহার করা যায়। ReLU-র $x=0$-তে subgradient $[0,1]$।: Mathematically — $x = 0$-এ যেকোনো value $[0, 1]$ থেকে নেওয়া যায়। অধিকাংশ framework $0$ বা $0.5$ চয়ন করে।
  • Practical: $x = 0$ rare: Floating-point arithmetic-এ exactly $0$ পাওয়া rare. ৬৪-bit float-এ probability প্রায় ০।
  • SGD's randomness: Random data shuffling ও mini-batches — exact ০-এ stuck হওয়ার সম্ভাবনা vanishingly small.

প্রকৃত সমস্যা — Dying ReLU:

  • একটি neuron যদি অনেকক্ষণ negative input পায় — gradient সবসময় ০, weight update বন্ধ।
  • "Dead neuron" — কখনো recover করে না।
  • Large learning rate-এ এই ঝুঁকি বেশি।

সমাধান — alternative activations:

  • Leaky ReLU: $\max(0.01x, x)$ — negative side-এ ছোট slope.
  • PReLU: Leaky ReLU কিন্তু slope learnable parameter.
  • ELU: negative side smooth exponential.
  • GELU: Gaussian-based smooth approximation. GPT-৩+, BERT-এ ব্যবহৃত।
  • SiLU/Swish: $x \cdot \sigma(x)$। PaLM, Llama-তে।

মূল উপলব্ধি: Pure mathematics-এ "undefined" — কিন্তু engineering-এ practical workaround. DL "rigorous calculus"-এর চেয়ে "what works" বেশি গুরুত্ব দেয়। এটাই tension গবেষণার।

প্র ০২ Numerical derivative ($h = 10^{-6}$) ও symbolic derivative ($f'(x) = 2x$)-এর পার্থক্য কী? AI-তে কোনটি ব্যবহার হয় এবং কেন?

এই প্রশ্ন automatic differentiation-এর দরজা খুলে দেয় — DL framework-গুলোর মূল প্রযুক্তি।

তিন ধরনের differentiation:

  • Numerical (finite difference): $f'(x) \approx (f(x+h) - f(x))/h$।
    • সহজ, যেকোনো ফাংশনে কাজ করে।
    • সমস্যা: floating-point error. $h$ ছোট = roundoff error; $h$ বড় = approximation error.
    • Sweet spot: $h \approx 10^{-6}$ — কিন্তু ১,০০০,০০০+ parameters-এ অত্যন্ত slow.
  • Symbolic (calculus rules): $\frac{d}{dx}(x^2) = 2x$।
    • Exact — কোনো numerical error নেই।
    • Mathematica, SymPy এই পদ্ধতি।
    • সমস্যা: complex function-এ "expression swell" — derivative formula massive হয়ে যায়।
  • Automatic Differentiation (autodiff): Forward computation track + chain ruleChain Rulecomposite function-এর derivative নিয়ম: $(f(g(x)))' = f'(g(x)) \cdot g'(x)$। DL-এ backpropagation = chain rule-এর প্রয়োগ — গভীর network-এর সব layer-এ gradient pass করতে। application.
    • Numerical exactness + symbolic efficiency.
    • PyTorch, TensorFlow, JAX — সব এই পদ্ধতি।
    • "Backward mode" — ১০০ million parameters-এ ১ pass-এ সব gradients.

AI-তে কেন autodiff:

  • GPT-৪-এ ১.৭৫ trillion parameters. Numerical = ১.৭৫ trillion forward-pass per gradient — অসম্ভব।
  • Symbolic-এ million-line formula — programming nightmare.
  • Autodiff: ১ forward pass + ১ backward pass. Gradient time ≈ forward time. Magic.

Autodiff কী করে:

  • Computation graph build করে — প্রতিটি operation node.
  • Forward pass-এ values এবং local derivatives store.
  • Backward pass-এ chain rule apply — output থেকে input-এ gradient propagate.
  • প্রতিটি ১,০০০-D vector → scalar function-এর gradient $O(\text{forward time})$।

উদাহরণ — PyTorch:

import torch
x = torch.tensor(3.0, requires_grad=True)
y = x ** 2
y.backward()
print(x.grad)  # 6.0 — exact!

মূল উপলব্ধি: "AI gradient compute" — শুধু calculus না, computer science-এর সবচেয়ে clever পদ্ধতিগুলোর একটি। Backprop (১৯৮৬) ও autodiff এই কারণেই AI-র বিপ্লবের technical heart.

প্র ০৩ একটি পাহাড়ের গায়ে অন্ধকারে দাঁড়িয়ে — আপনি সর্বনিম্ন বিন্দুতে যেতে চান। শুধু পায়ের নিচে slope feel করতে পারেন। কী কৌশল? এই সাদৃশ্য কোথায় ভাঙে?

এই সাদৃশ্য Gradient Descent-এর intuition-এর হৃদয়। কিন্তু সব analogy-র মতো এটিরও limit আছে।

প্রকৃত কৌশল (Gradient Descent):

  1. পায়ের নিচে slope check করুন — কোন দিকে নিচের দিকে?
  2. সেই দিকে একটি ছোট ধাপ নিন।
  3. আবার পায়ের নিচে check.
  4. Repeat যতক্ষণ না slope প্রায় ০ — মানে আপনি সমতল বিন্দুতে।

মূল sub-questions:

  • ধাপের আকার (learning rate): বড় ধাপ = দ্রুত কিন্তু overshoot. ছোট ধাপ = নিরাপদ কিন্তু slow.
  • কখন থামবেন: Slope প্রায় ০ মানে minimum. কিন্তু sometimes false alarm (saddle, flat plateau)।
  • সব দিক একসাথে: ২-D-এ — একটি direction. ১০০-D-এ — gradient = সব directions-এর slope-এর সংমিশ্রণ।

সাদৃশ্য কোথায় ভাঙে — গুরুত্বপূর্ণ পার্থক্য:

  • (১) High dimensions: পাহাড় ৩-D, কিন্তু DL ১,০০০,০০০+-D. মানুষ ৩-D অভিজ্ঞতা থেকে high-D intuition develop করে — যা প্রায়ই misleading.
  • (২) Multiple minima: পাহাড়ে এক নিচু জায়গা — কিন্তু DL loss landscape-এ অনেক local minima. Pure gradient descent local-এ আটকে যেতে পারে।
  • (৩) Saddle pointsSaddle Pointএকটি critical point যেখানে এক দিকে minimum, অন্য দিকে maximum (ঘোড়ার জিনের মতো)। high-D loss landscape-এ অসংখ্য — DL-এ minima-র চেয়েও বেশি common.: high-D-এ saddle (একদিক উপরে, অন্যদিক নিচে) more common than minima. Pure GD slow.
  • (৪) Stochasticity: বাস্তব pose-এ pure gradient descent না — SGD (mini-batch) ব্যবহৃত। প্রতিটি ধাপ noisy.
  • (৫) Loss landscape rapidly changing: Train-এ data পরিবর্তন; landscape একই না। পাহাড় static — landscape dynamic.
  • (৬) Modern variants: Adam, RMSprop, momentum — শুধু slope না, slope-এর history-ও দেখে। "Heavy ball rolling down" এর ভাল analogy.

উন্নত intuitions:

  • Skiing analogy: Momentum — slope বদলালেও কিছুক্ষণ আগের direction-এ চলে।
  • River analogy: Loss landscape একটি river — water সবসময় downstream, কিন্তু sometimes পাশে রিভাইন।
  • Drunken sailor: SGD — random direction-এ ছোট ধাপ, কিন্তু overall trend down.

মূল উপলব্ধি: "পাহাড় থেকে নামা" — সরল, কিন্তু DL reality complex. Modern optimizers (AdamW, Lion) — পাহাড়ের বদলে "intelligent navigator on a noisy fractal landscape"। কিন্তু core idea — slope-এর দিকে পদক্ষেপ — অপরিবর্তিত।

প্র ০৪ Differentiable functions — DL-এ অপরিহার্য। কিন্তু বাস্তব AI সমস্যায় অনেক কিছু non-differentiable (যেমন "if-else", argmax)। কীভাবে handle করা হয়?

এই প্রশ্ন DL design-এর অন্যতম জটিল চ্যালেঞ্জ-এ পৌঁছায়। অনেক সমাধান কৌশল এসেছে — প্রতিটির trade-off.

Non-differentiable operations — সাধারণ:

  • Discrete decisions: classification — "এটা cat না dog?"
  • Argmax: "max value-র index."
  • Sampling: probability থেকে discrete choice.
  • Hard if-else: "if x > 0 then A else B."
  • Counting, indexing: integer operations.

সমাধান কৌশল:

  • (১) Smooth approximations:
    • Argmax → softmax: $\text{softmax}(x_i) = e^{x_i}/\sum e^{x_j}$। smooth, differentiable, peaks at max.
    • Hard threshold → sigmoid/tanh.
    • Hard step → smooth transition.
  • (২) Reparameterization trick (VAE):
    • $z \sim N(\mu, \sigma)$ → $z = \mu + \sigma \cdot \epsilon$ where $\epsilon \sim N(0,1)$।
    • Sampling externalized — gradient $\mu, \sigma$-তে flow করতে পারে।
  • (৩) Gumbel-Softmax (Jang ২০১৬):
    • Discrete sampling-এর smooth approximation.
    • Temperature parameter — $\tau \to 0$ = hard, $\tau$ বড় = uniform.
  • (৪) Straight-Through Estimator (STE):
    • Forward-এ hard, backward-এ identity gradient.
    • Quantized networks (binary/int8 inference) — STE ব্যবহার।
    • Theoretically suspect, practically powerful.
  • (৫) Reinforcement learning:
    • যখন function non-differentiable — REINFORCE algorithm.
    • Policy gradient — reward-based, gradient-based না।
    • RLHF (ChatGPT) এই category.
  • (৬) Differentiable surrogates:
    • Sorting → SinkhornSort.
    • Top-k → softTopK.
    • Combinatorial optimization → relaxations.

আধুনিক উদাহরণ:

  • Mixture of Experts (MoE): "এই token কোন expert-এ যাবে?" — discrete. Gating network — top-k routing with auxiliary load-balancing loss.
  • Sparse attention: "কোন tokens-এর সাথে attend?" — discrete. Various differentiable approximations.
  • Quantization-aware training: training-এ quantize simulate, STE দিয়ে gradient.
  • Tool use in LLM: "calculator কখন ব্যবহার?" — RL দিয়ে train.

মূল উপলব্ধি: "AI = differentiable" এই মনে হয়। বাস্তবে — অনেক engineering যাতে পুরো system end-to-end differentiable হয়। যেগুলো নয় — RL বা creative tricks. এটি AI-এর অন্যতম ongoing research challenge.

অনুশীলন

  1. হাতে গণনা: নিচের প্রতিটির ডেরিভেটিভ বের করুন:
    • $f(x) = 5x^4 - 3x^2 + 7$
    • $g(x) = 2 \sin x + 3 \cos x$
    • $h(x) = e^x + x^3$
    • $f'(x) = 20x^3 - 6x$।
    • $g'(x) = 2\cos x - 3\sin x$।
    • $h'(x) = e^x + 3x^2$।
  2. Python-এ যাচাই: উপরের কোডে $f(x)$ পরিবর্তন করে নিজের ফাংশনের ডেরিভেটিভ যাচাই করুন।
    import math
    
    def derivative(f, x, h=1e-6):
        return (f(x + h) - f(x)) / h
    
    # h(x) = e^x + x^3, h'(2) = e^2 + 12 ≈ 19.389
    h = lambda x: math.exp(x) + x**3
    print(f"h'(2) ≈ {derivative(h, 2):.4f}")
    print(f"true value: {math.exp(2) + 12:.4f}")
  3. চিন্তা করুন: আপনি একটি পাহাড়ের গায়ে অন্ধকারে দাঁড়িয়ে — সর্বনিম্ন বিন্দুতে যেতে চান। আপনার পায়ের নিচে কেবল ঢাল অনুভব করতে পারেন। কী কৌশল নেবেন? এটাই Gradient Descent.

    প্র ০৩-এ বিস্তারিত আছে। সংক্ষেপে:

    1. Slope check — কোন দিকে নিচে?
    2. সেই দিকে ছোট ধাপ।
    3. আবার slope check.
    4. Slope ০ হলে — minimum.

    চ্যালেঞ্জ: Step size, local minima, high dimensions, saddle points, noise — সব আধুনিক optimizers (Adam) handle করে।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

কোড রানার কাজ না করলে? ব্রাউজারে কাজ না করলে Google Colab ব্যবহার করুন — Google-এর ফ্রি অনলাইন Python পরিবেশ, শুধু Gmail অ্যাকাউন্ট লাগে।
পূর্ববর্তী পাঠ
পাঠ ১২ · ম্যাট্রিক্স