CS PAPERS DEEP-READ · PAPER 28

Denoising Diffusion Probabilistic Models (DDPM)

Ho, Jain & Abbeel · UC Berkeley · NeurIPS 2020

中文 →

What did this paper do?

Today you can type a sentence and watch an AI paint a picture — Midjourney, Stable Diffusion, DALL·E. The machinery underneath is called a diffusion model. In 2020, three people at Berkeley (Ho, Jain, Abbeel) wrote this paper, DDPM, and made an old idea finally work: let a machine start from a screenful of TV static and slowly rub a photograph out of it — a photograph of something that never existed. It was the first time this approach beat the reigning champion on picture quality, and nearly every AI image and video product since has been built on it.

An analogy

Before this, the dominant way to teach a machine to paint was forger versus inspector: one network fakes pictures, the other calls out the fakes, and the two fight their way to competence. The pictures came out gorgeous, but training was a tightrope walk — tip the balance slightly and it collapses — and the forger often learned to paint only a handful of things.

DDPM took a completely different route, one that is almost funny in its plainness: learn to destroy first, then play the tape backwards.

The idea: split one hard job into a thousand easy ones

Take a sharp photo and sprinkle a thin layer of sand over it. Then another layer, and another. After a thousand layers the photo is gone — nothing but static. Nobody needs to learn how to do that; ruining a picture is free.

Here's the point: play that tape backwards and you have a photograph growing out of static. "Paint a picture from nothing" is impossibly hard, but "brush off the one thin layer of sand that was just sprinkled on" is easy. The hard job has been cut into a thousand nearly thoughtless small ones — and the small one is all the machine ever has to learn.

All it ever learns is: spot the sand

Training is almost cheating in its simplicity. Take a real photo, pick a grubbiness level at random, and sprinkle that much sand on in one go — and because we sprinkled it ourselves, we are holding the answer key. Hand the network the dirty picture along with "this is grubbiness level 400" and ask it exactly one question: what does the sand on here look like? It points; we compare against the answer key; we nudge it. No opponent, no game — one fill-in-the-blank question with a known answer. That is why it trains so calmly.

Generation runs the same machinery backwards. Grab a fistful of static, ask "which of this is sand," subtract a little, ask again, subtract again — a thousand rounds later, a photograph nobody ever took has surfaced. Why does something new come out instead of one of the training photos? Because the starting point is a random fistful of static, and each step only pushes the picture a little way toward "looking more like a real photograph." Different start, different ending — like staring at clouds: the clouds are random, but you always end up seeing something specific in them.

What it bought us

No more tightrope: training is stable, and the pictures come out both varied and clean. On the same dataset it overtook the best adversarial model of its day. More importantly the recipe kept growing — bolt on "brush according to this text description" and you get the type-and-get-a-picture products of today; video generation runs on the same idea.

The honest cost is a single line, but a heavy one: producing one picture means running the network back and forth a thousand times, hundreds of times slower than the one-shot rival it beat. Much of the follow-up research since has been about squeezing those thousand steps down to a few dozen.

Remember one thing

Turn "paint a picture from nothing" inside out: take a thousand small steps to sprinkle a photo into static (no learning needed), then train a network to do one job — spot the noise added at each step. To generate, start from random static and repeatedly subtract the noise the network points at, and a picture grows. Stable to train, diverse in output; the price is a thousand passes per image.

Want the noising/denoising chain diagram, the objective, and the numbers? → Switch to the deep read