Raghuram Shankar
← Diffusion Language Models

Part 3 · The Maths I: Continuous Diffusion

The forward process

Fix a noise schedule β1, …, βT ∈ (0,1) of small, typically increasing values, and let data be x0 ~ q(x0). The forward process is a Markov chain that corrupts one step at a time:

q(xt | xt−1) = 𝒩( xt ; √(1−βt) · xt−1 , βt·I )

xt the data after t noising steps · βt how much noise this step adds · 𝒩(μ, Σ) a Gaussian · I the identity, so noise is added independently per coordinate

The odd-looking √(1−βt) is deliberate: if Var(xt−1) = I, then Var(xt) = (1−βt)·I + βt·I = I. Signal shrinks at exactly the rate noise grows — a variance-preserving chain that neither explodes nor collapses. Because Gaussians compose, the whole chain telescopes into a single jump. Writing αt = 1−βt and ᾱt = α1α2⋯αt:

q(xt | x0) = 𝒩( √ᾱt·x0 , (1−ᾱt)·I )   ⇔   xt = √ᾱt·x0 + √(1−ᾱt)·ε,  ε ~ 𝒩(0, I)

ᾱt the cumulative signal retained after t steps (the product of all 1−β so far) · ε a standard Gaussian draw · the point is that any t is reachable in one shot, without simulating the chain

Why this closed form matters. Training never has to simulate the chain: draw a random t, draw ε, and you have a corrupted sample at exactly noise level t in one line of code. This is what makes diffusion training as cheap per example as ordinary supervised learning. By design ᾱT ≈ 0, so xT ~ 𝒩(0, I): all information about the data is destroyed, and generation can start from pure noise.