5.6.12 · D2 · HinglishMachine Learning (Aerospace Applications)

Visual walkthroughRecurrent neural networks — hidden state, BPTT

2,071 words9 min read↑ Read in English

5.6.12 · D2 · Coding › Machine Learning (Aerospace Applications) › Recurrent neural networks — hidden state, BPTT

Hum sab kuch scalar rakhenge (single numbers, matrices nahi) taaki kuch bhi linear algebra ke peeche na chhupe. Ek baar tum ise scalars mein dekh lo, matrix version wohi kahaani hai bas aur transposes ke saath.


Step 1 — Memory ki chain (WHAT hum differentiate kar rahe hain)

WHAT. Ek recurrent net ek sequence ko ek item at a time padhta hai. Step pe yeh ek memory number rakhta hai (hidden state). Yeh us memory ko naye input aur purani memory se update karta hai, hamesha same teen numbers se:

WHY. Hum chahte hain ki loss neeche jaaye, isliye hume jaanna hai ki har weight error ke liye kitna zimmedaar hai. Yeh zimmedaari ek derivative hai . Us derivative ko chase karne se pehle hume woh raasta dekhna hoga jis par signal travel karta hai — woh raasta neeche ki chain hai.

PICTURE. Time left se right chalta hai. Har box ek memory hai; har black arrow same weight ka ek use hai; har red arrow ek output drop karta hai jo target se compare hota hai.


Step 2 — Pre-activation ko naam dena (WHY hum introduce karte hain)

WHAT. ek plain linear combination wrap karta hai. Us andar wale part ko apna naam do:

WHY. Chain rule ek baar mein ek simple function pe kaam karta hai. Agar hum linear part aur squash ko ek saath lump karein toh hume ek monster differentiate karna padega. pe split karne se do easy links milte hain:

WHY tanh at all? Yeh kisi bhi number ko mein squash karta hai, isliye memory hamesha ke liye recirculate ho sakti hai bina blow up kiye. Yeh origin se bhi pass hota hai, isliye zero input zero-ish memory deta hai (ek fair starting point). Alternatives ko picture mein compare karo.

PICTURE. Teen curves. Sirf (red) bounded bhi hai aur zero pe centered bhi — yahi property hume ek looping memory ke liye chahiye.

Recall Kyun tanh drop nahi karte aur linear nahi rehte?

Question: kya toot jaata hai agar ho (no squash)? ::: Poora unrolled net ek bade linear map mein collapse ho jaata hai ( ek constant times plus input terms ban jaata hai), aur gradient pure ban jaata hai — guaranteed vanish ya explode hoga kyunki control karne ke liye koi nonlinearity nahi. Dekho Vanishing and Exploding Gradients.


WHAT. Blame ko squash ke through move karne ke liye hume ki slope chahiye. Ek khoobsoorat fact:

Toh slope us output se likhi jaati hai jo hum pehle se compute kar chuke hain — koi naya evaluation nahi chahiye.

WHY. Backward pass ke dauran hum pe khade hain aur tak step back karna chahte hain. Chain rule kehta hai is slope se multiply karo. Kyunki yeh ke barabar hai, aur , yeh slope hamesha mein rehti hai: ke through har backward step signal ko sirf shrink kar sakta hai, grow nahi. Yeh thought Step 6 ke liye pakad ke rakho.

PICTURE. Red curve hai. Yeh middle pe sabse tall (=1) hai aur edges pe 0 tak squash (). Ek memory jo saturate ho gayi hai ( pe push ho gayi) almost koi gradient pass nahi karti — woh "deaf" ho gayi hai.


Step 4 — Hidden state pe blame aana (BPTT ka dil)

WHAT. Memory pe blame define karo ke roop mein: total loss kitna badalta hai agar hum ko nudge karein. Kyunki do roads mein fork hua tha (Step 1), uska blame har road se wapas aane wale blame ka sum hai:

Term by term:

  • — is step ne apne output ke through jo local error kiya.
  • next memory ke liye already computed blame (hum right-to-left kaam karte hain, isliye yeh ready hai).
  • bridge jo future blame ko ek step wapas le jaata hai. Steps 2–3 se yeh hai: ke twin se pass karo, phir weight se.

WHY sum? Yeh multivariable chain rule hai: ek quantity jo kai paths se answer ko influence karti hai woh sum contribute karti hai un paths ka. ke exactly do paths hain, isliye exactly do terms. Yahi "back-propagation through time" ka idea hai: step ka blame step ko diya jaata hai, phir step apna total step ko deta hai, aur aise backward chalta hai.

