DDPM: one net predicts noise, reversal does the rest forward q: add noise x_0 x_1 ... x_t ... x_T ~ N(0, I) q(x_t | x_0) = N(√(ᾱ_t) · x_0, (1 - ᾱ_t) I) closed form: jump to any t in one shot reverse p_θ: denoise x_T x_{T-1} ... x_1 x_0 (sample) x_{t-1} = (1/√α_t) ( x_t - (β_t / √(1-ᾱ_t)) · ε_θ(x_t, t) ) + σ_t · z subtract the predicted noise, rescale, re-inject a bit of fresh noise training loss L = E_{x_0, t, ε} ||ε - ε_θ(√ᾱ_t · x_0 + √(1-ᾱ_t) · ε, t)||² one net, one MSE loss, no minimax, no KL divergence in the training loop scales unchanged to images, video, audio, 3D Gaussians