ডেরিভেটিভ ও ঢাল — পরিবর্তনের গণিত
এই পাঠে যা শিখবেন
- ঢাল (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$ নিয়ে।
# 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'(x) > 0$: ফাংশন বাড়ছে — ওই বিন্দুতে ঢাল উপরের দিকে।
- $f'(x) < 0$: ফাংশন কমছে — ঢাল নিচের দিকে।
- $f'(x) = 0$: ফাংশন স্থির — সর্বোচ্চ, সর্বনিম্ন বা সমতল বিন্দুCritical Pointযেখানে derivative ০ — function-এর সর্বোচ্চ, সর্বনিম্ন বা saddle point. Optimization-এ এই বিন্দুগুলো খোঁজা হয়।।
৭ · একটি বাস্তব 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$ কমান।
সরল কোডে দেখা
# একটি মাত্র 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}")
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১ 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):
- পায়ের নিচে slope check করুন — কোন দিকে নিচের দিকে?
- সেই দিকে একটি ছোট ধাপ নিন।
- আবার পায়ের নিচে check.
- 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.
অনুশীলন
-
হাতে গণনা: নিচের প্রতিটির ডেরিভেটিভ বের করুন:
- $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$।
-
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}") -
চিন্তা করুন: আপনি একটি পাহাড়ের গায়ে অন্ধকারে দাঁড়িয়ে — সর্বনিম্ন বিন্দুতে যেতে চান। আপনার পায়ের নিচে কেবল ঢাল অনুভব করতে পারেন। কী কৌশল নেবেন? এটাই Gradient Descent.
প্র ০৩-এ বিস্তারিত আছে। সংক্ষেপে:
- Slope check — কোন দিকে নিচে?
- সেই দিকে ছোট ধাপ।
- আবার slope check.
- Slope ০ হলে — minimum.
চ্যালেঞ্জ: Step size, local minima, high dimensions, saddle points, noise — সব আধুনিক optimizers (Adam) handle করে।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- পাঠ ১৪ · Gradient পরবর্তী পাঠ এক ভেরিয়েবলের ডেরিভেটিভ → বহু ভেরিয়েবলের গ্রেডিয়েন্ট। AI-এর প্রকৃত ভাষা।
- পাঠ ১২ · ম্যাট্রিক্স আগের পাঠ Matrix calculus-এর ভিত্তি — gradient ভেক্টর-ম্যাট্রিক্সে চলে।
- পাঠ ১৫ · Gradient Descent এই পাঠের সাথে সম্পর্কিত Derivative + iteration = AI-এর শেখার মূল algorithm.
- সব AI Courses দেখুন ABCL TECH Python, ML, DL, NLP, CV, GenAI, RL, MLOps — সব AI কোর্স একসাথে।