Denoising Diffusion Probabilistic Models

Denoising Diffusion Probabilistic Models (DDPMs) are a class of latent variable generative models that learn to reverse a fixed Markov chain which gradually corrupts data by adding Gaussian noise, training a neural network to approximate the reverse denoising process and thereby enabling exact log-likelihood lower bounds and high-fidelity sample generation. They matter because they achieve state-of-the-art sample quality across images, audio, and video while admitting a tractable variational objective derived from first principles, making them the dominant paradigm in modern deep generative modeling. A counterintuitive fact is that despite being trained with a simple denoising regression loss on individual timesteps, DDPMs implicitly learn the full data score function — connecting them deeply to score-based generative models through a unifying SDE framework that was only recognized post-hoc.

The core insight

The fundamental aha moment is that destroying information gradually and reversibly is far easier to learn to undo than attempting to generate data in a single forward pass. If you make the forward corruption process small enough at each step — infinitesimally adding Gaussian noise — the reverse step is also approximately Gaussian, meaning a neural network only ever needs to predict Gaussian parameters rather than arbitrary distributions. This Gaussian-reversal property converts an intractable generation problem (sampling from a complex data manifold) into a sequence of tractable denoising subproblems, each solvable by minimizing a simple mean-squared-error objective. The entire power of DDPMs rests on this observation: the posterior q(xt−1∣xt,x0)q(\mathbf{x}_{t-1}|\mathbf{x}_t, \mathbf{x}_0) is tractable and Gaussian, so the model never has to learn to jump from pure noise to data in one shot.

How It Works

The Forward Process

The forward (diffusion) process is a fixed Markov chain that adds Gaussian noise to data over TT timesteps. Given a data point x0∼q(x)\mathbf{x}_0 \sim q(\mathbf{x}), the forward process is defined as:

1
q(x1:T∣x0)=∏t=1Tq(xt∣xt−1),q(xt∣xt−1)=N(xt; 1−βt xt−1, βtI)\quad q(\mathbf{x}_{1:T} | \mathbf{x}_0) = \prod_{t=1}^{T} q(\mathbf{x}_t | \mathbf{x}_{t-1}), \quad q(\mathbf{x}_t | \mathbf{x}_{t-1}) = \mathcal{N}(\mathbf{x}_t;\, \sqrt{1-\beta_t}\,\mathbf{x}_{t-1},\, \beta_t \mathbf{I})

Explanation: The forward process is a product of Gaussian transitions, each contracting the signal by 1−βt\sqrt{1-\beta_t} and injecting noise with variance βt\beta_t, so repeated application drives xT\mathbf{x}_T toward a standard normal. Here βt∈(0,1)\beta_t \in (0,1) is a variance schedule (fixed hyperparameter, often linear or cosine). Crucially, the forward process admits a closed-form marginal at any timestep tt via the reparameterization trick. Define αt=1−βt\alpha_t = 1 - \beta_t and αˉt=∏s=1tαs\bar{\alpha}_t = \prod_{s=1}^{t} \alpha_s. Then:

2
q(xt∣x0)=N ⁣(xt; αˉt x0, (1−αˉt)I),equivalently xt=αˉt x0+1−αˉt ϵ,ϵ∼N(0,I)\quad q(\mathbf{x}_t | \mathbf{x}_0) = \mathcal{N}\!\left(\mathbf{x}_t;\, \sqrt{\bar{\alpha}_t}\,\mathbf{x}_0,\, (1-\bar{\alpha}_t)\mathbf{I}\right), \quad \text{equivalently } \mathbf{x}_t = \sqrt{\bar{\alpha}_t}\,\mathbf{x}_0 + \sqrt{1-\bar{\alpha}_t}\,\boldsymbol{\epsilon}, \quad \boldsymbol{\epsilon} \sim \mathcal{N}(\mathbf{0}, \mathbf{I})

