Lesson 156 — Intermediate

Diffusion Fundamentals: Learning to Denoise

Diffusion ka frame ek line mein hai: Destroy data gradually → learn to undo each destruction step; sampling starts from pure noise. L12 wale multimodal level mein image-generation API ko product ke roop mein dekha tha — prompt daalo, image mili; yahan uske andar ka mechanism khulega: forward process jo sirf training ke liye noise add karta hai, reverse process jo asli model hai, loss jo "guess the noise" hai, aur sampler/steps jo output aur latency dono decide karte hain.

⏱ 20 min• Intermediate• The Generative Model Family: VAEs & GANs

Diffusion — destroy karke seekhna

Kya hai?

Diffusion generation ka seedha tareeka hai: data par dheere-dheere noise daalo (forward), aur model ko seekhao ki har step ka noise kaise hataye (reverse). Training ke waqt pipeline ko destroy karke uska dataset banaya jaata hai — har noisy version ek example hai. Sampling pure noise se shuru hoti hai aur denoiser use step-by-step data mein badalta hai.

Kab kaam aata hai?

Jab output rich data ho — image, audio — aur training stable chahiye. Aaj ka text-to-image, image editing aur audio synthesis sab isi mechanism pe chalta hai, isliye iske baad ke do lessons Stable Diffusion tak le jaate hain.

Kahan milta hai?

Hugging Face diffusers ke pipeline mein (scheduler + denoiser + steps), image-generation APIs ke peeche (jo L12 mein product level pe thi), aur har interview mein jo poochhta hai — "sampling steps ka kya farq padta hai?"

Do process ko alag rakho: forward process koi network nahi hai — wo ek fixed rule hai jo noise add karta hai, aur uska data sirf training ke liye hai. Reverse process hi asli model hai jo seekhta hai ki noise kaise nikaala jaaye. Generation ka poora game ulta chalta hai — noise se data.

Forward mein koi learning nahi: Interview mein ye confusion common hai — poochha jaata hai "forward process kaise train hota hai?" Jawab: train nahi hota. Wo toh rule hai (beta schedule ke hisaab se noise daalo); learning sirf reverse (denoiser) ki hai.

Forward process — noise schedule aur infinite training pairs

import math
# forward rule: x_t = sqrt(abar_t) * x0 + sqrt(1 - abar_t) * eps
x0, eps = 2.0, 0.6
for abar in (0.81, 0.01):
    sig = math.sqrt(abar)            # signal ka weight
    noi = math.sqrt(1 - abar)        # noise ka weight
    xt  = sig * x0 + noi * eps
    print("sig=%.2f noi=%.2f x_t=%.2f" % (sig, noi, xt))
# sig=0.90 noi=0.44 x_t=2.06   -> abhi tak data ki jhalak hai
# sig=0.10 noi=1.00 x_t=0.80   -> noise dominant, signal gayab
Schedule ka effect: Schedule tez ya steps kam toh denoising mushkil; dheere ya steps zyada toh refined par slow. Steps/scheduler badalne par output badalta kyun hai — dono ek hi dial ke do side hain.

Reverse process — denoiser ek chhota correction har step deta hai

# reverse step (DDPM-style, simplified) — model (x_t, t) -> noise ka andaza
def step(x_t, eps_pred, alpha_t, beta_t, abar_t, z):
    mean = (x_t - beta_t / ((1 - abar_t) ** 0.5) * eps_pred) / (alpha_t ** 0.5)
    return mean + ((1 - alpha_t) ** 0.5) * z   # z = nayi randomness (stochastic)

# ek step -> thoda saaf; 50 baar dohrao -> image (coefficients schedule se aate hain)
x_prev = step(x_t, eps_pred, alpha_t=0.99, beta_t=0.01, abar_t=0.9, z=noise)
Ek step = ek denoiser call: Jitne steps chalao, utni baar network forward hota hai (CFG on ho toh har step do passes). Latency seedha steps se multiply hoti hai — steps ek latency dial hain, sirf quality dial nahi.

Training objective — "guess the noise" wala loss

Loss ka poora khel: data lo, kahin se bhi t uthao, noise daalo, model ko x_t do — wo eps predict kare aur MSE se compare karo. Ismein koi do network nahi, koi judge nahi, koi feedback loop nahi — ek fixed regression hai. Isi wajah se ye GAN se kai zyada stable chalta hai: loss bhi hai aur gradient bhi milta hai, oscillation wali tension nahi.

# guess-the-noise loss — chhote numbers se dekho
eps_true = [0.10, -0.40, 0.25, 0.05]
eps_pred = [0.15, -0.20, 0.25, 0.05]

sq   = [(a - b) ** 2 for a, b in zip(eps_true, eps_pred)]
loss = sum(sq) / 4
print(loss)   # (0.0025 + 0.04 + 0 + 0) / 4 = 0.0106 -> doosra dim hi ghalat tha

