Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Why a standard Gaussian?

Maximum entropy, separability, and trivial primitives — the three reasons N(0, I) is the target

03 — Why a standard Gaussian?

Every notebook so far has mapped data to a standard Gaussian N(0,I)\mathcal{N}(0, I) without questioning the destination. Why not a uniform, a Laplace, a heavy-tailed base? The choice is not arbitrary — N(0,I)\mathcal{N}(0, I) earns its place through three properties, and each one buys Gaussianization something concrete.

What you will see

1. Maximum entropy at fixed covariance

Among all distributions on Rd\mathbb{R}^d with a given mean and covariance Σ, the Gaussian N(μ,Σ)\mathcal{N}(\mu, \Sigma) has the largest differential entropy Jaynes (1957)Cover & Thomas (2006):

N(μ,Σ)=arg⁡max⁡p H(p)s.t.Ep[x]=μ, Cov⁡p[x]=Σ,H(N)=12log⁡((2πe)ddet⁡Σ).\mathcal{N}(\mu,\Sigma) = \arg\max_{p}\, H(p) \quad\text{s.t.}\quad \mathbb{E}_p[x]=\mu,\ \operatorname{Cov}_p[x]=\Sigma, \qquad H(\mathcal{N}) = \tfrac12\log\big((2\pi e)^d \det\Sigma\big).

In words: fixing the first two moments, the Gaussian assumes the least about everything else. That makes it the honest target — Gaussianizing says “I have captured the mean and covariance structure; what remains is structureless noise.” The gap between any distribution’s entropy and the Gaussian with the same covariance is the negentropy J(p)=H(NΣ)−H(p)≥0J(p) = H(\mathcal{N}_\Sigma) - H(p) \ge 0, with equality iff pp is Gaussian. Let’s see the ordering on several unit-variance distributions.

negentropy J = H_Gaussian - H (>= 0, zero iff Gaussian):
  Gaussian : analytic J = 0.0000,  rbig.negentropy = 0.0003 nats
  Logistic : analytic J = 0.0144,  rbig.negentropy = 0.0138 nats
  Laplace  : analytic J = 0.0724,  rbig.negentropy = 0.0735 nats
  Uniform  : analytic J = 0.1765,  rbig.negentropy = 0.1434 nats
<Figure size 1100x420 with 2 Axes>

The Gaussian bar is the tallest, and rbig’s estimator (black dots) tracks the analytic values. Every other distribution has positive negentropy — a quantitative “how non-Gaussian am I”. Driving that gap to zero is Gaussianization, which is why rbig.negentropy doubles as a convergence signal (we use it that way in Part 3).

2. Separability: N(0,I)=∏iN(0,1)\mathcal{N}(0, I) = \prod_i \mathcal{N}(0, 1)

The standard Gaussian is special among Gaussians: with identity covariance it factorises into independent unit-variance coordinates,

N(0,I)=∏i=1dN(0,1).\mathcal{N}(0, I) = \prod_{i=1}^d \mathcal{N}(0, 1).

Independent coordinates means zero total correlation Watanabe (1960) TC(z)=∑iH(zi)−H(z)=0\mathrm{TC}(z) = \sum_i H(z_i) - H(z) = 0 — no multi-information left. So Gaussianization is really two jobs in one: remove dependence and normalise margins. We can watch the dependence disappear: take a strongly correlated 2D Gaussian, whiten it to N(0,I)\mathcal{N}(0, I), and measure TC with rbig before and after.

total correlation before whitening = 0.6517 nats
total correlation after  whitening = -0.0015 nats  (~0)
<Figure size 1000x460 with 2 Axes>

The left cloud leans along the diagonal — knowing z1z_1 tells you a lot about z2z_2 (TC =0.64= 0.64 nats). The right cloud is isotropic; the coordinates are independent and TC has collapsed to ~0. After reaching N(0,I)\mathcal{N}(0, I), information-theoretic quantities decompose per coordinate, which is exactly what makes Gaussianized representations so convenient for entropy and mutual-information estimation (Part 14).

3. Trivial primitives

Finally, N(0,I)\mathcal{N}(0, I) is the computationally easiest base a flow could sit on. Three things every flow needs from its base are all one-liners:

  • Sampling: z∼N(0,I)z \sim \mathcal{N}(0, I) is jax.random.normal — no MCMC, no rejection.
  • Log-density: log⁡p(z)=−d2log⁡(2π)−12∥z∥2\log p(z) = -\tfrac{d}{2}\log(2\pi) - \tfrac12\lVert z \rVert^2 — just a squared norm.
  • Score: ∇zlog⁡p(z)=−z\nabla_z \log p(z) = -z — a linear vector field pointing at the origin.

The score being exactly −z-z is worth dwelling on: it is what makes the base trivial for score-based and diffusion methods Song & Ermon (2019) (Part 9). Let’s confirm it by autodiff, and read the base straight off a gauss_flows flow.

z                      = [-0.12028701  1.32257788]
score grad log p(z)    = [ 0.12028701 -1.32257788]
-z                     = [ 0.12028701 -1.32257788]
score == -z ?            True
<Figure size 520x500 with 1 Axes>

Autodiff confirms ∇zlog⁡p(z)=−z\nabla_z \log p(z) = -z, and the quiver shows the field is a clean linear pull toward the origin — no curvature, no surprises. Cheap sampling, a squared-norm density, and a linear score together make N(0,I)\mathcal{N}(0, I) the base that keeps flow.log_prob and flow.sample cheap in notebook 02.

Recap

propertystatementwhat it buyspackage
max entropyGaussian maximises HH at fixed Σnegentropy ≥0\ge 0 = “non-Gaussianity”rbig.negentropy
separabilityN(0,I)=∏iN(0,1)\mathcal{N}(0,I)=\prod_i\mathcal{N}(0,1)TC →0\to 0; IT decomposes per-coordrbig.total_correlation
trivial samplerjax.random.normalcheap generationflow.sample
trivial density−d2log⁡2π−12∥z∥2-\tfrac{d}{2}\log 2\pi-\tfrac12\lVert z\rVert^2cheap log_prob base termflow.base_dist.log_prob
trivial score∇log⁡p=−z\nabla\log p = -zlinear field for diffusion/scorejax.grad(base.log_prob)

Next up. With the target justified, we name the object we have been building. 04 — Density destructors introduces the Inouye–Ravikumar framing — Gaussianization as iterated whitening plus an elementwise nonlinearity — and the picture that ties the whole method together.

References
  1. Jaynes, E. T. (1957). Information Theory and Statistical Mechanics. Physical Review, 106(4), 620–630. 10.1103/PhysRev.106.620
  2. Cover, T. M., & Thomas, J. A. (2006). Elements of Information Theory (2nd ed.). Wiley-Interscience.
  3. Watanabe, S. (1960). Information Theoretical Analysis of Multivariate Correlation. IBM Journal of Research and Development, 4(1), 66–82. 10.1147/rd.41.0066
  4. Song, Y., & Ermon, S. (2019). Generative Modeling by Estimating Gradients of the Data Distribution. Advances in Neural Information Processing Systems (NeurIPS).