Explanation: The marginal at time tt is a linear interpolation in signal-to-noise ratio space between the clean data x0\mathbf{x}_0 and pure Gaussian noise ϵ\boldsymbol{\epsilon}, with αˉt\bar{\alpha}_t controlling the mix — this equation enables sampling xt\mathbf{x}_t in a single step without simulating the full chain. The forward posterior conditioned on x0\mathbf{x}_0 is also Gaussian (derived via Bayes' rule):

3
q(xt−1∣xt,x0)=N ⁣(xt−1; μ~t(xt,x0), β~tI)\quad q(\mathbf{x}_{t-1} | \mathbf{x}_t, \mathbf{x}_0) = \mathcal{N}\!\left(\mathbf{x}_{t-1};\, \tilde{\boldsymbol{\mu}}_t(\mathbf{x}_t, \mathbf{x}_0),\, \tilde{\beta}_t \mathbf{I}\right)
μ~t=αˉt−1βt1−αˉtx0+αt(1−αˉt−1)1−αˉtxt,β~t=1−αˉt−11−αˉtβt\tilde{\boldsymbol{\mu}}_t = \frac{\sqrt{\bar{\alpha}_{t-1}}\beta_t}{1 - \bar{\alpha}_t}\mathbf{x}_0 + \frac{\sqrt{\alpha_t}(1-\bar{\alpha}_{t-1})}{1-\bar{\alpha}_t}\mathbf{x}_t, \qquad \tilde{\beta}_t = \frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_t}\beta_t

Explanation: This tractable Gaussian posterior — which exists only because both the forward step and the marginal are Gaussian — is the analytical target the learned reverse process must match, and its existence is why the ELBO decomposes into KL divergences between Gaussians with closed-form solutions.

The Reverse Process and Variational Objective

The reverse generative process is parameterized as a learned Markov chain with the same functional form:

4
pθ(x0:T)=p(xT)∏t=1Tpθ(xt−1∣xt),pθ(xt−1∣xt)=N ⁣(xt−1; μθ(xt,t), σt2I)\quad p_\theta(\mathbf{x}_{0:T}) = p(\mathbf{x}_T) \prod_{t=1}^{T} p_\theta(\mathbf{x}_{t-1} | \mathbf{x}_t), \quad p_\theta(\mathbf{x}_{t-1} | \mathbf{x}_t) = \mathcal{N}\!\left(\mathbf{x}_{t-1};\, \boldsymbol{\mu}_\theta(\mathbf{x}_t, t),\, \sigma_t^2 \mathbf{I}\right)

Explanation: The reverse process starts from the prior p(xT)=N(0,I)p(\mathbf{x}_T) = \mathcal{N}(\mathbf{0}, \mathbf{I}) and applies learned Gaussian denoising steps, with μθ\boldsymbol{\mu}_\theta implemented by a neural network conditioned on both the noisy state and the current timestep. The evidence lower bound (ELBO) decomposes as:

5
L=Eq ⁣[−log⁡pθ(x0∣x1)+∑t=2TDKL ⁣(q(xt−1∣xt,x0)  ∥  pθ(xt−1∣xt))+DKL ⁣(q(xT∣x0)  ∥  p(xT))]\quad \mathcal{L} = \mathbb{E}_q\!\left[-\log p_\theta(\mathbf{x}_0 | \mathbf{x}_1) + \sum_{t=2}^{T} D_{\mathrm{KL}}\!\left(q(\mathbf{x}_{t-1}|\mathbf{x}_t,\mathbf{x}_0) \;\big\|\; p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t)\right) + D_{\mathrm{KL}}\!\left(q(\mathbf{x}_T|\mathbf{x}_0) \;\big\|\; p(\mathbf{x}_T)\right)\right]

Explanation: The ELBO splits into a reconstruction term, T−1T-1 denoising matching terms (each a KL between Gaussians with a closed-form solution), and a prior matching term that is typically treated as constant since q(xT∣x0)≈N(0,I)q(\mathbf{x}_T|\mathbf{x}_0) \approx \mathcal{N}(\mathbf{0},\mathbf{I}) for large TT.

The Simplified Training Objective

Ho et al. (2020) showed that using the ϵ\epsilon-parameterization μθ(xt,t)=1αt ⁣(xt−βt1−αˉtϵθ(xt,t))\boldsymbol{\mu}_\theta(\mathbf{x}_t, t) = \frac{1}{\sqrt{\alpha_t}}\!\left(\mathbf{x}_t - \frac{\beta_t}{\sqrt{1-\bar{\alpha}_t}}\boldsymbol{\epsilon}_\theta(\mathbf{x}_t, t)\right) and dropping timestep-dependent loss weighting yields the simplified objective:

