अब हम समझते हैं GAN का Training Process, जो deep learning में सबसे रोचक और चुनौतीपूर्ण processes में से एक है।
यह एक दो neural networks के बीच का “game” है — Generator vs Discriminator, जो एक-दूसरे को हराने की कोशिश करते हैं।
🔶 1. Overview: GAN कैसे Train होता है?
GAN दो parts से मिलकर बनता है:
Model | काम |
---|---|
🎨 Generator (G) | नकली data generate करता है |
🕵️♂️ Discriminator (D) | Decide करता है कि data असली है या नकली |
दोनों को बारी-बारी से train किया जाता है — Discriminator असली और नकली data में फर्क करना सीखता है, और Generator उसे बेवकूफ बनाने की कोशिश करता है।
🔁 2. Training Process Step-by-Step:
✅ Step 1: Real Data और Noise Prepare करें
- एक mini-batch असली data x∼pdata से लें
- Generator के लिए random noise vector z∼N(0,1) generate करें
✅ Step 2: Generator से Fake Data बनाएँ
- Generator को noise vector zinput दें
- वह fake sample generate करेगा: x^=G(z)
✅ Step 3: Discriminator को Train करें
- उसे real data xxx और fake data x^ दोनों input दें
- D को binary classification करना सिखाएँ:
- D(x)→1
- D(G(z))→0
- Loss Function (Binary Cross-Entropy):

Discriminator के parameters को update करें
✅ Step 4: Generator को Train करें
- अब Generator को better fake data generate करने के लिए update करें
- उसके लिए Discriminator को fool करना लक्ष्य होता है:

- Generator के parameters को update करें
(Discriminator को freeze करके)
✅ Step 5: Repeat…
- Step 1 से 4 को कई epochs तक repeat करें
- धीरे-धीरे Generator realistic data generate करने लगेगा
- और Discriminator उसे पहचानने में fail होने लगेगा (50% confidence)
🧠 PyTorch-Style Training Loop (Pseudo Code)
for epoch in range(num_epochs):
for real_data in dataloader:
# --- Train Discriminator ---
z = torch.randn(batch_size, latent_dim)
fake_data = generator(z)
real_pred = discriminator(real_data)
fake_pred = discriminator(fake_data.detach())
d_loss = loss_fn(real_pred, ones) + loss_fn(fake_pred, zeros)
d_optimizer.zero_grad()
d_loss.backward()
d_optimizer.step()
# --- Train Generator ---
z = torch.randn(batch_size, latent_dim)
fake_data = generator(z)
fake_pred = discriminator(fake_data)
g_loss = loss_fn(fake_pred, ones) # Want discriminator to say "real"
g_optimizer.zero_grad()
g_loss.backward()
g_optimizer.step()
⚠️ 3. Challenges in GAN Training
Problem | Explanation |
---|---|
❌ Mode Collapse | Generator बार-बार same output देता है |
❌ Non-Convergence | Losses oscillate करते रहते हैं |
❌ Vanishing Gradients | Discriminator बहुत strong हो जाता है |
✅ Solution | Learning rate tuning, label smoothing, Wasserstein GAN, etc. |
📊 4. When is Training Successful?
- Generated data बहुत realistic लगने लगे
- Discriminator की accuracy 50% के आसपास होने लगे (confused!)
- Losses stabilize हो जाएँ
📌 Summary Table
Step | Description |
---|---|
1️⃣ | Noise vector से fake data generate करें |
2️⃣ | Real और fake data से Discriminator train करें |
3️⃣ | Discriminator को fix करके Generator train करें |
4️⃣ | पूरे process को बार-बार repeat करें (epochs) |
✅ | दोनों networks धीरे-धीरे बेहतर होते हैं |
📝 Practice Questions:
- GAN में training loop कैसे चलता है?
- Generator और Discriminator को alternate कैसे train करते हैं?
- GAN का objective function क्या होता है?
- GAN training में challenges क्या हैं?
- Mode collapse से कैसे बचा जा सकता है?