This page assumes you have seen none of the notation the Reparameterization trick parent note uses. We build every symbol from the ground up, in an order where each one leans only on the ones before it. Prefer Hindi-English? See the Hinglish version →.
The squiggle ∼ is read "is drawn from" or "is distributed as". So
z∼N(μ,σ2)
reads: "z is a random number produced by the bell curve N." We haven't defined N, μ, or σ yet — that's next. For now, just picture a machine that spits out a fresh number each time you press a button.
Look at the figure: each press of the button drops a dot at a different spot along the number line, but the dots cluster. That clustering shape is exactly the distribution.
Recall Why does the topic need
z?
In a VAE, z is the hidden "latent code" — a compressed random summary of the input. Sampling it is the exact step where gradients get stuck.
μ (Greek letter "mu") = the mean = where the peak sits on the number line. Slide μ right, the whole bell slides right.
σ (Greek "sigma") = the standard deviation = how wide the bell is. Big σ = fat, spread-out bell; small σ = tall, narrow spike. We always require σ>0 (a width can't be negative or zero).
σ2 = "sigma squared" = the variance. It is just σ multiplied by itself. We square it because widths add up naturally in squared units (this is a fact of statistics; take it as given here).
So the notation N(μ,σ2) means "the bell curve centered at μ with width-squared σ2."
Two facts we will lean on (both follow from the definitions above — "averaging is fair to shifting and scaling"):
E[μ+σϵ]=μ+σE[ϵ] — you can pull constants out of an average.
Var(μ+σϵ)=σ2Var(ϵ) — adding the constant μ shifts everything equally so spread is unchanged; scaling by σ multiplies every distance-from-mean by σ, hence squared distances by σ2.
A subscript on E tells you which random source you're averaging over:
Eϵ∼N(0,1)[f(ϵ)]
means "average f(ϵ) as ϵ ranges over the standard normal." The subscript matters enormously later: the whole trick is about changing which variable the expectation is over.
Recall Why does the topic need
E?
The VAE loss is an average over random samples: L=Eq[f(z)]. We can't optimize a single lucky sample — we optimize the average behaviour.
Why we want it: the slope tells us which way is downhill. If the slope is negative, increasing z lowers the loss; if positive, decreasing z lowers it. That is the entire engine of learning.
The reparameterization trick exists precisely so that the middle piece ∂μ∂z actually exists. If z is drawn by a random button, that middle slope is undefined and the chain snaps. If z is a formula, the middle slope is a clean number and the chain holds.
Here qϕ(z∣x) reads "the distribution q, controlled by ϕ, over latent zgiven the input x." The bar ∣ means "given / conditioned on". This q is the encoder's guess; the details of why it takes this shape come from the ELBO derivation and live inside the full VAE.
Everything in section 2's promise pays off here: gϕ is literally scale by σ, then shift by μ — the two knobs of a bell curve, applied by hand to a fixed noise sample.
The map below is not a restatement of headings — it shows the dependency of ideas and where the gradient breaks vs. flows: the left branch is the naive path that snaps at the random draw; the right branch is how the transform reroutes the same average so backprop survives.
Related tricks that solve the same gradient-through-randomness problem in other settings: 5.2.03-Gumbel-Softmax (for discrete samples), and 6.1.02-Policy-Gradients (an alternative estimator when reparameterization isn't available). The 4.3.01-KL-Divergence appears elsewhere in the VAE loss but is not needed to understand the trick itself.