PICTURE. Red arrows right to left flow karte hain. pe do red arrows merge hote hain: ek chhota apne output se, ek lamba se aata hua. Unka sum hai.


Step 5 — Shared weight ko blame karna: saare kamon ka sum

WHAT. Ab payoff. Weight har step pe use hua tha (Step 1 ki picture ka har black arrow). Uska total blame us har step pe jo usne kiya uska sum hai. Step pe uska kaam tha ko ke andar multiply karna, isliye uska local contribution hai ( pe blame, twin ke through tak push kiya) times woh number jise usne multiply kiya, :

WHY phir sum? Same weight-sharing logic Step 4 ke sum jaisi, lekin ab paths ki jagah parameter uses ke upar. Ek knob, kai kaam har kaam ka blame add karo. Yeh single boxed line BPTT derivation ka poora point hai.

PICTURE. Center mein label wala ek knob; wires har time step tak pahunchte hain; knob pe total turn har wire se wapas aane wale pulls ka sum hai.


Step 6 — Edge case: bahut zyada steps peeche = ek product jo mar jaata hai ya explode karta hai

WHAT. Final loss se blame early memory tak kaise pahunchta hai? Bridges ko chain karo. Step se step tak jaane mein har hop pe ek bridge multiply hota hai:

Har factor roughly hai jo number se scale hua hai. Ek factor ki typical size rakho. Toh steps ka gap blame ko roughly se multiply karta hai.

WHY yeh matter karta hai — ke dono signs cover karo:

  • (e.g. chhota , ya saturated memories): . Door se blame vanish ho jaata hai — net cannot learn long-range dependencies. Yeh common case hai, aur isliye LSTM and GRU exist karte hain (woh near-identity memory path add karte hain jahan ).
  • (bada , unsaturated): . Blame explode ho jaata hai — training diverge karti hai. Gradient clipping se fix hota hai.
  • (knife-edge): blame preserve hota hai — exactly woh regime jise gated cells engineer karne ki koshish karte hain.

PICTURE. ki teen red curves time-gap ke against: ek zero tak decay karti, ek 1 pe flat, ek upar shoot karti. Sirf flat wali memory ko alive rakhti hai.


Step 7 — Real numbers pe sanity check (degenerate + normal case)

WHAT. Tiny scalar RNN end-to-end chalao: , inputs , start , target last step pe with .

Forward:

Backward (right to left):

  • .
  • bridge .
  • .

Degenerate first term. Kyunki hai, step-1 ka contribution mein zero se multiply hoke vanish ho jaata hai — yeh ek clean illustration hai ki weight sirf wahan blame earn karta hai jahan usne actually nonzero memory multiply ki:

WHY. Yahan har symbol Steps 1–5 mein define kiya gaya tha. Yeh number Step 5 ka boxed formula action mein hai, aur yeh "sum over steps" structure confirm karta hai jisme ek term zero initial state se switch off hai.

PICTURE. Sum ki do candles side by side: ek grey zero candle (step 1, se kill hua) aur ek red live candle (step 2). Unki heights sum karke deti hain.


Ek-picture summary

Sab kuch ek canvas pe: top pe forward chain, bottom pe red blame backward flow karta hua, aur shared weight har step se pulls ka sum collect karta hua.

Recall Feynman: poora walkthrough plain words mein

Tum ek sequence ko ek item at a time padhte ho aur ek single memory number rakhte ho jise tum same rule se har step refresh karte ho — woh rule se squash karta hai taaki memory hamesha ke liye loop ho sake bina explode kiye. Jab ending galat ho, tum poori sequence ke through backward chalte ho har step se pehle wale ko blame hand karte hue. Har hand-off pe tum blame ko " ke twin" se pass karte ho (, hamesha 0 aur 1 ke beech) aur phir weight se. Kyunki wahi weight har step pe use hua tha, tum un sab se uska blame add up karte ho — "same weight, sum the blame." Catch yeh hai: bahut steps wapas jaane se un between-0-and-1 factors ke kai saare multiply hote hain, isliye door ka blame usually fade ho ke kuch nahi rehta (vanishing gradient) — yahi woh leak hai jo LSTM and GRU plug karta hai. Yeh bhi dekho Time Series Forecasting aur Sequence Modeling in Flight Data jahan yeh memory apna kaam karta hai.