6
Lsimple=Et∼U[1,T], x0∼q, ϵ∼N(0,I) ⁣[∥ϵ−ϵθ ⁣(αˉtx0+1−αˉtϵ, t)∥2]\quad \mathcal{L}_{\mathrm{simple}} = \mathbb{E}_{t \sim \mathcal{U}[1,T],\, \mathbf{x}_0 \sim q,\, \boldsymbol{\epsilon} \sim \mathcal{N}(\mathbf{0},\mathbf{I})}\!\left[\left\|\boldsymbol{\epsilon} - \boldsymbol{\epsilon}_\theta\!\left(\sqrt{\bar{\alpha}_t}\mathbf{x}_0 + \sqrt{1-\bar{\alpha}_t}\boldsymbol{\epsilon},\, t\right)\right\|^2\right]

Explanation: The entire training procedure reduces to sampling a random timestep, corrupting x0\mathbf{x}_0 with the corresponding noise level, and training the network ϵθ\boldsymbol{\epsilon}_\theta to predict the noise that was added — a remarkably simple denoising regression loss that implicitly minimizes the ELBO.

researcher · Jonathan Ho | b. 1993 | ε-parameterization and simplified DDPM objective

Jonathan Ho completed his PhD at UC Berkeley under Pieter Abbeel and later joined Google Brain, where he led the team that produced the 2020 NeurIPS paper "Denoising Diffusion Probabilistic Models" — the work that transformed diffusion models from a theoretical curiosity into a practical generative modeling paradigm. His key contribution was the observation that the ε-prediction parameterization with a simplified, reweighted ELBO dramatically outperforms the full variational lower bound in sample quality, despite (or because of) discarding the theoretically motivated loss weighting. A surprising personal note: the DDPM paper was initially rejected from an earlier workshop on the grounds that the samples were not competitive with GANs, yet within two years the framework it introduced had displaced GANs as the dominant generative paradigm.

researcher · Jascha Sohl-Dickstein | b. 1980 | Originating diffusion generative models

Jascha Sohl-Dickstein, a researcher at Google Brain with a background in computational neuroscience and statistical physics, originated the use of non-equilibrium thermodynamics as the theoretical basis for generative modeling in his 2015 ICML paper "Deep Unsupervised Learning using Nonequilibrium Thermodynamics" — the paper that introduced the forward-reverse diffusion framework five years before DDPMs made it practical. His foundational insight was that a system driven to thermal equilibrium (Gaussian noise) by a diffusion process can be reversed to generate samples if the reverse process is learned, drawing a formal analogy between generative modeling and the second law of thermodynamics. Sohl-Dickstein studied under Bruno Olshausen and has broad cross-disciplinary interests, including work on meta-learning and neural network loss landscapes that is largely unrelated to diffusion.

researcher · Yang Song | b. 1994 | Score-based generative models and SDE unification

Yang Song completed his PhD at Stanford under Stefano Ermon and is now a researcher at OpenAI, best known for developing score-based generative models through Langevin dynamics and for the landmark 2021 ICLR paper "Score-Based Generative Modeling through Stochastic Differential Equations" which proved that DDPMs and NCSN score models are special cases of a continuous-time SDE framework. His specific contribution to this topic is the proof that the reverse-time SDE of any forward diffusion process can be written in terms of the score ∇xlog⁡pt(x)\nabla_{\mathbf{x}} \log p_t(\mathbf{x}), unifying discrete-time DDPMs, continuous normalizing flows, and score matching under one mathematical roof. A counterintuitive aspect of his work is that deterministic probability flow ODEs derived from the same score function generate samples of identical distributional quality to stochastic SDEs, enabling exact likelihood computation without sacrificing generation fidelity.

Figure
DDPM Forward and Reverse Process
Denoising Diffusion Probabilistic Model — Process Flow Forward process q (fixed, adds noise) x₀ clean data x₁ slightly noisy x_{t-1} x_t x_T ≈ 𝒩(0,I) q(x₁|x₀) ··· q(xₜ|xₜ₋₁) ··· p_θ(xₜ₋₁|xₜ) ε_θ(xₜ,t) ··· p_θ(x₀|x₁) U-Net ε_θ Reverse process p_θ (learned, removes noise)
Figure
DDPM Training vs Sampling Algorithm

TRAINING 1. Sample x₀ ~ q(x) (real data) 2. Sample t ~ Uniform{1, …, T} 3. Sample ε ~ 𝒩(0, I) 4. Compute xₜ = √ᾱₜ x₀ + √(1-ᾱₜ) ε (closed-form noisy sample) 5. Minimize ‖ε − ε_θ(xₜ, t)‖² → SGD SAMPLING 1. Sample x_T ~ 𝒩(0, I)