Generative Adversarial Networks (GAN) framework
4.5.6· AI-ML › Generative Models
Overview
Generative Adversarial Networks (GANs) ek aisa framework hai jisme do neural networks ke beech ek adversarial process ke through generative models train kiye jaate hain: ek Generator jo fake samples banata hai aur ek Discriminator jo real aur fake mein fark karta hai. Yeh competitive training regime bahut hi realistic synthetic data produce karta hai.

Key insight yeh hai: humein explicitly specify karne ki zaroorat nahi ki "realistic" ka matlab kya hai. Discriminator yeh data se implicitly seekhta hai, aur competition Generator ko isse match karne par majboor karta hai.
The Two-Player Game Framework
- Generator : Random noise ko data space mein map karta hai, fake samples produce karta hai
- Discriminator : Input ko probability mein map karta hai ki real hai (generated nahi)
Yeh game: koshish karta hai ki error rate ko maximize karne ki, jabki use minimize karne ki koshish karta hai.
The Objective Function: First Principles Se Derive Karna
Starting Point: Hum kya chahte hain?
- real data ke liye 1 output kare, fake data ke liye 0
- ko fool kare taaki woh fake data ke liye 1 output kare
Step 1: ka goal probabilities use karke express karo
Real data ke liye, hum chahte hain . Log probability use karke (maximize hota hai jab ):
Log kyun? Logarithm probabilities ko log-likelihoods mein convert karta hai, jo maximum likelihood estimation mein standard hai. Yeh numerical stability bhi deta hai aur 0.99→1.0 ko 0.01→0.1 se kam important treat karta hai.
Step 2: Fake data ke liye ka goal express karo
Fake data ke liye jahan , hum chahte hain , equivalently :
Step 3: Dono objectives combine karo
dono maximize karna chahta hai, isliye:
Step 4: kya chahta hai?
chahta hai ki success ko minimize kare, yaani us objective ko minimize kare jise maximize karta hai:
Training objective hai:
Yeh ek minimax two-player game hai. Equilibrium par, aise samples generate karta hai jo real data se alag nahi pahchane ja sakte, aur har jagah output karta hai (maximum uncertainty).
Training Algorithm: Alternating Optimization
Kyunki hum minimax problem directly solve nahi kar sakte, hum alternating gradient descent use karte hain:
Alternating kyun? Agar hum dono ko simultaneously joint gradient descent se train karte, toh objectives conflict karte—ek ko improve karna doosre ke gradient signal ko kharab karta. Alternating allow karta hai ki har network doosre ki current state ke saath adapt ho sake.
Discriminator ke liye ( steps):
ko ke w.r.t. maximize karo:
Practical computation:
- Real data se minibatch sample karo
- Noise se minibatch sample karo
- Fakes generate karo: jahan
- Gradient ascent update:
Multiple discriminator steps kyun? Training ke shuruaat mein, weak hota hai, isliye aasani se classify kar sakta hai. Hum chahte hain ki ko update karne se pehle near optimal ho, warna ko weak gradient signal milta hai.
Generator ke liye (1 step):
ko ke w.r.t. minimize karo — equivalently, maximize karo:
Key Issue: Jab poor hota hai, , isliye → flat gradients (vanishing gradient problem).
Solution: minimize karne ki jagah, maximize karo:
Yeh kyun kaam karta hai? Dono objectives ka same optimal point hai (jahan ), lekin mein jab chhota hota hai toh stronger gradients hote hain. Jab confidently reject karta hai (), bada gradient deta hai, strong learning signal provide karta hai.
Practical computation:
- se minibatch sample karo
- par gradient ascent:
Iteration t=1000:
-
Discriminator update ( steps):
- 64 real MNIST digits ka batch:
- sample karo, fakes generate karo
- Reals ke liye compute karo, fakes ke liye
- Loss:
- Backprop, minimize karne ke liye update karo ( maximize karo)
- 5 baar repeat karo Yeh step kyun? In updates ke baad, current outputs ko better discriminate kar sakta hai, meaningful feedback deta hai.
-
Generator update (1 step):
- Fresh noise sample karo
- generate karo
- compute karo
- Loss: (negative kyunki hum maximize karte hain)
- aur dono ke through backprop karo (lekin sirf update karo)
- minimize karne ke liye update karo D ke through backprop kyun? Gradient ke liye ke forward pass ke through chain rule chahiye. Hum compute karte hain.
Kai iterations ke baad: realistic digits produce karta hai, real aur fake dono ke liye .
Epoch 10:
- : 0.91 (confidently real)
- : 0.12 (confidently fake)
- Generated images: vague blob shapes
Yeh values kyun? ne aasani se discriminate karna seekh liya kyunki abhi bhi weak hai.
Epoch 50:
- : 0.78
- : 0.31
- Generated images: digit-jaisi structures, lekin blurry
Values kyun giri? improve hua, ka kaam mushkil ho gaya. Arms race in action.
Epoch 200 (near convergence):
- : 0.58
- : 0.54
- Generated images: sharp, realistic digits
0.5 ke kareeb kyun? Equilibrium par, , isliye distinguish nahi kar sakta, maximum entropy (0.5) output karta hai.
Theoretical Properties
Fixed ke liye, optimal kya hai?
Woh functional jise hum ke upar maximize karte hain:
Change of variables: lo, induced distribution ke saath:
Integrals combine karo:
Pointwise optimization: Har ke liye, maximize karo:
ke w.r.t. derivative lo aur zero set karo:
ke liye solve karo:
Interpretation: Optimal Bayes-optimal probability output karta hai ki real hai. Jab , hame har jagah milta hai.
Global optimum par jahan :
Yeh Jensen-Shannon Divergence se connect hota hai:
GAN objective ko rewrite kiya ja sakta hai:
JSD kyun? GAN objective minimize karna Jensen-Shannon divergence ko real aur generated distributions ke beech minimize karne ke equivalent hai. JSD symmetric aur bounded hai, aur 0 sirf tab reach karta hai jab distributions identical hoon.
Common Training Challenges
Yeh sahi kyun lagta hai: ke perspective se, agar ko fool kar le, toh yeh success lagta hai. Doosre modes explore kyun karo?
Problem: saare noise vectors ko ek single output (ya chhote subset) par map kar deta hai. Example: faces generate karte waqt, saare outputs ek hi face hote hain thodi variations ke saath. Generator ke kuch modes par "collapse" ho jaata hai bajaaye saare modes cover karne ke.
Root cause: Minimax objective sirf require karta hai ki average par ko fool kare, poori data distribution cover karne ki zaroorat nahi. Agar repetition detect karne mein weak hai, iska faayda uthata hai.
Detection: Generated samples ki diversity monitor karo. Inception Score jaisi metrics compute karo ya measure karo ki multiple alag values nearly identical produce karte hain ya nahi.
Fix strategies:
- Minibatch discrimination: ko ek saath multiple samples dikhao, diversity ki kami detect karo
- Unrolled GANs: ko future updates consider karke update karo, exploitation discourage karo
- Multiple GANs: Ensemble train karo, har ek alag modes capture kare
Yeh sahi kyun lagta hai: Supervised learning mein, loss typically monotonically decrease hota hai. Hum similar behavior expect karte hain.
Problem: aur losses wildly oscillate karte hain, kabhi stabilize nahi hote. Ek network ka improvement doosre ka degradation hai. System kabhi equilibrium nahi paata.
Root cause: GANs ek single loss function optimize nahi karte—woh ek minimax game solve kar rahe hain. Game dynamics converge karne ki jagah cycle kar sakti hain. Gradient field mein rotational components hote hain, purely conservative nahi.
Analogy: ko coordinates ke roop mein socho. Standard optimization ek valley mein minimum ki taraf descend karta hai. GAN optimization do magnets ki tarah hai jo repel kar rahe hain—trajectories indefinitely orbit kar sakti hain.
Detection: loss aur loss ko time ke saath plot karo. Monotonic trends ki jagah periodic oscillations dekho.
Fix strategies:
- Careful learning rates: Lower rates oscillation amplitude reduce karte hain
- Gradient penalty (WGAN-GP): ko bounded gradients rakhne ke liye regularize karo, training stabilize karo
- Spectral normalization: ka Lipschitz constant constrain karo, smooth gradient flow
- Two-timescale update rule (TUR): aur ke liye alag learning rates
Yeh sahi kyun lagta hai: Supervised learning mein zyada training usually help karti hai.
Problem: Jab bahut jaldi bahut strong ho jaata hai, woh real aur fake ko perfectly separate kar leta hai (, ). Phir , ko near-zero gradients deta hai. seekhna band kar deta hai—arms race stall ho jaata hai.
Mathematically kyun: mein involve hota hai. Jab , mein chhote changes ke output ko change nahi karte (woh 0 par saturate hai), isliye gradient vanish ho jaata hai.
Fix: Non-saturating objective use karo ki jagah. Yeh strong gradients deta hai even jab confident ho.
Verification: Jab :
- Original: (tiny)
- Non-saturating: bada gradient
Architectural Considerations
-
Pooling ki jagah strided convolutions use karo ( mein) aur fractional-strided convolutions ( mein)
- Kyun? Pooling spatial information deterministically lose kar deta hai. Strided convs downsampling seekhte hain, poore network mein gradients dete hain.
-
Dono aur mein batch normalization use karo
- Kyun? Layer inputs normalize karta hai, mode collapse prevent karta hai by ensuring activations saturate nahi karti
- Exception: ke output layer ya ke input layer mein use mat karo (raw data/generation scale preserve karo)
-
Deeper architectures ke liye fully connected hidden layers hata do
- Kyun? Fully connected layers mein bahut bade parameter counts hote hain, train karna mushkil hota hai. All-convolutional spatial structure use karta hai.
-
mein ReLU use karo (output ke alawa: tanh), mein LeakyReLU
- Kyun? ReLU mein gradients flow karne mein help karta hai. mein LeakyReLU dead neurons prevent karta hai (negative inputs ke liye zero gradient avoid karta hai).
-
Generator output: tanh activation use karo
- Kyun? Normalized input range se match karta hai agar data is range mein scale kiya gaya ho. Bounded output training stabilize karta hai.
Connections to Other Concepts
Related Topics:
- Variational Autoencoders (VAE): Explicit likelihood ke saath alternative generative model
- Maximum Likelihood Estimation: GANs implicitly divergence minimize karte hain, MLE se related
- Kullback-Leibler Divergence: Distribution matching mein KL vs. JS divergence
- Backpropagation: compute karne ke liye zaroori
- Nash Equilibrium: GAN training do-player game ka Nash equilibrium dhundhta hai
- Discriminative vs Generative Models: GANs generative hain, ek discriminative component use karte hain
- Convolutional Neural Networks: DCGAN conv architectures use karta hai
- Mode Collapse Solutions: GAN coverage improve karne ke techniques
Upstream Dependencies:
Downstream Applications:
- Image Synthesis with GANs
- Style Transfer
- Data Augmentation with GANs
- Conditional GANs (cGAN)
- Waserstein GAN (WGAN)
Recall Ek 12-Saal-Ke Bachhe Ko Samjhao
Imagine karo tum realistic butterflies draw karna seekhna chahte ho, lekin tumne kabhi ek dekhi nahi—tumhare paas sirf ek teacher hai jisne bahut saari butterflies dekhi hain.
Yeh karo: Tum ek butterfly draw karo (shuruaat mein woh terrible scribbles hoti hai). Tum apne teacher ko dikhao, aur woh kehte hain "Yeh fake hai, dobara try karo." Tum ek aur draw karte ho, woh kehte hain "Abhi bhi fake hai." Lekin tum notice karte ho ki woh kya dekh rahe hain—wings galat hain, antenna bahut thick hain. Toh tum improve karte ho.
Meanwhile, tumhara teacher bhi fakes pakadne mein better ho raha hai. Shuruaat mein, tumhari drawings ITNI buri hain ki unke liye aasaan hai. Lekin jaise-jaise tum better hote ho, unhe zyada closely dekhna padta hai—"Hmm, wing pattern bilkul sahi nahi hai..."
Yeh aage-peeche hota rehta hai: tum (Generator) draw karne mein better hote ho, woh (Discriminator) galtiyan pakadne mein better hote hain. Eventually, tumhari butterflies itni achhi hoti hain ki tumhara expert teacher bhi nahi bata sakta ki yeh tumhari drawing hai ya photo. Tab tumne succeed kiya hai!
"Trick" yeh hai ki tumne kabhi real butterfly nahi dekhi. Tumne sirf apne teacher ko fool karne ki koshish karke seekha. Teacher ki job ne tumhe force kiya ki real butterflies kaisi dikhti hain yeh seekho, bina kisi ke directly dikhaye.
Order matters: Pehle D train karo (use current G seekhne do), phir updated D ko beat karne ke liye G improve karo.
Objective mnemonic: "Real-log-Real, Fake-log-NOT-fake"
- Real samples: — chahte hain 1 ke kareeb ho
- Fake samples: — chahte hain 0 ke kareeb ho (toh 1 ke kareeb ho)
Flashcards
#flashcards/ai-ml
GAN mein do neural networks kaunse hain aur har ek kya karta hai? :: Generator random noise se fake samples banata hai. Discriminator inputs ko real (data se) ya fake ( se) classify karta hai. Woh compete karte hain: koshish karta hai ko fool karne ki, koshish karta hai fakes detect karne ki.
Poora GAN minimax objective function likho :: . Discriminator maximize karta hai (real par high probability chahiye, fake par low), Generator minimize karta hai (discriminator ko fool karna chahta hai).
Hum ek generator step se pehle discriminator ko steps kyun train karte hain?
Fixed generator ke liye optimal discriminator kya hai?
Generator training ke liye kyun use karte hain ki jagah?
GANs mein mode collapse kya hai?
GAN objective optimality par kaunsa divergence minimize karta hai?
GANs mein non-convergence problem kya hai? :: aur losses bina stabilize hue oscillate karte hain. Single loss wali supervised learning ki tarah nahi, GANs ek minimax game solve karte hain—ek ka improvement doosre ka degradation hai. Gradient field mein rotational components hote hain, fixed point par convergence ki jagah orbiting hoti hai.