Fundamental question se shuru karo: Hum ek input vector ko output space mein kaise transform karein?
Linear transformation (sabse simple learnable operation):
z=Wx+b
Ye form kyun?
W (weight matrix): Input space ko rotate aur scale karta hai
b (bias vector): Decision boundary ko translate karta hai
Ye sabse general affine transformation hai
Input x∈Rn ke liye, output z∈Rm:
W∈Rm×n (har row ek alag linear function hai)
b∈Rm
Phir activation function σ apply karo:
a=σ(z)
Activation kyun? Iske bina, layers stack karna sirf ek aur linear function deta hai: W2(W1x+b1)+b2=W′x+b′. Activation non-linearity inject karta hai, universal function approximation enable karta hai.
Maano hum ∂Z∂L agle layer se receive karte hain (ise δ kaho).
Weights ke liye, chain rule use karte hue:
∂W∂L=∂Z∂L∂W∂Z
∂W∂Z compute karna:
Z=WX+b se, element Zi=∑jWijXj+bi ke liye:
∂Wij∂Zi=Xj
Matrix form mein:
∂W∂L=δXT
Transpose kyun? Dimensionality check:
δ: (m×nbatch)
XT: (nbatch×n)
Result: (m×n) ✓ (W ke same shape mein)
Bias ke liye:
∂b∂L=δ1
jahan 1 ones ka vector hai (batch dimension ke across sum karta hai).
Sum kyun? Bias saare samples mein shared hai—hum unke individual gradient contributions accumulate karte hain.
Previous layer ko gradient pass karne ke liye:
∂X∂L=WTδ
Yahan transpose kyun? Hum forward multiplication ko "undo" kar rahe hain—W ne X→Z transform kiya tha, toh WT gradients ko backwards Z→X transform karta hai.
Ye kaam kyun karta hai?θt ke around Taylor expansion:
L(θt−α∇L)≈L(θt)−α∥∇L∥2
Doosra term negative hai, toh loss decrease hota hai (itne chote α ke liye).
Stochastic Gradient Descent (SGD) Derivation:
Dataset D par true gradient:
∇θL=∣D∣1∑(x,y)∈D∇θL(x,y)
Problem: Isko compute karne ke liye poore dataset ka full pass chahiye (expensive!).
Solution: Ek mini-batch B⊂D use karke estimate karo:
∇θL≈∣B∣1∑(x,y)∈B∇θL(x,y)
Ye kyun kaam karta hai:Law of large numbers ke by, sample average true expectation mein converge karta hai. Chote batches bhi (32-256) achhe estimates dete hain.
# BAD: Direct softmax (can overflow)def softmax_bad(z): return np.exp(z) / np.sum(np.exp(z))# GOOD: Subtract max for stabilitydef softmax_stable(z): # WHY subtract max? exp(z - max) is bounded by exp(0) = 1 # This prevents overflow while keeping ratios identical exp_z = np.exp(z - np.max(z, axis=0, keepdims=True)) return exp_z / np.sum(exp_z, axis=0, keepdims=True)
Ye kyun kaam karta hai:∑jezjezi=∑jezj−cezi−c
kisi bhi constant c ke liye. c=max(z) choose karna overflow rokta hai.
Recall Ek 12-Saal ke Bacche ko Samjhao
Socho tum ek robot bana rahe ho jo cats pehchanna seekhta hai. Jab koi tumhe store se ready-made fancy robot kit use karna sikhata hai, tum use aasaani se use kar sakte ho—lekin tumhe samajh nahi aata kyun ye kaam karta hai.
Neural network scratch se banana aise hai jaise robot ko alag-alag parts se banana: motors, sensors, wires. Tumhe karna hoga:
Sahi wiring (forward pass): Sensors → brain → wheels connect karo taaki information flow kare
Galtiyon se seekhna (backward pass): Jab robot galti kare, pata lagao ki kaun si wires ne galat signals bheje aur unhe adjust karo
Dheere-dheere behtar hona (update): Har baar thode chote adjustments karo taaki overcorrect na ho
"From scratch" wala part matlab hai tum basic tools (jaise simple math operations) use kar rahe ho pre-built kits ki jagah. Mushkil hai, lekin ab tum exactly samajhte ho ki robot ke brain mein information kaise flow karta hai, ye errors se kaise seekhta hai, aur jab kuch toot jaaye toh kaise fix karein.
Key insight: Seekhna sirf patterns dhundhna hai cheezein try karke, maapna ki tum kitne galat ho, aur "knobs" (weights) ko thodi si us direction mein adjust karna jo galti kam kare. Ye haazaron baar karo, aur jaadu se, ye seekh leta hai!
Kyunki backward pass ko chain rule se gradients compute karne ke liye intermediate activations aur pre-activation values chahiye; unhe recompute karna inefficient hai aur numerically unstable ho sakta hai.
Dense layer ke forward pass ka formula kya hai?
z=Wx+b, jahan W input space ko rotate/scale karta hai aur b decision boundary translate karta hai.
Activation functions kyun chahiye?
Non-linear activations ke bina, layers stack karna sirf ek aur linear function deta hai: W2(W1x)=W′x. Non-linearity universal function approximation enable karti hai.
Dense layer ka weights ke saath gradient derive karo.
Weight gradients compute karte waqt X ko transpose kyun karte hain?
Dimensionality matching: δ(m×nbatch) hai, XT(nbatch×n) hai, result (m×n) hota hai jo W ke shape se match karta hai.
Dense layer ka input ke saath gradient kya hai?
∂X∂L=WTδ, jahan WT forward transformation ko "reverse" karta hai taaki gradients backward flow karein.
Bias ke liye batch ke across gradients sum kyun karte hain?
Bias ek batch ke saare samples mein shared hota hai, isliye hum single shared bias parameter update karne ke liye har sample ke gradient contributions accumulate karte hain.
ReLU activation ka derivative kya hai?
∂z∂ReLU(z)={10if z>0if z≤0 — gradient sirf wahan flow karta hai jahan input positive tha.
Gradient descent update rule derive karo.
Taylor expansion L(θ−α∇L)≈L(θ)−α∥∇L∥2 se, doosra term negative hai, isliye −∇L direction mein move karna loss decrease karta hai. Update: θt+1=θt−α∇θL.
Mini-batch SGD kya hai aur ye kyun kaam karta hai?
Full gradient ∇L=∣D∣1∑∇Li ko ek chote batch ∇L≈∣B∣1∑i∈B∇Li se approximate karna. Law of large numbers se kaam karta hai: sample average true expectation mein converge karta hai.
Optimization mein momentum kya hai aur ye kaise help karta hai?
Momentum gradients ka exponential moving average accumulate karta hai: vt=βvt−1+(1−β)∇L. Noisy gradients smooth karta hai aur consistent directions mein inertia add karke accelerate karta hai.
Xavier/Glorot initialization kya hai aur kyun?
W∼N(0,1/nin). Variance stable rakhta hai: Var(∑Wixi)=n⋅Var(W), isliye Var(W)=1/n set karne se Var(z)=1 maintain hota hai.
He initialization Xavier se alag kyun hai?
He initialization N(0,2/nin) use karta hai kyunki ReLU aadhe neurons kill kar deta hai (unhe 0 set karta hai), isliye reduced activations compensate karne ke liye 2× variance chahiye.
Softmax computation mein max kyun subtract karte hain?
Numerical stability: ∑ezjezi=∑ezj−cezi−c kisi bhi c ke liye. c=max(z) choose karna ez−c≤1 bound karta hai, overflow rokta hai aur ratios identical rakhta hai.
Activation wale layer se complete backpropagation equation kya hai?
Backprop mein shapes match karne ke liye randomly transpose kyun nahi karna chahiye?
Sahi shape galat gradient guarantee nahi karta. Pehle chain rule se symbolically derive karo: galat transposes mathematically invalid gradients compute karte hain jo dimensionally sahi lagte hain.
Agar activation derivatives bhool jayein toh kya hoga?
Gradients activation ke information flow par effect ko account nahi karte. Example: saturated sigmoid (z=10, σ′(10)≈0) vanishing gradients cause karta hai—σ′ ignore karna is critical signal death ko miss karta hai.
XOR ke liye hidden layer kyun chahiye?
XOR linearly separable nahi hai—koi single line classes ko separate nahi kar sakti. Hidden layer non-linear activation ke saath ek naya feature space create karta hai jahan classes separable ho jaati hain.