Reverse-Time SDEs
Running a noising diffusion backwards generates data from noise. The reverse drift subtracts the score, turning pure Gaussian samples into the data distribution step by step.
Why Does This Exist?
Forward noising destroys structure: data plus growing Gaussian noise ends at pure noise with the data forgotten. Generation needs the inverse trip from noise to data, but naive time reversal of paths is not an SDE with the same noise: the backwards drift must compensate for the information the forward run discarded. Without that compensation, backward simulation drifts off-manifold into grey soup.
Anderson's reverse-time formula gives the correction: run time backwards with drift (forward drift minus volatility squared times score, the gradient of the log density). Learned scores plug in, and discretised reversals become DDPM and score-SDE samplers. Diffusion processes give the forward mixing; Fokker-Planck tracks its marginals whose scores steer the return.
Prerequisite in one paragraph. You need the forward SDE with marginals and the score pointing toward higher density. Time reversal exchanges initial and terminal laws. Background is in Brownian motion and stochastic differential equations.
Think of It Like This
Rewinding a film of ink in water
Play ink dispersing in water backwards and blobs reform: spread wisps gather, drift reverses, diffusion un-spreads. The rewind works only because each frame remembers the concentration gradient: ink flows back up the slope it slid down. Delete the gradient and the rewind just jitters.
The score is that gradient memory. Reverse SDEs rewind noise into data by climbing the log-density slope at each noise level while fresh backward noise keeps diversity. The probability-flow ODE is the same rewind with noise muted for speed.
Where the analogy stops: films rewind deterministically while reverse SDEs stay stochastic with backward Brownian motion. Learned scores also err, and errors compound down the slope the film never misremembers.
How It Actually Works
Forward with marginals reverses as running backwards, where is backward Brownian motion. The term pulls toward density ridges, countering forward spread. The deterministic probability-flow ODE shares the marginals with half the pull and no noise.
Worked example
Forward OU from data mean reaches noise by . Reverse from with true score (Gaussian conditional mean , variance ) over Euler steps of returns mean and variance matching data within : error on the mean, diagram with learned-score slack. Each step moves about plus noise, the pull dominating early and noise relatively larger late, which is why schedules spend steps near .
Score error per step accumulates like : over steps allows drift, so Lipschitz and step-count control matter as much as score MSE.
Watch Out For
Reversing with the forward drift sign unchanged
Running instead of backwards double-counts spread: paths explode outward from noise instead of condensing. Samples look over-dispersed with variance near instead of data variance, a signature of the missing pull.
Fix: subtract the full score in the SDE, half in the ODE. Verify one Gaussian round trip before learned scores.
Using too few steps near zero noise
Scores blow up like near while steps stay coarse: discretisation error dominates exactly where detail forms. Fifty uniform steps blur fine structure that with a dense low-noise grid resolve.
Fix: schedule densely near zero (strided, cosine or learned grids). Count low-noise steps separately.
The Quick Version
- Reverse SDEs generate by running forward noising backwards with drift minus volatility squared times score.
- Fifty steps from unit noise return within 0.12 of the data mean with matched variance in the example.
- The probability-flow ODE halves the pull and drops noise while keeping marginals.
- Score errors accumulate linearly in steps, so step count and Lipschitz control matter.
- Never reuse forward drift signs and never starve low-noise steps.