Model ko ek composition maano:
y^=hϕ(fθ(x))
jahan fθ pretrained backbone hai (params θ) aur hϕhead hai (params ϕ). Loss L(y^,y).
Kisi bhi parameter set w ke liye gradient update:
w←w−η∂w∂L
Ye step kyun? Gradient descent sirf un parameters ko move karta hai jinhe nonzero, applied gradient milta hai.
Feature extraction mein θ ko constants set karo (requires_grad=False):
∂ϕ∂Luse hota hai;∂θ∂Ldiscard hota hai (ya kabhi compute hi nahi hota)
To sirf ϕ update hota hai. Features fθ(x)fixed vectors hain — aap inhe ek baar precompute karke cache bhi kar sakte ho.
Full fine-tuning dono apply karta hai:
θ←θ−η∂θ∂L,ϕ←ϕ−η∂ϕ∂L
Chain rule se backbone gradient hai:
∂θ∂L=∂y^∂L∂fθ∂hϕ∂θ∂fθYe step kyun? Full fine-tuning mein ye chain poori evaluate karni padti hai, isliye ise (bahut bade) backbone ke through ek full backward pass chahiye — yahi iske cost ka source hai.
Feature extraction mein embeddings cache kyun kar sakte ho lekin full FT mein nahi? ⟶ frozen backbone constant fθ(x) deta hai; full FT θ ko badhata rehta hai.
Full FT mein chhota LR kyun use karte hain? ⟶ pretrained features ka catastrophic forgetting avoid karne ke liye.
Tiny datasets ke liye kaunsi strategy suit karti hai aur kyun? ⟶ feature extraction; kam trainable params → kam overfitting.
Recall Feynman: 12-saal ke bacche ko samjhao
Imagine karo tumne ek chef hire kiya jo already hazaaron dishes banana jaanta hai (pretrained model). Tum chahte ho wo tumhare ghar ki special dish banaye.
Feature extraction: tum chef ko bilkul retrain nahi karte. Bas kehte ho, "jo kuch tum jaante ho wahi use karo, aur main end mein ek final instruction add karoonga." Sasta, safe, lekin limited.
Full fine-tuning: tum chef ko apni recipe ke liye poori style relearn karne dete ho — powerful, lekin agar tumne use sirf 2 practice tries di, to wo apni puraani skills bhool sakta hai aur galat kar sakta hai. Isliye tum use dheere sikhate ho (small learning rate) aur tabhi jab tumhare paas bahut saare practice dishes hon (data).
Layer-wise Representations in Deep Nets — kyun deep layers zyada task-specific hoti hain.
Feature extraction: kya trainable hai vs frozen?
Sirf naya head trainable hai; poora pretrained backbone frozen hai.
Full fine-tuning: kya trainable hai?
Saare parameters — backbone plus head — update hote hain.
Feature extraction embeddings precompute/cache kyun kar sakti hai?
Frozen backbone constant outputs fθ(x) produce karta hai, isliye inhe sirf ek baar compute karna padta hai.
Full fine-tuning zyada memory-hungry kyun hai?
Ye saare params train karta hai, isliye poore backbone ke liye gradients + Adam moment states (m,v) store karta hai, saath hi full backward passes bhi.
Tiny dataset ke liye kaunsi strategy, aur kyun?
Feature extraction — kam trainable params strong regularization ki tarah kaam karte hain aur overfitting rokते hain.
Domain shift ke saath zyada data ke liye kaunsi strategy, aur kyun?
Full fine-tuning — frozen features naye domain ke liye biased hain, isliye unhe adapt karna bias kam karta hai.
Full fine-tuning mein chhota learning rate kyun use karte hain?
Dheere se adapt karne ke liye aur pretrained knowledge ka catastrophic forgetting avoid karne ke liye.
Partial fine-tuning kya hai?
Sirf top k (deeper, zyada task-specific) layers unfreeze karna jabki shallow layers frozen rakhna.