Visual walkthrough — Backpropagation — chain rule, gradient computation
5.6.8 · D2· Coding › Machine Learning (Aerospace Applications) › Backpropagation — chain rule, gradient computation
Hum bilkul wahi network use karte hain jo parent mein tha, saare numbers scalar hain taaki kuch bhi chhupe nahi:
Koi bhi calculus se pehle, characters se milte hain.
Step 1 — Computation ko boxes ki chain ki tarah draw karo
KYA. Ek neural net koi mysterious blob nahi hai — yeh chhoti-chhoti operations ka ek sequence hai, har ek ek number andar leta hai aur ek number bahar dhakelta hai. Hum ise ek computational graph ki tarah draw karte hain: har box ek operation hai, har wire ek number carry karta hai.
KYUN. Agar hum dekh sakein ki kaun sa number kaun se box mein jaata hai, toh hum baad mein dekh sakte hain ki kaun sa box kasoorwar hai jab jawab galat ho. Backprop is usi picture ko right-to-left padhne ke alawa kuch nahi hai.
PICTURE. Arrows ko left→right padho. Input andar aata hai, se scale hota hai aur se shift hoke banta hai ("pre-activation"). Nonlinearity ko mein squeeze karti hai ("activation"). Layer 2 yahi pattern repeat karke banata hai (hamaari prediction). Aakhir mein ko target se compare karta hai.
Step 2 — Forward pass: har wire ko ek number se bharo, aur yaad rakho
KYA. Graph ko concrete numbers ke saath left→right chalao aur har wire par har value store karo. Parent ke numbers use karte hue: , aur ReLU (ReLU ka matlab hai "positives rakho, negatives zero karo").
Store kyun karte hain? Backward step ko (layer 2 ka input) aur slope chahiye hoga. Dono un numbers par depend karte hain jo hum abhi compute karte hain. Unhe phenk dene ka matlab hai baad mein recompute karna — faaizool. Caching woh trick hai jo backprop ko sasta banati hai.
PICTURE. Wahi graph, ab har wire apna numeric tag pehne hua hai. Graph ke neeche ek chhoti "cache" tray hai jisme woh do values ( aur ) hain jinhein backward pass waapas lene aayega.
Step 3 — Error ko bilkul end par seed karo
KYA. Backward safar output par ek sawaal poochh ke shuru karo: agar thoda sa upar khisak jaaye, toh kitna badlega? Woh number hai .
YAHAN KYUN? Sirf aakhri box, loss, seedha jaanta hai "hum kitne galat" hain. Toh blame end par janam leta hai aur peechhe travel karta hai. ko differentiate karte hue:
aur power milke kaam karte hain: , toh uljha hua square ek saaf ban jaata hai. Agar humne zyada predict kiya, toh yeh positive hai ( neeche karo); kam predict kiya, toh negative.
PICTURE. ke bilkul daayein ek akela lal arrow peechhe ki taraf point karta hua dikhta hai, value carry karte hua. Yeh output par paida hone wala "error signal" hai.
Step 4 — Layer 2 ke linear box ko cross karo: error ko teen mein baanto
KYA. Pre-activation teen ingredients se bana hai: . Error at ko define karo . Kyunki exactly hai, . Ab yeh error har ingredient ko do.
TEEN ARROWS KYUN? Chain rule kehta hai: kisi bhi ingredient ke liye ki sensitivity paane ke liye, incoming error ko us ingredient ka par effect se multiply karo.
Har term term-by-term padho:
- Weight ko apna input milta hai. kyunki , se multiply hota hai. Toh ek weight ka gradient hai error out × signal in.
- Bias ko seedha 1 milta hai. sirf add hota hai, toh ise nudge karne se one-for-one move karta hai.
- Activation ko milta hai. Error weight ke through peechhe chalta rehta hai — yeh woh wire hai jo pehle ki layers tak pahunchti hai.
PICTURE. Lal error arrow layer-2 box se takraata hai aur teen mein fork ho jaata hai: ek pink branch ki taraf neeche (labelled ), ek pink branch ki taraf neeche (labelled ), aur ek blue branch ki taraf baayein continue karta hua (labelled ).
Step 5 — Nonlinearity cross karo: local slope se multiply karo
KYA. Hamare paas par pahunchta hua error hai (). Lekin hum par error chahte hain, yaani squash se pehle. Yaad karo , toh:
SLOPE KYUN? hai activation kitni steeply respond karti hai bilkul wahan jahan hum baithe hain. Agar unit ek flat region mein hai (), toh ko nudge karne se mein barely koi badlaav aata hai, toh almost koi blame pass-through nahi hota — yahi vanishing gradients ka seed hai. ReLU ke liye jab , slope hai (ReLU positive side par slope-1 ki seedhi line hai), toh:
PICTURE. Ek chhota ReLU graph par kink dikhata hai; ek dot slope-1 arm par par baitha hai. Blue error arrow ek "gate" se guzarta hai jis par likha hai aur doosri taraf abhi bhi carry karta hua nikalta hai.
Step 6 — Layer 1 par finish karo: wahi rule, ek layer pehle
KYA. Ab hamare paas hai, par error. Aakhri box, , layer 2 jaisi hi shape rakhta hai, toh wahi rule apply hoga:
YEH KYUN MATTER KARTA HAI. Notice karo ki humne network dobara nahi chalaya. Poore backward pass ne , phir reuse kiya, phir cached inputs se multiply kiya. Yahi reuse woh reason hai ki backprop ek backward sweep leta hai, weights ki sankhya ke barabar sweeps nahi — recursion bas "error out × signal in" repeat karta rehta hai har stage par.
PICTURE. Graph mein ab saare gradients unke weights aur biases ke neeche yellow mein likhe hain, aur lal→neela error arrow poore network mein right to left sweep karte hua dikhaya gaya hai.
Step 7 — Degenerate case: ek "dead" ReLU unit
KYA. Upar sab kuch assume karta tha. Kya hoga agar wahi input produce karta? Tab ReLU output karta hai aur uska slope hai.
APNE STEP KI ZAROORAT KYUN? Step 5 ka gate dekho: se multiply karne par error mar jaata hai. Phir
Toh aur ko is step mein zero gradient milta hai — woh is example se bilkul nahi seekhte. Downstream weight ko abhi bhi gradient milta hai (lekin uska input hai, toh bhi yahan!). Yahi "dying ReLU" phenomenon hai aur vanishing gradients ke peechhe ka exact mechanism.
PICTURE. Wahi ReLU graph, lekin dot ab flat left arm par hai (). Gate par likha hai, aur error arrow gate par bilkul ruk jaata hai — layer 1 ki taraf koi blue arrow continue nahi karta.
Step 8 — Yeh scale kyun karta hai: fan-in nodes apne arrows add karte hain
KYA. Hamare toy mein ek wire per layer tha. Real nets mein ek unit ka output kai downstream units ko feed karta hai. Jab error kai paths se usi node mein waapas aata hai, hum unhe add karte hain.
ADD KYUN? Har downstream path ek independent tarika hai jisse us node par depend karta hai. Multivariable chain rule kehta hai: total sensitivity = path sensitivities ka sum:
Matrix form mein yeh sum parent ki boxed equation ka hai — ki har output row saare downstream errors se dot karta hai, yaani woh automatically paths add kar deta hai. (Yeh products efficiently aur sahi tarike se scale par compute karna wahi kaam hai jo automatic differentiation libraries tumhare liye karti hain.)
PICTURE. Ek node aage do units mein split hota hai; do blue error arrows waapas aate hain aur par ek "" symbol ke saath merge hote hain, fan-in sum dikhate hue.
Ek-picture summary
Upar sab kuch compress karke: forward pass (yellow, left→right) wires bharta hai; backward pass (red seed → blue error → pink weight/bias gradients, right→left) ek sweep hai. Har weight ka gradient hai error out × signal in; har nonlinearity error ko apni local slope se multiply karti hai; fan-ins add karte hain.
Recall Feynman: poora walkthrough dobara batao
Maine network ko boxes ki ek line ki tarah draw kiya aur ek real number iske through chalaya, har wire par number likhta gaya aur unmen se do apni jeb mein rakhta gaya (input aur slope). End mein loss ne bataya main kitna galat tha — woh error hai, ek akela lal number. Maine woh number peechhe ki taraf chalaya. Har box par maine use box ke dials ko diya: ek weight ki blame hai error times woh number jo usmein aaya tha; ek bias ki blame sirf error hai; aur aage travel karte rehne ke liye maine error ko weight ke through peechhe dhakela aur ise utna shrink kiya jitna steep woh squash wahan tha. Agar koi unit so raha tha (flat slope), toh blame uske darwaze par mar gayi aur woh hissa nahi seekha. Jahan ek unit ne kai logon ko feed kiya, maine saari blame waapas aake jo aayi add kar li. Ek walk forward, ek walk back — aur ab har dial ko pata hai bilkul kis taraf ghoomna hai. Woh ek backward walk backpropagation hai, aur woh apne numbers seedhe gradient descent ko deta hai.
Connections
- Chain Rule — woh akela rule jo upar har step secretly use karta hai.
- Computational Graphs — woh box picture jo humne Step 1 mein draw ki.
- Activation Functions — jahan se Steps 5 & 7 mein slope aata hai.
- Vanishing Gradients — Step 7 ka dead-unit degenerate case.
- Automatic Differentiation — kaise Step 8 ke sums scale par kiye jaate hain.
- Neural Network Surrogate Models (CFD) — saste gradients ka aerospace payoff.
- Gradient Descent — yeh walk jo gradients produce karta hai unhe consume karta hai.