Generative / Architecture
verifiedNormalizing Flow
Build a generator out of invertible steps. Start from a simple distribution, push it through transformations you can run backwards, and you get both samples and their exact probabilities — the one thing GANs cannot give you and diffusion gives only approximately. The price is that every layer must be invertible, which is a severe constraint on what you can build.
The determinant of the Jacobian has to be cheap, so the architecture is designed around that: coupling layers transform half the dimensions conditioned on the other half, making the Jacobian triangular. Exact likelihoods make flows useful for anomaly detection and for hybrid models even where sample quality lags — and it does lag, because invertibility forbids the discarding of information that other architectures rely on.
With x = f(z) invertible, log p(x) = log p(z) − log|det ∂f/∂z|. Coupling layers split x into halves and set y sub 1 = x sub 1 , y sub 2 = x sub 2 ·exp(s(x sub 1 )) + t(x sub 1 ), giving a triangular Jacobian whose log-determinant is Σ s(x sub 1 ) — linear rather than cubic in dimension, which is what makes the whole family tractable.
coupling-layers holds 50% of the budget; rest holds the remaining 50%.
Expressiveness bought by stacking invertible couplings against the expressiveness invertibility costs, in equal units. Drag the depth up to watch the stack recover what the constraint took — a flow buys with layers what other architectures get for free.
Reviewed by opendroid · 2026-08-18
- arXiv:1605.08803 — Density estimation using Real NVP
- arXiv:1807.03039 — Glow: Generative Flow with Invertible 1x1 Convolutions