This page assumes nothing. Before you can read the parent note, you need to recognise every squiggle it uses. We build them one at a time — plain words first, then a picture, then why the topic needs it. Do not skip: each item leans on the one before.
The picture. Forget images for a second. Suppose each data point has only two numbers (say height and weight). Then every possible person is a single dot on a flat sheet of paper — one axis for height, one for weight. That flat sheet is the "space". Real datasets just have hundreds or thousands of axes instead of two; we draw two because paper is flat, but every idea below carries over unchanged.
Why the topic needs it. Everything else — probability, gradients, noise — is defined at points x in this space. If you can't see "a data point is a dot on a landscape", nothing later will land.
The picture. Take the flat sheet from Section 1 and let it bulge upward wherever data crowds together. You now have a landscape: hills where realistic data sits, flat plains of near-zero height where nothing lives. The height of the terrain above point xisp(x).
The symbol p(⋅) just means "the height function". pdata(x) means "the true landscape that produced our dataset" — the one we wish we knew.
Why the topic needs it. Generating a realistic sample means "land on a tall hill, not on the empty plains". So the entire game is about this landscape's shape.
Here is the first piece of real notation, and it is the heart of the whole topic. We introduce it slowly.
The picture. Stand on your landscape at some point. Look around: one compass direction rises fastest. Draw an arrow pointing that way, and make it long if the slope is steep, short if it's gentle. Do this at every point and you get a whole field of arrows carpeting the landscape. In 2-D each arrow has 2 numbers (one per axis); in 784-D it has 784 numbers.
Why the topic needs it. The parent note's star object, the score, is literally a gradient. If you own "gradient = uphill arrow", the score costs you nothing.
Recall Check: what are the two things a gradient arrow tells you?
Its direction (which way is steepest uphill) and its length (how steep). ::: Direction = steepest ascent; length = steepness.
The picture. Take the landscape of Section 2 and re-plot its height on a log scale. The trillion-fold hill is now just, say, 27 units tall instead of 1012. The locations of hills and valleys don't move — only the vertical stretching changes. So "uphill on p" and "uphill on logp" point the same way; the log just tames the numbers.
Why the topic needs it. The score is ∇xlogp(x), not ∇xp(x). Section 6 shows why the log is the trick that deletes the intractable constant.
Two symbols travel together throughout the parent note.
The picture. In 2-D, N(0,I) is a round fuzzy cloud of dots centred at the origin, dense in the middle and thinning outward. σ controls how big the cloud is: small σ = tight speck, large σ = a cloud that fills the whole sheet.
Why the topic needs it. The trick that makes score learning possible (denoising score matching) is: take a clean data point, kick it by a random draw ϵ∼N(0,I), and learn to undo the kick. No Gaussian, no denoising trick.
Recall Check: what do
μ and σ control in N(μ,σ2)?
μ is the centre, σ is the width/spread. ::: μ = centre, σ = spread.
The one-line payoff. Watch the log and gradient team up:
∇xlogp(x)=∇x[logp~(x)−logZ]=∇xlogp~(x).
The log turned the quotient into a subtraction (Section 4); Z doesn't depend on x, so its gradient (its "uphill arrow", Section 3) is zero and it falls away.
Why the topic needs it. This is the whole reason score-based models exist: the score of the landscape is knowable even when the landscape's total volume Z is not.
That single line is the entire parent topic in one object. Everything after it — score matching, noise levels, Langevin sampling — is how we estimate this arrow field and how we walk along it.