# loss girta gaya = model har step ka noise behtar pakad raha hai
Stability ka matlab perfect run nahi: Diffusion ka loss simple regression hai, isliye training ekdum se bigadti nahi aur failure ka signal (loss curve) chhupa nahi rehta. Par iska matlab ye nahi ki har run perfect — faayda sirf ye hai ki galti dikhti hai, judge-vs-maker ke khel ki tarah chhupi nahi rehti.

Sampling & steps — quality, latency aur reproducibility

num_inference_steps = scheduler ke timesteps kitne hain
denoiser calls       = steps (CFG on -> har step do passes / batch 2)
steps kam            = tez, par refinement adhoori — shape reh jaati hai
steps zyada          = aur refinement, par har extra step ka latency fix
steps 4 se 50        = calls bhi 4 se 50 (lagbhag 12 guna compute) — ye hisaab
                       pakka hai, quality ki guarantee nahi

samplers:
  DDPM/ancestral  -> har step nayi randomness (stochastic raasta)
  DDIM/ancestral nahi wale -> deterministic: same seed = same image
seed               -> initial noise ko fix karta hai (reproducibility ka anchor)
Reproducibility ke charon chahiye: Same seed, same prompt, same steps, same scheduler/checkpoint = same image (deterministic sampler par). Inmein ek bhi badla toh output badlega — debugging mein har run ke saath ye charon log karo, warna "kal achha aaya tha" repeat hi nahi hoga.

Diffusion ne game kyun cheena — aur uski honest price

decision ka frame (qualitative — koi benchmark nahi):

stability + control chahiye + compute chal sakta hai -> diffusion
sharpness + training ka kharcha sambhalna -> GAN aaj bhi
smooth latent ops (interpolate, anomaly) -> VAE

aur latency ghatani ho toh agla kadam:
steps/scheduler chuno -> phir LATENT space (agla lesson)
Summary line: Diffusion ne stability aur control dono cheene, aur price per sample badha. Latent diffusion isi price ko kam karne ka agla kadam hai — wahi agle lesson.

Exercise

Question: Forward process mein koi network hota hai ya sirf ek fixed rule? (do shabd)

Question: Diffusion training loss ko do shabdon mein kya kehte hain — "guess the ___"?

Question: Sampling kis cheez se shuru hoti hai — asli data se ya kuch aur?

Question: Steps 4 se 50 kar diye (CFG band) — denoiser calls kitne? Sirf number.

Question: Deterministic sampler par same seed aur same config ka output — same ya alag?

Common mistakes

Desi example: TV static se photo — ek step at a time

Socho ek photo par dhund (static) badhate ja rahe ho — pehle thoda, phir aur, aakhir mein sirf static. Yahi forward hai. Ab ulta: TV par aayi safed raat se dheere-dheere wahi photo nikalte jao — har frame thodi saaf. Model ko isi mein train kiya jaata hai: ye static hai, ismein se kya nikalna hai?

python
x0    = photo                    # asli photo
xt    = 0.90 * x0 + 0.44 * static   # forward (abar = 0.81) — signal abhi zyada

# model ka exam: xt diya gaya, usmein daala gaya static batana hai
eps_pred = model(xt, t=10)
loss     = mse(static, eps_pred)   # guess-the-noise — yahi objective

# sampling: pure static se shuru, 50 baar saaf, photo tayyar
Interview angle — yahan se sawaal aate hain
  • Q: Forward process kya hai? — Fixed, bina learning wala noise-adding rule jo training pairs banata hai; model sirf reverse (denoise) seekhta hai.
  • Q: Model exactly kya predict karta hai? — Step t pe maujood noise (ya uska equivalent clean sample), aur loss MSE se compare hota hai.
  • Q: Steps badhane ka fayda aur nuksan? — Zyada refinement, par denoiser calls linear badhte hain — latency aur cost seedha judi hain.
  • Q: DDIM-type aur DDPM-type sampling ka farq? — Deterministic raasta vs har step nayi randomness; repro ke liye sampler bhi config ka hissa hai.
  • Q: Diffusion ki stability ka raaz? — Ek hi regression objective, koi adversarial judge nahi — feedback seedha milta hai, balance ka khel nahi.
Lesson complete?

Forward, reverse, loss aur steps — tum ab mechanism pe baat kar sakte ho, sirf API pe nahi. Agla lesson — Latent Diffusion & Stable Diffusion Internals — mein dekhenge ki ye poora denoising raw pixels ki jagah compressed latent grid pe kyun chalta hai.

Popular courses: Data Science Course in Lucknow · AI Course in Lucknow · Python Course in Lucknow · Power BI Course · Data Analytics Course