{"version":1,"lectureId":"01M14TYPR7X214TNQ14P2BSS4N","attempt":0,"publication":{"slug":"diffusion-models-learning-to-denoise","title":"Diffusion Models: From Noise to Images","subject":"machine-learning","summary":"A first-principles introduction to image diffusion for viewers who already understand neural networks. The lecture corrupts a clean image through calibrated Gaussian steps, derives the direct forward formula, and turns the known corruption into supervised noise prediction. It then samples in reverse from pure noise, showing broad structure appearing before edges and texture, before adding text conditioning and classifier-free guidance. The final comparison explains why stronger guidance can improve prompt adherence while reducing diversity and eventually harming naturalness.","metaDescription":"Learn how diffusion models add noise, train a supervised noise predictor, reverse the process, and steer images with text guidance.","transcript":"A diffusion model learns to generate images by first studying a much easier operation: destroying them. We will take one clean training image, add a little random noise, repeat that operation many times, and then ask what a neural network would need to learn in order to reverse it. Here is our clean data example. I am using a simple landscape so that its large shapes and small details are easy to track. In a real training set, this position would hold an ordinary photograph represented by a tensor of pixel values. Call that image x zero. The subscript does not name a pixel. It names a time in a corruption process, with time zero meaning that no artificial noise has yet been added. Now take one small step. Add an independent random value to every pixel, while retaining almost all of the image that was already there. One step would be difficult to notice, so this first comparison shows the effect after one hundred such steps. The house, mountains, horizon, and sun are still recognizable. But local pixel values have begun to wander. The corruption is not a blur that only removes high frequencies. It is random noise entering throughout the image. Continue to step four hundred. More of the observed tensor now comes from noise, and less comes from the original image. The broad composition survives, while windows, roof edges, and smaller color boundaries become unreliable. Push farther. By step seven hundred, the random component dominates most local evidence. You may still infer that something large sits near the center, but the image itself no longer supports confident object recognition. Near the end, even those weak global clues disappear. The process has not replaced the image with one fixed gray card. Every run ends in a different random tensor whose values follow a simple Gaussian distribution. That final simplicity is deliberate. Natural images occupy a complicated and highly structured part of pixel space. Standard Gaussian noise is a distribution we can sample immediately, without knowing anything about cats, houses, faces, or landscapes. So the forward process builds a bridge between two distributions. At one end are real images from the training data. At the other end is nearly pure Gaussian noise, which is easy to manufacture whenever we want a new sample. Write the bridge as a chain. We begin at x zero, take one random transition to x one, another to x two, and continue until x T. This is called the forward process. Forward refers to the direction from data toward noise. It is not the direction in which images are generated, and it does not require a neural network. We choose the corruption rule ourselves. That means we know exactly how much signal and how much random disturbance appear at every step. The entire forward chain can be simulated on demand from any training image. At the chosen final time, x T is approximately a standard Gaussian tensor. The approximation matters: schedules are designed so that almost no usable information about x zero remains, while the endpoint is numerically well behaved. One subtlety is worth fixing now. We do not repeatedly add raw noise without restraint, because the variance would grow without bound. Each step slightly reduces the existing signal while adding a calibrated amount of fresh noise. That calibration gives us clean algebra, stable scales, and a known target at every noise level. Those three facts will turn image generation into a supervised learning problem rather than a demand that a network invent an entire image in one unexplained leap. Now let us make one forward step precise. Choose a small positive number beta t. This is the noise schedule at step t, and it controls how much new uncertainty enters during that transition. Define alpha t as one minus beta t. When beta is small, alpha is close to one, which is the algebraic statement that a single step should preserve most of its input. The next image has two ingredients. Multiply the current image by square root alpha t, then add an independent standard Gaussian tensor multiplied by square root one minus alpha t. Those square roots are not decorative. Variances scale with the square of a multiplier, so this choice keeps the total variance controlled as signal is exchanged for noise. The same statement can be written as a conditional distribution. Given x t minus one, x t is Gaussian. Its mean is the slightly reduced image, and its covariance is one minus alpha t times the identity. Every pixel channel receives independent Gaussian disturbance in this basic formulation. The image structure comes from the mean, while the covariance tells us how widely the next sample may wander around that mean. A remarkable simplification appears when we compose many of these Gaussian steps. Begin with the one-step rule we just wrote. Substitute the rule for x t minus one. The surviving signal multipliers multiply, while the independent Gaussian terms combine into another Gaussian term. Repeat all the way back to x zero. Define alpha bar t as the product of every alpha up to time t. The result is the closed form. At any chosen time t, x t equals square root alpha bar t times the clean image, plus square root one minus alpha bar t times one standard Gaussian tensor. This means training never needs to simulate all earlier corruption steps. Sample a time t, sample one epsilon, and construct x t directly from the original image. The picture on the right is a toy two-dimensional version of that mixture. Blue is a fixed signal vector, red is a fixed noise vector, and yellow is the noisy observation formed from both. At a low noise fraction, yellow stays close to the blue signal. The noise changes it, but signal still controls the result. Increase the noise fraction. The blue contribution shrinks, the red contribution gains weight, and the observed vector turns away from its original direction. Near the end, almost all reliable information comes from epsilon. The original signal has not been abruptly deleted. Its coefficient has been driven close to zero by the accumulated schedule. A useful summary is the signal-to-noise ratio. Signal power is alpha bar t, noise power is one minus alpha bar t, so their ratio falls as t increases. Keep three meanings attached to the notation. Beta t controls the fresh noise in one transition. Alpha bar t records the signal surviving from the original image. And the closed form lets one epsilon produce any desired training noise level. We chose every part of this corruption process. Therefore, for each noisy image, we know the clean source, the time, and the exact random tensor that was mixed in. That is the opening a supervised learner needs. The forward process gives us noisy images, but training still needs a target. What should the neural network predict when it receives a noisy image x t and the time t? One tempting answer is the clean image x zero. Some diffusion parameterizations do predict clean data or a related quantity. But the most common first formulation asks for something even more directly known: the noise epsilon that we sampled ourselves. Here is the complete learning problem as a pipeline. Begin with a clean training image x zero. Independently sample a Gaussian noise tensor epsilon. It has exactly the same shape as the image tensor, with one random value for every channel and spatial location. Choose a time t, read the schedule coefficients at that time, and combine the clean image with epsilon to construct x t. We now possess both the input and the label. Feed x t and t to a neural network. The time input matters because the same visible pattern means something different at a low noise level and at a high one. The network returns a tensor with the image's shape. Call it epsilon hat, the network's estimate of the particular noise tensor used to create this example. Compare epsilon hat with the known epsilon using squared error. Pixel by pixel and channel by channel, the loss penalizes disagreement between the generated label and the prediction. Then backpropagate through the denoising network exactly as in ordinary supervised learning. The parameters move in the direction that reduces expected noise-prediction error. There is no human annotation step. Labels are free because the forward process manufactured them. Yet the statistical structure is completely supervised: each input is paired with a definite target tensor. Let us run one training example in the order an implementation uses. First, select a clean image from the data set. Second, choose a time uniformly from the allowed diffusion steps. Across training, this makes the same network practise very light denoising, medium denoising, and recovery from extremely noisy inputs. Third, draw a fresh Gaussian epsilon. Because it is newly sampled, the same clean image can generate unlimited distinct supervised examples. Fourth, use the closed-form forward equation to construct x t directly. There is no need to execute every earlier noise step. Fifth, ask the network for epsilon and compare it with the sampled target. Repeat with new images, times, and noise tensors until the predictor works across the entire schedule. The equations say the same thing compactly. Sample t uniformly from one through T. Sample epsilon from a standard Gaussian. This epsilon is randomness, but once sampled it becomes an exact observed label. Mix x zero and epsilon using the schedule at t. The result x t is the network input. The network receives x t and t, and predicts epsilon hat. In image models, this predictor is often a convolutional network or transformer with multiscale spatial features, but its architecture does not change the learning target. Finally minimize expected squared error. Expectations mean that we average over clean images, sampled times, and sampled noise. Standard minibatches approximate that average. Now compare this with demanding a finished image directly. A random seed does not come with one uniquely correct photograph. Many outputs could be plausible, so ordinary squared error has no single natural target. Noise prediction is different. We chose the clean image, chose t, sampled epsilon, and computed x t. The exact epsilon is therefore a valid label for that exact input. The network is still learning something profound. To identify which fluctuations are noise, it must learn what natural image structure looks like at every scale. But the optimization interface remains an ordinary supervised regression problem. Once that predictor is accurate, we can present a noisy tensor, estimate the disturbance hidden inside it, and take a carefully calibrated step toward a cleaner tensor. Repeating that operation is the generative process. Generation begins at the endpoint of the forward process. Sample x T directly from standard Gaussian noise. There is no hidden photograph underneath this particular tensor, because we did not obtain it by corrupting a data image. Ask the trained network which part of this tensor looks like noise at time T. Then use the reverse transition to produce x T minus one, a sample expected to contain very slightly more image structure. One step is not supposed to reveal a finished picture. Training taught the network a family of modest corrections, one for every noise level. Image generation comes from composing those corrections. After many early reverse steps, broad statistical organization appears. Large regions begin to behave like sky and ground. A horizon and mountain mass can emerge even though individual pixels remain highly uncertain. Continue through medium noise levels. The process commits to object-scale structure: a bright region in the sky, a building-sized block, and a roof shape. These are global decisions about composition rather than finished texture. This ordering is typical, not an absolute law. High-noise inputs preserve little local evidence, so early reverse steps mainly settle low-frequency, large-scale relationships. Fine edges become recoverable only after the broader image has stabilized. At lower noise, edges sharpen. The network can now distinguish a wall from its windows, a roof boundary from the sky, and one contour from a nearby contour. The last steps make smaller corrections. They adjust local contrast, texture, color consistency, and tiny geometric details while preserving the composition chosen earlier. The completed image is not retrieved from a training record. It is one sample reached by starting at a newly drawn noise tensor and following the learned reverse dynamics. A second initial noise tensor would usually produce a different landscape, arrangement, or object identity. Randomness at the start supplies diversity, while the learned denoiser keeps the trajectory near the distribution of natural images. Now inspect one reverse step. First, the neural network predicts epsilon hat t from the current noisy image and the current time. The reverse mean uses that prediction with coefficients derived from the same forward schedule. The long expression is calibrated subtraction, not simply x t minus epsilon hat. Why the coefficients? The forward process scaled both signal and noise at every transition. A valid reverse step must undo that scaling while estimating which component belongs to the clean-image direction. For a standard stochastic diffusion sampler, add a calibrated Gaussian term sigma t z. This does not carelessly put back the noise we removed. It represents uncertainty in which slightly cleaner image could have produced the current one. That uncertainty can also be handled by deterministic trajectories or by samplers using fewer, larger numerical steps. These are alternative ways to traverse a learned denoising field. The central model is still the time-dependent predictor trained on noisy images. The full sampling algorithm is now short enough to read as a loop. Start by drawing x T from a standard Gaussian. At the current time, run the network once to predict the noise component. Use that prediction and the schedule to sample a slightly cleaner state. The state remains noisy unless t is already near zero. Decrease t and repeat. The same network is reused at every step, with its time input telling it which denoising regime is required. At zero, the state is interpreted as an image sample. Pure noise supplied the initial randomness; the learned sequence of local reverse decisions supplied recognizable structure. We can now generate plausible images, but we have not told the model which plausible image we want. The final ingredient is conditioning, where a text prompt steers the same denoising process toward a chosen description. To request a particular image, add a condition c. Let the prompt be: a red sailboat at sunset. The reverse process remains a sequence of denoising steps, but every prediction may now depend on that description. A text encoder converts the prompt into a sequence of learned vectors. These vectors represent tokens and their relationships, rather than a single hand-written list of visual rules. The noisy image x t enters the denoiser as before. Time t still tells the network how much corruption to expect. Text features also enter the denoising network. In common architectures, cross-attention lets spatial image features query the token sequence. A region beginning to resemble a boat can therefore respond strongly to the boat token. The output is still a noise estimate, not a finished image. Conditioning changes which noise the model predicts should be removed from a sample compatible with the prompt. This distinction keeps the generative mechanism unified. An unconditional model and a text-conditioned model both perform learned reverse diffusion. The condition changes the direction of each local step. At an early, very noisy step, prompt information mainly influences global choices. The words sailboat and sunset can affect composition, object category, and broad color relationships before any rope or edge exists. At later steps, the same conditioning can influence finer details: the outline of a sail, reflections on water, and local texture. The condition is available throughout the trajectory, but what it can usefully control changes with the noise level. During training, the model sees image and text pairs. The noise target is still known exactly, so conditioning does not destroy the supervised objective. It adds information the predictor may use to estimate epsilon. A plain conditional prediction may follow the text, but practitioners often want a stronger response. Classifier-free guidance supplies a controllable way to amplify the prompt's influence without training a separate image classifier. The method asks the same network for two predictions. First, run it with an empty condition. This estimates how the sample should denoise without knowing the prompt. Second, run it with condition c. This prediction includes both general image knowledge and the influence of the text. Subtract the unconditional prediction from the conditional one. The difference points toward a denoising decision that makes the current sample more compatible with the prompt. Here is the guidance formula. Start with the unconditional prediction. Then multiply the conditional direction by a guidance strength w and add it. At w equal to zero, the conditional direction contributes nothing. At w equal to one, the formula returns the ordinary conditional prediction. Values above one extrapolate beyond it. The three pictures are a schematic comparison from the same prompt. With zero guidance, the model can produce a plausible image while largely ignoring the requested sailboat. At one, the ordinary conditional prediction introduces the requested boat and sunset while retaining the model's natural range of possible compositions. Turn guidance much higher and prompt features are pushed harder. The boat may become more unmistakable, colors more forceful, and composition more literal. But stronger is not simply better. Extrapolation can move the trajectory away from the distribution on which the denoiser was trained. Excessive guidance may create harsh contrast, repeated edges, distorted geometry, or artificial texture. It also reduces diversity. If the conditional direction is amplified on every sample, different initial noise tensors are pulled toward a narrower set of prompt-compatible solutions. So guidance strength controls a tradeoff. Turning it up usually improves literal prompt adherence, but tends to sacrifice variation and can eventually sacrifice naturalness and image quality. There is no universal best number. The useful range depends on the model, its training, the sampler, the prompt, and the desired balance between faithfulness and variety. Now the complete diffusion story fits into four steps. First, define a forward process that turns real images into known Gaussian noise. Second, create supervised examples by sampling a clean image, a time, and epsilon. Train a neural network to predict that exact epsilon from the noisy image and time. Third, generate by starting from fresh Gaussian noise and applying learned reverse steps. Large-scale structure usually settles before fine detail because the available information changes across noise levels. Fourth, condition the denoiser on text. Classifier-free guidance amplifies the conditional direction, trading diversity and eventually naturalness for stronger prompt adherence. The central trick is therefore not that one network learns to paint an image in a single leap. It learns a supervised family of noise-removal decisions, and generation emerges when those modest decisions are chained from randomness all the way to an image.","watch":{"version":1,"scenes":[{"title":"The Forward Process","start":0,"end":249.388,"objects":{"card":"a Title that says \"Generative Deep Learning — Diffusion Models: From Noise to Images\"","chain":"a Math [text] that says \"$x_0 arrow.r x_1 arrow.r x_2 arrow.r dots arrow.r x_T$\"","clean_caption":"a Math [text] that says \"$x_0$\"","destination":"a Math [text] that says \"$x_T approx epsilon, quad epsilon in cal(N)(0,I)$\"","heading_chain":"a Heading that says \"The Forward Chain\"","heading_first":"a Heading that says \"A Clean Image, Corrupted Gradually\"","heading_later":"a Heading that says \"Eventually the Signal Disappears\"","heavy_caption":"a Math [text] that says \"$x_700$\"","light_caption":"a Math [text] that says \"$x_100$\"","middle_caption":"a Math [text] that says \"$x_400$\"","noise_caption":"a Math [text] that says \"$x_T$\"","parts":"a Polygon [blue] drawn in picture (vertices=((0.0, 2.0), (8.0, 2.0), (8.0, 6.0), (0.0, 6.0)), fill_opacity=0.34)","parts_10":"a Polygon [cyan] drawn in picture (vertices=((5.86, 1.82), (6.26, 1.82), (6.26, 2.2), (5.86, 2.2)), fill_opacity=0.9)","parts_11":"a Polygon [blue] drawn in picture_2 (vertices=((0.0, 2.0), (8.0, 2.0), (8.0, 6.0), (0.0, 6.0)), fill_opacity=0.34)","parts_12":"a Polygon [green] drawn in picture_2 (vertices=((0.0, 0.0), (8.0, 0.0), (8.0, 2.0), (0.0, 2.0)), fill_opacity=0.4)","parts_13":"a Polygon [gray] drawn in picture_2 (vertices=((0.0, 2.0), (2.3, 4.7), (4.0, 2.0)), fill_opacity=0.65)","parts_14":"a Polygon [gray] drawn in picture_2 (vertices=((2.0, 2.0), (4.8, 5.1), (7.1, 2.0)), fill_opacity=0.48)","parts_15":"a Circle [yellow] drawn in picture_2 (center=(6.7, 4.9), radius=0.52, filled=True)","parts_16":"a Polygon [red] drawn in picture_2 (vertices=((4.7, 0.9), (6.5, 0.9), (6.5, 2.5), (4.7, 2.5)), fill_opacity=0.72)","parts_17":"a Polygon [yellow] drawn in picture_2 (vertices=((4.4, 2.5), (5.6, 3.45), (6.8, 2.5)), fill_opacity=0.72)","parts_18":"a Polygon [gray] drawn in picture_2 (vertices=((5.42, 0.9), (5.82, 0.9), (5.82, 1.72), (5.42, 1.72)), fill_opacity=0.85)","parts_19":"a Polygon [cyan] drawn in picture_2 (vertices=((4.98, 1.82), (5.38, 1.82), (5.38, 2.2), (4.98, 2.2)), fill_opacity=0.9)","parts_2":"a Polygon [green] drawn in picture (vertices=((0.0, 0.0), (8.0, 0.0), (8.0, 2.0), (0.0, 2.0)), fill_opacity=0.4)","parts_20":"a Polygon [cyan] drawn in picture_2 (vertices=((5.86, 1.82), (6.26, 1.82), (6.26, 2.2), (5.86, 2.2)), fill_opacity=0.9)","parts_21":"a Polygon [blue] drawn in picture_3 (vertices=((0.0, 2.0), (8.0, 2.0), (8.0, 6.0), (0.0, 6.0)), fill_opacity=0.34)","parts_22":"a Polygon [green] drawn in picture_3 (vertices=((0.0, 0.0), (8.0, 0.0), (8.0, 2.0), (0.0, 2.0)), fill_opacity=0.4)","parts_23":"a Polygon [gray] drawn in picture_3 (vertices=((0.0, 2.0), (2.3, 4.7), (4.0, 2.0)), fill_opacity=0.65)","parts_24":"a Polygon [gray] drawn in picture_3 (vertices=((2.0, 2.0), (4.8, 5.1), (7.1, 2.0)), fill_opacity=0.48)","parts_25":"a Circle [yellow] drawn in picture_3 (center=(6.7, 4.9), radius=0.52, filled=True)","parts_26":"a Polygon [red] drawn in picture_3 (vertices=((4.7, 0.9), (6.5, 0.9), (6.5, 2.5), (4.7, 2.5)), fill_opacity=0.72)","parts_27":"a Polygon [yellow] drawn in picture_3 (vertices=((4.4, 2.5), (5.6, 3.45), (6.8, 2.5)), fill_opacity=0.72)","parts_28":"a Polygon [gray] drawn in picture_3 (vertices=((5.42, 0.9), (5.82, 0.9), (5.82, 1.72), (5.42, 1.72)), fill_opacity=0.85)","parts_29":"a Polygon [cyan] drawn in picture_3 (vertices=((4.98, 1.82), (5.38, 1.82), (5.38, 2.2), (4.98, 2.2)), fill_opacity=0.9)","parts_3":"a Polygon [gray] drawn in picture (vertices=((0.0, 2.0), (2.3, 4.7), (4.0, 2.0)), fill_opacity=0.65)","parts_30":"a Polygon [cyan] drawn in picture_3 (vertices=((5.86, 1.82), (6.26, 1.82), (6.26, 2.2), (5.86, 2.2)), fill_opacity=0.9)","parts_31":"a Polygon [blue] drawn in picture_4 (vertices=((0.0, 2.0), (8.0, 2.0), (8.0, 6.0), (0.0, 6.0)), fill_opacity=0.34)","parts_32":"a Polygon [green] drawn in picture_4 (vertices=((0.0, 0.0), (8.0, 0.0), (8.0, 2.0), (0.0, 2.0)), fill_opacity=0.4)","parts_33":"a Polygon [gray] drawn in picture_4 (vertices=((0.0, 2.0), (2.3, 4.7), (4.0, 2.0)), fill_opacity=0.65)","parts_34":"a Polygon [gray] drawn in picture_4 (vertices=((2.0, 2.0), (4.8, 5.1), (7.1, 2.0)), fill_opacity=0.48)","parts_35":"a Circle [yellow] drawn in picture_4 (center=(6.7, 4.9), radius=0.52, filled=True)","parts_36":"a Polygon [red] drawn in picture_4 (vertices=((4.7, 0.9), (6.5, 0.9), (6.5, 2.5), (4.7, 2.5)), fill_opacity=0.72)","parts_37":"a Polygon [yellow] drawn in picture_4 (vertices=((4.4, 2.5), (5.6, 3.45), (6.8, 2.5)), fill_opacity=0.72)","parts_38":"a Polygon [gray] drawn in picture_4 (vertices=((5.42, 0.9), (5.82, 0.9), (5.82, 1.72), (5.42, 1.72)), fill_opacity=0.85)","parts_39":"a Polygon [cyan] drawn in picture_4 (vertices=((4.98, 1.82), (5.38, 1.82), (5.38, 2.2), (4.98, 2.2)), fill_opacity=0.9)","parts_4":"a Polygon [gray] drawn in picture (vertices=((2.0, 2.0), (4.8, 5.1), (7.1, 2.0)), fill_opacity=0.48)","parts_40":"a Polygon [cyan] drawn in picture_4 (vertices=((5.86, 1.82), (6.26, 1.82), (6.26, 2.2), (5.86, 2.2)), fill_opacity=0.9)","parts_41":"a Polygon [blue] drawn in picture_5 (vertices=((0.0, 2.0), (8.0, 2.0), (8.0, 6.0), (0.0, 6.0)), fill_opacity=0.34)","parts_42":"a Polygon [green] drawn in picture_5 (vertices=((0.0, 0.0), (8.0, 0.0), (8.0, 2.0), (0.0, 2.0)), fill_opacity=0.4)","parts_43":"a Polygon [gray] drawn in picture_5 (vertices=((0.0, 2.0), (2.3, 4.7), (4.0, 2.0)), fill_opacity=0.65)","parts_44":"a Polygon [gray] drawn in picture_5 (vertices=((2.0, 2.0), (4.8, 5.1), (7.1, 2.0)), fill_opacity=0.48)","parts_45":"a Circle [yellow] drawn in picture_5 (center=(6.7, 4.9), radius=0.52, filled=True)","parts_46":"a Polygon [red] drawn in picture_5 (vertices=((4.7, 0.9), (6.5, 0.9), (6.5, 2.5), (4.7, 2.5)), fill_opacity=0.72)","parts_47":"a Polygon [yellow] drawn in picture_5 (vertices=((4.4, 2.5), (5.6, 3.45), (6.8, 2.5)), fill_opacity=0.72)","parts_48":"a Polygon [gray] drawn in picture_5 (vertices=((5.42, 0.9), (5.82, 0.9), (5.82, 1.72), (5.42, 1.72)), fill_opacity=0.85)","parts_49":"a Polygon [cyan] drawn in picture_5 (vertices=((4.98, 1.82), (5.38, 1.82), (5.38, 2.2), (4.98, 2.2)), fill_opacity=0.9)","parts_5":"a Circle [yellow] drawn in picture (center=(6.7, 4.9), radius=0.52, filled=True)","parts_50":"a Polygon [cyan] drawn in picture_5 (vertices=((5.86, 1.82), (6.26, 1.82), (6.26, 2.2), (5.86, 2.2)), fill_opacity=0.9)","parts_6":"a Polygon [red] drawn in picture (vertices=((4.7, 0.9), (6.5, 0.9), (6.5, 2.5), (4.7, 2.5)), fill_opacity=0.72)","parts_7":"a Polygon [yellow] drawn in picture (vertices=((4.4, 2.5), (5.6, 3.45), (6.8, 2.5)), fill_opacity=0.72)","parts_8":"a Polygon [gray] drawn in picture (vertices=((5.42, 0.9), (5.82, 0.9), (5.82, 1.72), (5.42, 1.72)), fill_opacity=0.85)","parts_9":"a Polygon [cyan] drawn in picture (vertices=((4.98, 1.82), (5.38, 1.82), (5.38, 2.2), (4.98, 2.2)), fill_opacity=0.9)","picture":"a Figure (x_range=(0.0, 8.0), y_range=(0.0, 6.0), aspect=(4.0, 3.0))","picture_2":"a Figure (x_range=(0.0, 8.0), y_range=(0.0, 6.0), aspect=(4.0, 3.0))","picture_3":"a Figure (x_range=(0.0, 8.0), y_range=(0.0, 6.0), aspect=(4.0, 3.0))","picture_4":"a Figure (x_range=(0.0, 8.0), y_range=(0.0, 6.0), aspect=(4.0, 3.0))","picture_5":"a Figure (x_range=(0.0, 8.0), y_range=(0.0, 6.0), aspect=(4.0, 3.0))","polygon":"a Polygon [red] drawn in picture_2 (vertices=((0, 0), (1.0, 0), (1.0, 1.0), (0, 1.0)), fill_opacity=0.25)","polygon_10":"a Polygon [magenta] drawn in picture_2 (vertices=((1, 1), (2.0, 1), (2.0, 2.0), (1, 2.0)), fill_opacity=0.25)","polygon_100":"a Polygon [red] drawn in picture_5 (vertices=((3, 3), (4.0, 3), (4.0, 4.0), (3, 4.0)), fill_opacity=1.0)","polygon_101":"a Polygon [blue] drawn in picture_5 (vertices=((4, 5), (5.0, 5), (5.0, 6.0), (4, 6.0)), fill_opacity=1.0)","polygon_102":"a Polygon [red] drawn in picture_5 (vertices=((5, 1), (6.0, 1), (6.0, 2.0), (5, 2.0)), fill_opacity=1.0)","polygon_103":"a Polygon [blue] drawn in picture_5 (vertices=((6, 3), (7.0, 3), (7.0, 4.0), (6, 4.0)), fill_opacity=1.0)","polygon_104":"a Polygon [red] drawn in picture_5 (vertices=((7, 5), (8.0, 5), (8.0, 6.0), (7, 6.0)), fill_opacity=1.0)","polygon_105":"a Polygon [magenta] drawn in picture_5 (vertices=((0, 2), (1.0, 2), (1.0, 3.0), (0, 3.0)), fill_opacity=1.0)","polygon_106":"a Polygon [green] drawn in picture_5 (vertices=((1, 4), (2.0, 4), (2.0, 5.0), (1, 5.0)), fill_opacity=1.0)","polygon_107":"a Polygon [magenta] drawn in picture_5 (vertices=((2, 0), (3.0, 0), (3.0, 1.0), (2, 1.0)), fill_opacity=1.0)","polygon_108":"a Polygon [green] drawn in picture_5 (vertices=((3, 2), (4.0, 2), (4.0, 3.0), (3, 3.0)), fill_opacity=1.0)","polygon_109":"a Polygon [magenta] drawn in picture_5 (vertices=((4, 4), (5.0, 4), (5.0, 5.0), (4, 5.0)), fill_opacity=1.0)","polygon_11":"a Polygon [red] drawn in picture_3 (vertices=((0, 0), (1.0, 0), (1.0, 1.0), (0, 1.0)), fill_opacity=0.48)","polygon_110":"a Polygon [green] drawn in picture_5 (vertices=((5, 0), (6.0, 0), (6.0, 1.0), (5, 1.0)), fill_opacity=1.0)","polygon_111":"a Polygon [magenta] drawn in picture_5 (vertices=((6, 2), (7.0, 2), (7.0, 3.0), (6, 3.0)), fill_opacity=1.0)","polygon_112":"a Polygon [green] drawn in picture_5 (vertices=((7, 4), (8.0, 4), (8.0, 5.0), (7, 5.0)), fill_opacity=1.0)","polygon_113":"a Polygon [gray] drawn in picture_5 (vertices=((0, 1), (1.0, 1), (1.0, 2.0), (0, 2.0)), fill_opacity=1.0)","polygon_114":"a Polygon [yellow] drawn in picture_5 (vertices=((1, 3), (2.0, 3), (2.0, 4.0), (1, 4.0)), fill_opacity=1.0)","polygon_115":"a Polygon [gray] drawn in picture_5 (vertices=((2, 5), (3.0, 5), (3.0, 6.0), (2, 6.0)), fill_opacity=1.0)","polygon_116":"a Polygon [yellow] drawn in picture_5 (vertices=((3, 1), (4.0, 1), (4.0, 2.0), (3, 2.0)), fill_opacity=1.0)","polygon_117":"a Polygon [gray] drawn in picture_5 (vertices=((4, 3), (5.0, 3), (5.0, 4.0), (4, 4.0)), fill_opacity=1.0)","polygon_118":"a Polygon [yellow] drawn in picture_5 (vertices=((5, 5), (6.0, 5), (6.0, 6.0), (5, 6.0)), fill_opacity=1.0)","polygon_119":"a Polygon [gray] drawn in picture_5 (vertices=((6, 1), (7.0, 1), (7.0, 2.0), (6, 2.0)), fill_opacity=1.0)","polygon_12":"a Polygon [blue] drawn in picture_3 (vertices=((1, 2), (2.0, 2), (2.0, 3.0), (1, 3.0)), fill_opacity=0.48)","polygon_120":"a Polygon [yellow] drawn in picture_5 (vertices=((7, 3), (8.0, 3), (8.0, 4.0), (7, 4.0)), fill_opacity=1.0)","polygon_13":"a Polygon [red] drawn in picture_3 (vertices=((2, 4), (3.0, 4), (3.0, 5.0), (2, 5.0)), fill_opacity=0.48)","polygon_14":"a Polygon [blue] drawn in picture_3 (vertices=((3, 0), (4.0, 0), (4.0, 1.0), (3, 1.0)), fill_opacity=0.48)","polygon_15":"a Polygon [red] drawn in picture_3 (vertices=((4, 2), (5.0, 2), (5.0, 3.0), (4, 3.0)), fill_opacity=0.48)","polygon_16":"a Polygon [blue] drawn in picture_3 (vertices=((5, 4), (6.0, 4), (6.0, 5.0), (5, 5.0)), fill_opacity=0.48)","polygon_17":"a Polygon [red] drawn in picture_3 (vertices=((6, 0), (7.0, 0), (7.0, 1.0), (6, 1.0)), fill_opacity=0.48)","polygon_18":"a Polygon [blue] drawn in picture_3 (vertices=((7, 2), (8.0, 2), (8.0, 3.0), (7, 3.0)), fill_opacity=0.48)","polygon_19":"a Polygon [green] drawn in picture_3 (vertices=((0, 5), (1.0, 5), (1.0, 6.0), (0, 6.0)), fill_opacity=0.48)","polygon_2":"a Polygon [blue] drawn in picture_2 (vertices=((1, 2), (2.0, 2), (2.0, 3.0), (1, 3.0)), fill_opacity=0.25)","polygon_20":"a Polygon [magenta] drawn in picture_3 (vertices=((1, 1), (2.0, 1), (2.0, 2.0), (1, 2.0)), fill_opacity=0.48)","polygon_21":"a Polygon [green] drawn in picture_3 (vertices=((2, 3), (3.0, 3), (3.0, 4.0), (2, 4.0)), fill_opacity=0.48)","polygon_22":"a Polygon [magenta] drawn in picture_3 (vertices=((3, 5), (4.0, 5), (4.0, 6.0), (3, 6.0)), fill_opacity=0.48)","polygon_23":"a Polygon [green] drawn in picture_3 (vertices=((4, 1), (5.0, 1), (5.0, 2.0), (4, 2.0)), fill_opacity=0.48)","polygon_24":"a Polygon [magenta] drawn in picture_3 (vertices=((5, 3), (6.0, 3), (6.0, 4.0), (5, 4.0)), fill_opacity=0.48)","polygon_25":"a Polygon [green] drawn in picture_3 (vertices=((6, 5), (7.0, 5), (7.0, 6.0), (6, 6.0)), fill_opacity=0.48)","polygon_26":"a Polygon [magenta] drawn in picture_3 (vertices=((7, 1), (8.0, 1), (8.0, 2.0), (7, 2.0)), fill_opacity=0.48)","polygon_27":"a Polygon [yellow] drawn in picture_3 (vertices=((0, 4), (1.0, 4), (1.0, 5.0), (0, 5.0)), fill_opacity=0.48)","polygon_28":"a Polygon [gray] drawn in picture_3 (vertices=((1, 0), (2.0, 0), (2.0, 1.0), (1, 1.0)), fill_opacity=0.48)","polygon_29":"a Polygon [yellow] drawn in picture_3 (vertices=((2, 2), (3.0, 2), (3.0, 3.0), (2, 3.0)), fill_opacity=0.48)","polygon_3":"a Polygon [red] drawn in picture_2 (vertices=((2, 4), (3.0, 4), (3.0, 5.0), (2, 5.0)), fill_opacity=0.25)","polygon_30":"a Polygon [gray] drawn in picture_3 (vertices=((3, 4), (4.0, 4), (4.0, 5.0), (3, 5.0)), fill_opacity=0.48)","polygon_31":"a Polygon [yellow] drawn in picture_3 (vertices=((4, 0), (5.0, 0), (5.0, 1.0), (4, 1.0)), fill_opacity=0.48)","polygon_32":"a Polygon [gray] drawn in picture_3 (vertices=((5, 2), (6.0, 2), (6.0, 3.0), (5, 3.0)), fill_opacity=0.48)","polygon_33":"a Polygon [yellow] drawn in picture_3 (vertices=((6, 4), (7.0, 4), (7.0, 5.0), (6, 5.0)), fill_opacity=0.48)","polygon_34":"a Polygon [gray] drawn in picture_3 (vertices=((7, 0), (8.0, 0), (8.0, 1.0), (7, 1.0)), fill_opacity=0.48)","polygon_35":"a Polygon [red] drawn in picture_4 (vertices=((0, 0), (1.0, 0), (1.0, 1.0), (0, 1.0)), fill_opacity=0.72)","polygon_36":"a Polygon [blue] drawn in picture_4 (vertices=((1, 2), (2.0, 2), (2.0, 3.0), (1, 3.0)), fill_opacity=0.72)","polygon_37":"a Polygon [red] drawn in picture_4 (vertices=((2, 4), (3.0, 4), (3.0, 5.0), (2, 5.0)), fill_opacity=0.72)","polygon_38":"a Polygon [blue] drawn in picture_4 (vertices=((3, 0), (4.0, 0), (4.0, 1.0), (3, 1.0)), fill_opacity=0.72)","polygon_39":"a Polygon [red] drawn in picture_4 (vertices=((4, 2), (5.0, 2), (5.0, 3.0), (4, 3.0)), fill_opacity=0.72)","polygon_4":"a Polygon [blue] drawn in picture_2 (vertices=((3, 0), (4.0, 0), (4.0, 1.0), (3, 1.0)), fill_opacity=0.25)","polygon_40":"a Polygon [blue] drawn in picture_4 (vertices=((5, 4), (6.0, 4), (6.0, 5.0), (5, 5.0)), fill_opacity=0.72)","polygon_41":"a Polygon [red] drawn in picture_4 (vertices=((6, 0), (7.0, 0), (7.0, 1.0), (6, 1.0)), fill_opacity=0.72)","polygon_42":"a Polygon [blue] drawn in picture_4 (vertices=((7, 2), (8.0, 2), (8.0, 3.0), (7, 3.0)), fill_opacity=0.72)","polygon_43":"a Polygon [green] drawn in picture_4 (vertices=((0, 5), (1.0, 5), (1.0, 6.0), (0, 6.0)), fill_opacity=0.72)","polygon_44":"a Polygon [magenta] drawn in picture_4 (vertices=((1, 1), (2.0, 1), (2.0, 2.0), (1, 2.0)), fill_opacity=0.72)","polygon_45":"a Polygon [green] drawn in picture_4 (vertices=((2, 3), (3.0, 3), (3.0, 4.0), (2, 4.0)), fill_opacity=0.72)","polygon_46":"a Polygon [magenta] drawn in picture_4 (vertices=((3, 5), (4.0, 5), (4.0, 6.0), (3, 6.0)), fill_opacity=0.72)","polygon_47":"a Polygon [green] drawn in picture_4 (vertices=((4, 1), (5.0, 1), (5.0, 2.0), (4, 2.0)), fill_opacity=0.72)","polygon_48":"a Polygon [magenta] drawn in picture_4 (vertices=((5, 3), (6.0, 3), (6.0, 4.0), (5, 4.0)), fill_opacity=0.72)","polygon_49":"a Polygon [green] drawn in picture_4 (vertices=((6, 5), (7.0, 5), (7.0, 6.0), (6, 6.0)), fill_opacity=0.72)","polygon_5":"a Polygon [red] drawn in picture_2 (vertices=((4, 2), (5.0, 2), (5.0, 3.0), (4, 3.0)), fill_opacity=0.25)","polygon_50":"a Polygon [magenta] drawn in picture_4 (vertices=((7, 1), (8.0, 1), (8.0, 2.0), (7, 2.0)), fill_opacity=0.72)","polygon_51":"a Polygon [yellow] drawn in picture_4 (vertices=((0, 4), (1.0, 4), (1.0, 5.0), (0, 5.0)), fill_opacity=0.72)","polygon_52":"a Polygon [gray] drawn in picture_4 (vertices=((1, 0), (2.0, 0), (2.0, 1.0), (1, 1.0)), fill_opacity=0.72)","polygon_53":"a Polygon [yellow] drawn in picture_4 (vertices=((2, 2), (3.0, 2), (3.0, 3.0), (2, 3.0)), fill_opacity=0.72)","polygon_54":"a Polygon [gray] drawn in picture_4 (vertices=((3, 4), (4.0, 4), (4.0, 5.0), (3, 5.0)), fill_opacity=0.72)","polygon_55":"a Polygon [yellow] drawn in picture_4 (vertices=((4, 0), (5.0, 0), (5.0, 1.0), (4, 1.0)), fill_opacity=0.72)","polygon_56":"a Polygon [gray] drawn in picture_4 (vertices=((5, 2), (6.0, 2), (6.0, 3.0), (5, 3.0)), fill_opacity=0.72)","polygon_57":"a Polygon [yellow] drawn in picture_4 (vertices=((6, 4), (7.0, 4), (7.0, 5.0), (6, 5.0)), fill_opacity=0.72)","polygon_58":"a Polygon [gray] drawn in picture_4 (vertices=((7, 0), (8.0, 0), (8.0, 1.0), (7, 1.0)), fill_opacity=0.72)","polygon_59":"a Polygon [blue] drawn in picture_4 (vertices=((0, 3), (1.0, 3), (1.0, 4.0), (0, 4.0)), fill_opacity=0.72)","polygon_6":"a Polygon [blue] drawn in picture_2 (vertices=((5, 4), (6.0, 4), (6.0, 5.0), (5, 5.0)), fill_opacity=0.25)","polygon_60":"a Polygon [red] drawn in picture_4 (vertices=((1, 5), (2.0, 5), (2.0, 6.0), (1, 6.0)), fill_opacity=0.72)","polygon_61":"a Polygon [blue] drawn in picture_4 (vertices=((2, 1), (3.0, 1), (3.0, 2.0), (2, 2.0)), fill_opacity=0.72)","polygon_62":"a Polygon [red] drawn in picture_4 (vertices=((3, 3), (4.0, 3), (4.0, 4.0), (3, 4.0)), fill_opacity=0.72)","polygon_63":"a Polygon [blue] drawn in picture_4 (vertices=((4, 5), (5.0, 5), (5.0, 6.0), (4, 6.0)), fill_opacity=0.72)","polygon_64":"a Polygon [red] drawn in picture_4 (vertices=((5, 1), (6.0, 1), (6.0, 2.0), (5, 2.0)), fill_opacity=0.72)","polygon_65":"a Polygon [blue] drawn in picture_4 (vertices=((6, 3), (7.0, 3), (7.0, 4.0), (6, 4.0)), fill_opacity=0.72)","polygon_66":"a Polygon [red] drawn in picture_4 (vertices=((7, 5), (8.0, 5), (8.0, 6.0), (7, 6.0)), fill_opacity=0.72)","polygon_67":"a Polygon [magenta] drawn in picture_4 (vertices=((0, 2), (1.0, 2), (1.0, 3.0), (0, 3.0)), fill_opacity=0.72)","polygon_68":"a Polygon [green] drawn in picture_4 (vertices=((1, 4), (2.0, 4), (2.0, 5.0), (1, 5.0)), fill_opacity=0.72)","polygon_69":"a Polygon [magenta] drawn in picture_4 (vertices=((2, 0), (3.0, 0), (3.0, 1.0), (2, 1.0)), fill_opacity=0.72)","polygon_7":"a Polygon [red] drawn in picture_2 (vertices=((6, 0), (7.0, 0), (7.0, 1.0), (6, 1.0)), fill_opacity=0.25)","polygon_70":"a Polygon [green] drawn in picture_4 (vertices=((3, 2), (4.0, 2), (4.0, 3.0), (3, 3.0)), fill_opacity=0.72)","polygon_71":"a Polygon [magenta] drawn in picture_4 (vertices=((4, 4), (5.0, 4), (5.0, 5.0), (4, 5.0)), fill_opacity=0.72)","polygon_72":"a Polygon [green] drawn in picture_4 (vertices=((5, 0), (6.0, 0), (6.0, 1.0), (5, 1.0)), fill_opacity=0.72)","polygon_73":"a Polygon [red] drawn in picture_5 (vertices=((0, 0), (1.0, 0), (1.0, 1.0), (0, 1.0)), fill_opacity=1.0)","polygon_74":"a Polygon [blue] drawn in picture_5 (vertices=((1, 2), (2.0, 2), (2.0, 3.0), (1, 3.0)), fill_opacity=1.0)","polygon_75":"a Polygon [red] drawn in picture_5 (vertices=((2, 4), (3.0, 4), (3.0, 5.0), (2, 5.0)), fill_opacity=1.0)","polygon_76":"a Polygon [blue] drawn in picture_5 (vertices=((3, 0), (4.0, 0), (4.0, 1.0), (3, 1.0)), fill_opacity=1.0)","polygon_77":"a Polygon [red] drawn in picture_5 (vertices=((4, 2), (5.0, 2), (5.0, 3.0), (4, 3.0)), fill_opacity=1.0)","polygon_78":"a Polygon [blue] drawn in picture_5 (vertices=((5, 4), (6.0, 4), (6.0, 5.0), (5, 5.0)), fill_opacity=1.0)","polygon_79":"a Polygon [red] drawn in picture_5 (vertices=((6, 0), (7.0, 0), (7.0, 1.0), (6, 1.0)), fill_opacity=1.0)","polygon_8":"a Polygon [blue] drawn in picture_2 (vertices=((7, 2), (8.0, 2), (8.0, 3.0), (7, 3.0)), fill_opacity=0.25)","polygon_80":"a Polygon [blue] drawn in picture_5 (vertices=((7, 2), (8.0, 2), (8.0, 3.0), (7, 3.0)), fill_opacity=1.0)","polygon_81":"a Polygon [green] drawn in picture_5 (vertices=((0, 5), (1.0, 5), (1.0, 6.0), (0, 6.0)), fill_opacity=1.0)","polygon_82":"a Polygon [magenta] drawn in picture_5 (vertices=((1, 1), (2.0, 1), (2.0, 2.0), (1, 2.0)), fill_opacity=1.0)","polygon_83":"a Polygon [green] drawn in picture_5 (vertices=((2, 3), (3.0, 3), (3.0, 4.0), (2, 4.0)), fill_opacity=1.0)","polygon_84":"a Polygon [magenta] drawn in picture_5 (vertices=((3, 5), (4.0, 5), (4.0, 6.0), (3, 6.0)), fill_opacity=1.0)","polygon_85":"a Polygon [green] drawn in picture_5 (vertices=((4, 1), (5.0, 1), (5.0, 2.0), (4, 2.0)), fill_opacity=1.0)","polygon_86":"a Polygon [magenta] drawn in picture_5 (vertices=((5, 3), (6.0, 3), (6.0, 4.0), (5, 4.0)), fill_opacity=1.0)","polygon_87":"a Polygon [green] drawn in picture_5 (vertices=((6, 5), (7.0, 5), (7.0, 6.0), (6, 6.0)), fill_opacity=1.0)","polygon_88":"a Polygon [magenta] drawn in picture_5 (vertices=((7, 1), (8.0, 1), (8.0, 2.0), (7, 2.0)), fill_opacity=1.0)","polygon_89":"a Polygon [yellow] drawn in picture_5 (vertices=((0, 4), (1.0, 4), (1.0, 5.0), (0, 5.0)), fill_opacity=1.0)","polygon_9":"a Polygon [green] drawn in picture_2 (vertices=((0, 5), (1.0, 5), (1.0, 6.0), (0, 6.0)), fill_opacity=0.25)","polygon_90":"a Polygon [gray] drawn in picture_5 (vertices=((1, 0), (2.0, 0), (2.0, 1.0), (1, 1.0)), fill_opacity=1.0)","polygon_91":"a Polygon [yellow] drawn in picture_5 (vertices=((2, 2), (3.0, 2), (3.0, 3.0), (2, 3.0)), fill_opacity=1.0)","polygon_92":"a Polygon [gray] drawn in picture_5 (vertices=((3, 4), (4.0, 4), (4.0, 5.0), (3, 5.0)), fill_opacity=1.0)","polygon_93":"a Polygon [yellow] drawn in picture_5 (vertices=((4, 0), (5.0, 0), (5.0, 1.0), (4, 1.0)), fill_opacity=1.0)","polygon_94":"a Polygon [gray] drawn in picture_5 (vertices=((5, 2), (6.0, 2), (6.0, 3.0), (5, 3.0)), fill_opacity=1.0)","polygon_95":"a Polygon [yellow] drawn in picture_5 (vertices=((6, 4), (7.0, 4), (7.0, 5.0), (6, 5.0)), fill_opacity=1.0)","polygon_96":"a Polygon [gray] drawn in picture_5 (vertices=((7, 0), (8.0, 0), (8.0, 1.0), (7, 1.0)), fill_opacity=1.0)","polygon_97":"a Polygon [blue] drawn in picture_5 (vertices=((0, 3), (1.0, 3), (1.0, 4.0), (0, 4.0)), fill_opacity=1.0)","polygon_98":"a Polygon [red] drawn in picture_5 (vertices=((1, 5), (2.0, 5), (2.0, 6.0), (1, 6.0)), fill_opacity=1.0)","polygon_99":"a Polygon [blue] drawn in picture_5 (vertices=((2, 1), (3.0, 1), (3.0, 2.0), (2, 2.0)), fill_opacity=1.0)","step_note":"a Panel that says \"Each forward step keeps most of the current image and adds a small, independent Gaussian disturbance.\""},"beats":[{"start":0,"say":"A diffusion model learns to generate images by first studying a much easier operation: destroying them. We will take one clean training image, add a little random noise, repeat that operation many times, and then ask what a neural network would need to learn in order to reverse it.","live":[],"does":[[0,"card is shown on the screen, written out."],[1.5,"card: enter:write-left-to-right."],[17.7165,"card is hidden from the screen — left the board."]]},{"start":18.9165,"say":"Here is our clean data example. I am using a simple landscape so that its large shapes and small details are easy to track. In a real training set, this position would hold an ordinary photograph represented by a tensor of pixel values.","live":null,"does":[[18.9165,"heading_first is shown on the screen, written out."],[19.764,"picture is shown on the screen, written out."],[19.764,"parts is shown on the screen, written out."],[19.764,"parts_2 is shown on the screen, written out."],[19.764,"parts_3 is shown on the screen, written out."],[19.764,"parts_4 is shown on the screen, written out."],[19.764,"parts_5 is shown on the screen, written out."],[19.764,"parts_6 is shown on the screen, written out."],[19.764,"parts_7 is shown on the screen, written out."],[19.764,"parts_8 is shown on the screen, written out."],[19.764,"parts_9 is shown on the screen, written out."],[19.764,"parts_10 is shown on the screen, written out."],[19.764,"clean_caption is shown on the screen, written out."]]},{"start":35.3995,"say":"Call that image x zero. The subscript does not name a pixel. It names a time in a corruption process, with time zero meaning that no artificial noise has yet been added.","live":["picture","clean_caption","heading_first","parts","parts_2","parts_3","parts_4","parts_5","parts_6","parts_7","parts_8","parts_9","parts_10"],"does":[[37.04800000000001,"clean_caption is indicated — a transient flash."]]},{"start":48.1435,"say":"Now take one small step. Add an independent random value to every pixel, while retaining almost all of the image that was already there. One step would be difficult to notice, so this first comparison shows the effect after one hundred such steps.","live":null,"does":[[63.527000000000015,"picture_2 is shown on the screen, written out."],[63.527000000000015,"parts_11 is shown on the screen, written out."],[63.527000000000015,"parts_12 is shown on the screen, written out."],[63.527000000000015,"parts_13 is shown on the screen, written out."],[63.527000000000015,"parts_14 is shown on the screen, written out."],[63.527000000000015,"parts_15 is shown on the screen, written out."],[63.527000000000015,"parts_16 is shown on the screen, written out."],[63.527000000000015,"parts_17 is shown on the screen, written out."],[63.527000000000015,"parts_18 is shown on the screen, written out."],[63.527000000000015,"parts_19 is shown on the screen, written out."],[63.527000000000015,"parts_20 is shown on the screen, written out."],[63.527000000000015,"polygon is shown on the screen, written out."],[63.527000000000015,"polygon_2 is shown on the screen, written out."],[63.527000000000015,"polygon_3 is shown on the screen, written out."],[63.527000000000015,"polygon_4 is shown on the screen, written out."],[63.527000000000015,"polygon_5 is shown on the screen, written out."],[63.527000000000015,"polygon_6 is shown on the screen, written out."],[63.527000000000015,"polygon_7 is shown on the screen, written out."],[63.527000000000015,"polygon_8 is shown on the screen, written out."],[63.527000000000015,"polygon_9 is shown on the screen, written out."],[63.527000000000015,"polygon_10 is shown on the screen, written out."],[63.527000000000015,"light_caption is shown on the screen, written out."]]},{"start":65.71700000000001,"say":"The house, mountains, horizon, and sun are still recognizable. But local pixel values have begun to wander. The corruption is not a blur that only removes high frequencies. It is random noise entering throughout the image.","live":["picture","clean_caption","picture_2","light_caption","heading_first","parts","parts_2","parts_3","parts_4","parts_5","parts_6","parts_7","parts_8","parts_9","parts_10","parts_11","parts_12","parts_13","parts_14","parts_15","parts_16","parts_17","parts_18","parts_19","parts_20","polygon","polygon_2","polygon_3","polygon_4","polygon_5","polygon_6","polygon_7","polygon_8","polygon_9","polygon_10"],"does":[[66.39100000000002,"parts_16 is indicated — a transient flash."],[68.86400000000002,"parts_15 is indicated — a transient flash."]]},{"start":81.73550000000002,"say":"Continue to step four hundred. More of the observed tensor now comes from noise, and less comes from the original image. The broad composition survives, while windows, roof edges, and smaller color boundaries become unreliable.","live":null,"does":[[82.95500000000003,"picture_3 is shown on the screen, written out."],[82.95500000000003,"parts_21 is shown on the screen, written out."],[82.95500000000003,"parts_22 is shown on the screen, written out."],[82.95500000000003,"parts_23 is shown on the screen, written out."],[82.95500000000003,"parts_24 is shown on the screen, written out."],[82.95500000000003,"parts_25 is shown on the screen, written out."],[82.95500000000003,"parts_26 is shown on the screen, written out."],[82.95500000000003,"parts_27 is shown on the screen, written out."],[82.95500000000003,"parts_28 is shown on the screen, written out."],[82.95500000000003,"parts_29 is shown on the screen, written out."],[82.95500000000003,"parts_30 is shown on the screen, written out."],[82.95500000000003,"polygon_11 is shown on the screen, written out."],[82.95500000000003,"polygon_12 is shown on the screen, written out."],[82.95500000000003,"polygon_13 is shown on the screen, written out."],[82.95500000000003,"polygon_14 is shown on the screen, written out."],[82.95500000000003,"polygon_15 is shown on the screen, written out."],[82.95500000000003,"polygon_16 is shown on the screen, written out."],[82.95500000000003,"polygon_17 is shown on the screen, written out."],[82.95500000000003,"polygon_18 is shown on the screen, written out."],[82.95500000000003,"polygon_19 is shown on the screen, written out."],[82.95500000000003,"polygon_20 is shown on the screen, written out."],[82.95500000000003,"polygon_21 is shown on the screen, written out."],[82.95500000000003,"polygon_22 is shown on the screen, written out."],[82.95500000000003,"polygon_23 is shown on the screen, written out."],[82.95500000000003,"polygon_24 is shown on the screen, written out."],[82.95500000000003,"polygon_25 is shown on the screen, written out."],[82.95500000000003,"polygon_26 is shown on the screen, written out."],[82.95500000000003,"polygon_27 is shown on the screen, written out."],[82.95500000000003,"polygon_28 is shown on the screen, written out."],[82.95500000000003,"polygon_29 is shown on the screen, written out."],[82.95500000000003,"polygon_30 is shown on the screen, written out."],[82.95500000000003,"polygon_31 is shown on the screen, written out."],[82.95500000000003,"polygon_32 is shown on the screen, written out."],[82.95500000000003,"polygon_33 is shown on the screen, written out."],[82.95500000000003,"polygon_34 is shown on the screen, written out."],[82.95500000000003,"middle_caption is shown on the screen, written out."],[96.82850000000002,"middle_caption moves to a new place on the board."],[96.82850000000002,"picture_3 moves to a new place on the board."],[96.82850000000002,"clean_caption is hidden from the screen — left the board."],[96.82850000000002,"heading_first is hidden from the screen — left the board."],[96.82850000000002,"light_caption is hidden from the screen — left the board."],[96.82850000000002,"picture is hidden from the screen — left the board."],[96.82850000000002,"parts is hidden from the screen — picture left the board."],[96.82850000000002,"parts_2 is hidden from the screen — picture left the board."],[96.82850000000002,"parts_3 is hidden from the screen — picture left the board."],[96.82850000000002,"parts_4 is hidden from the screen — picture left the board."],[96.82850000000002,"parts_5 is hidden from the screen — picture left the board."],[96.82850000000002,"parts_6 is hidden from the screen — picture left the board."],[96.82850000000002,"parts_7 is hidden from the screen — picture left the board."],[96.82850000000002,"parts_8 is hidden from the screen — picture left the board."],[96.82850000000002,"parts_9 is hidden from the screen — picture left the board."],[96.82850000000002,"parts_10 is hidden from the screen — picture left the board."],[96.82850000000002,"picture_2 is hidden from the screen — left the board."],[96.82850000000002,"parts_11 is hidden from the screen — picture_2 left the board."],[96.82850000000002,"parts_12 is hidden from the screen — picture_2 left the board."],[96.82850000000002,"parts_13 is hidden from the screen — picture_2 left the board."],[96.82850000000002,"parts_14 is hidden from the screen — picture_2 left the board."],[96.82850000000002,"parts_15 is hidden from the screen — picture_2 left the board."],[96.82850000000002,"parts_16 is hidden from the screen — picture_2 left the board."],[96.82850000000002,"parts_17 is hidden from the screen — picture_2 left the board."],[96.82850000000002,"parts_18 is hidden from the screen — picture_2 left the board."],[96.82850000000002,"parts_19 is hidden from the screen — picture_2 left the board."],[96.82850000000002,"parts_20 is hidden from the screen — picture_2 left the board."],[96.82850000000002,"polygon is hidden from the screen — picture_2 left the board."],[96.82850000000002,"polygon_2 is hidden from the screen — picture_2 left the board."],[96.82850000000002,"polygon_3 is hidden from the screen — picture_2 left the board."],[96.82850000000002,"polygon_4 is hidden from the screen — picture_2 left the board."],[96.82850000000002,"polygon_5 is hidden from the screen — picture_2 left the board."],[96.82850000000002,"polygon_6 is hidden from the screen — picture_2 left the board."],[96.82850000000002,"polygon_7 is hidden from the screen — picture_2 left the board."],[96.82850000000002,"polygon_8 is hidden from the screen — picture_2 left the board."],[96.82850000000002,"polygon_9 is hidden from the screen — picture_2 left the board."],[96.82850000000002,"polygon_10 is hidden from the screen — picture_2 left the board."]]},{"start":98.02850000000001,"say":"Push farther. By step seven hundred, the random component dominates most local evidence. You may still infer that something large sits near the center, but the image itself no longer supports confident object recognition.","live":["picture_3","middle_caption","parts_21","parts_22","parts_23","parts_24","parts_25","parts_26","parts_27","parts_28","parts_29","parts_30","polygon_11","polygon_12","polygon_13","polygon_14","polygon_15","polygon_16","polygon_17","polygon_18","polygon_19","polygon_20","polygon_21","polygon_22","polygon_23","polygon_24","polygon_25","polygon_26","polygon_27","polygon_28","polygon_29","polygon_30","polygon_31","polygon_32","polygon_33","polygon_34"],"does":[[98.02850000000001,"heading_later is shown on the screen, written out."],[100.64100000000002,"picture_4 is shown on the screen, written out."],[100.64100000000002,"parts_31 is shown on the screen, written out."],[100.64100000000002,"parts_32 is shown on the screen, written out."],[100.64100000000002,"parts_33 is shown on the screen, written out."],[100.64100000000002,"parts_34 is shown on the screen, written out."],[100.64100000000002,"parts_35 is shown on the screen, written out."],[100.64100000000002,"parts_36 is shown on the screen, written out."],[100.64100000000002,"parts_37 is shown on the screen, written out."],[100.64100000000002,"parts_38 is shown on the screen, written out."],[100.64100000000002,"parts_39 is shown on the screen, written out."],[100.64100000000002,"parts_40 is shown on the screen, written out."],[100.64100000000002,"polygon_35 is shown on the screen, written out."],[100.64100000000002,"polygon_36 is shown on the screen, written out."],[100.64100000000002,"polygon_37 is shown on the screen, written out."],[100.64100000000002,"polygon_38 is shown on the screen, written out."],[100.64100000000002,"polygon_39 is shown on the screen, written out."],[100.64100000000002,"polygon_40 is shown on the screen, written out."],[100.64100000000002,"polygon_41 is shown on the screen, written out."],[100.64100000000002,"polygon_42 is shown on the screen, written out."],[100.64100000000002,"polygon_43 is shown on the screen, written out."],[100.64100000000002,"polygon_44 is shown on the screen, written out."],[100.64100000000002,"polygon_45 is shown on the screen, written out."],[100.64100000000002,"polygon_46 is shown on the screen, written out."],[100.64100000000002,"polygon_47 is shown on the screen, written out."],[100.64100000000002,"polygon_48 is shown on the screen, written out."],[100.64100000000002,"polygon_49 is shown on the screen, written out."],[100.64100000000002,"polygon_50 is shown on the screen, written out."],[100.64100000000002,"polygon_51 is shown on the screen, written out."],[100.64100000000002,"polygon_52 is shown on the screen, written out."],[100.64100000000002,"polygon_53 is shown on the screen, written out."],[100.64100000000002,"polygon_54 is shown on the screen, written out."],[100.64100000000002,"polygon_55 is shown on the screen, written out."],[100.64100000000002,"polygon_56 is shown on the screen, written out."],[100.64100000000002,"polygon_57 is shown on the screen, written out."],[100.64100000000002,"polygon_58 is shown on the screen, written out."],[100.64100000000002,"polygon_59 is shown on the screen, written out."],[100.64100000000002,"polygon_60 is shown on the screen, written out."],[100.64100000000002,"polygon_61 is shown on the screen, written out."],[100.64100000000002,"polygon_62 is shown on the screen, written out."],[100.64100000000002,"polygon_63 is shown on the screen, written out."],[100.64100000000002,"polygon_64 is shown on the screen, written out."],[100.64100000000002,"polygon_65 is shown on the screen, written out."],[100.64100000000002,"polygon_66 is shown on the screen, written out."],[100.64100000000002,"polygon_67 is shown on the screen, written out."],[100.64100000000002,"polygon_68 is shown on the screen, written out."],[100.64100000000002,"polygon_69 is shown on the screen, written out."],[100.64100000000002,"polygon_70 is shown on the screen, written out."],[100.64100000000002,"polygon_71 is shown on the screen, written out."],[100.64100000000002,"polygon_72 is shown on the screen, written out."],[100.64100000000002,"heavy_caption is shown on the screen, written out."]]},{"start":112.804,"say":"Near the end, even those weak global clues disappear. The process has not replaced the image with one fixed gray card. Every run ends in a different random tensor whose values follow a simple Gaussian distribution.","live":["picture_3","middle_caption","parts_21","parts_22","parts_23","parts_24","parts_25","parts_26","parts_27","parts_28","parts_29","parts_30","polygon_11","polygon_12","polygon_13","polygon_14","polygon_15","polygon_16","polygon_17","polygon_18","polygon_19","polygon_20","polygon_21","polygon_22","polygon_23","polygon_24","polygon_25","polygon_26","polygon_27","polygon_28","polygon_29","polygon_30","polygon_31","polygon_32","polygon_33","polygon_34","picture_4","heavy_caption","heading_later","parts_31","parts_32","parts_33","parts_34","parts_35","parts_36","parts_37","parts_38","parts_39","parts_40","polygon_35","polygon_36","polygon_37","polygon_38","polygon_39","polygon_40","polygon_41","polygon_42","polygon_43","polygon_44","polygon_45","polygon_46","polygon_47","polygon_48","polygon_49","polygon_50","polygon_51","polygon_52","polygon_53","polygon_54","polygon_55","polygon_56","polygon_57","polygon_58","polygon_59","polygon_60","polygon_61","polygon_62","polygon_63","polygon_64","polygon_65","polygon_66","polygon_67","polygon_68","polygon_69","polygon_70","polygon_71","polygon_72"],"does":[[113.66300000000001,"picture_5 is shown on the screen, written out."],[113.66300000000001,"parts_41 is shown on the screen, written out."],[113.66300000000001,"parts_42 is shown on the screen, written out."],[113.66300000000001,"parts_43 is shown on the screen, written out."],[113.66300000000001,"parts_44 is shown on the screen, written out."],[113.66300000000001,"parts_45 is shown on the screen, written out."],[113.66300000000001,"parts_46 is shown on the screen, written out."],[113.66300000000001,"parts_47 is shown on the screen, written out."],[113.66300000000001,"parts_48 is shown on the screen, written out."],[113.66300000000001,"parts_49 is shown on the screen, written out."],[113.66300000000001,"parts_50 is shown on the screen, written out."],[113.66300000000001,"polygon_73 is shown on the screen, written out."],[113.66300000000001,"polygon_74 is shown on the screen, written out."],[113.66300000000001,"polygon_75 is shown on the screen, written out."],[113.66300000000001,"polygon_76 is shown on the screen, written out."],[113.66300000000001,"polygon_77 is shown on the screen, written out."],[113.66300000000001,"polygon_78 is shown on the screen, written out."],[113.66300000000001,"polygon_79 is shown on the screen, written out."],[113.66300000000001,"polygon_80 is shown on the screen, written out."],[113.66300000000001,"polygon_81 is shown on the screen, written out."],[113.66300000000001,"polygon_82 is shown on the screen, written out."],[113.66300000000001,"polygon_83 is shown on the screen, written out."],[113.66300000000001,"polygon_84 is shown on the screen, written out."],[113.66300000000001,"polygon_85 is shown on the screen, written out."],[113.66300000000001,"polygon_86 is shown on the screen, written out."],[113.66300000000001,"polygon_87 is shown on the screen, written out."],[113.66300000000001,"polygon_88 is shown on the screen, written out."],[113.66300000000001,"polygon_89 is shown on the screen, written out."],[113.66300000000001,"polygon_90 is shown on the screen, written out."],[113.66300000000001,"polygon_91 is shown on the screen, written out."],[113.66300000000001,"polygon_92 is shown on the screen, written out."],[113.66300000000001,"polygon_93 is shown on the screen, written out."],[113.66300000000001,"polygon_94 is shown on the screen, written out."],[113.66300000000001,"polygon_95 is shown on the screen, written out."],[113.66300000000001,"polygon_96 is shown on the screen, written out."],[113.66300000000001,"polygon_97 is shown on the screen, written out."],[113.66300000000001,"polygon_98 is shown on the screen, written out."],[113.66300000000001,"polygon_99 is shown on the screen, written out."],[113.66300000000001,"polygon_100 is shown on the screen, written out."],[113.66300000000001,"polygon_101 is shown on the screen, written out."],[113.66300000000001,"polygon_102 is shown on the screen, written out."],[113.66300000000001,"polygon_103 is shown on the screen, written out."],[113.66300000000001,"polygon_104 is shown on the screen, written out."],[113.66300000000001,"polygon_105 is shown on the screen, written out."],[113.66300000000001,"polygon_106 is shown on the screen, written out."],[113.66300000000001,"polygon_107 is shown on the screen, written out."],[113.66300000000001,"polygon_108 is shown on the screen, written out."],[113.66300000000001,"polygon_109 is shown on the screen, written out."],[113.66300000000001,"polygon_110 is shown on the screen, written out."],[113.66300000000001,"polygon_111 is shown on the screen, written out."],[113.66300000000001,"polygon_112 is shown on the screen, written out."],[113.66300000000001,"polygon_113 is shown on the screen, written out."],[113.66300000000001,"polygon_114 is shown on the screen, written out."],[113.66300000000001,"polygon_115 is shown on the screen, written out."],[113.66300000000001,"polygon_116 is shown on the screen, written out."],[113.66300000000001,"polygon_117 is shown on the screen, written out."],[113.66300000000001,"polygon_118 is shown on the screen, written out."],[113.66300000000001,"polygon_119 is shown on the screen, written out."],[113.66300000000001,"polygon_120 is shown on the screen, written out."],[113.66300000000001,"noise_caption is shown on the screen, written out."]]},{"start":128.114,"say":"That final simplicity is deliberate. Natural images occupy a complicated and highly structured part of pixel space. Standard Gaussian noise is a distribution we can sample immediately, without knowing anything about cats, houses, faces, or landscapes.","live":["picture_3","middle_caption","parts_21","parts_22","parts_23","parts_24","parts_25","parts_26","parts_27","parts_28","parts_29","parts_30","polygon_11","polygon_12","polygon_13","polygon_14","polygon_15","polygon_16","polygon_17","polygon_18","polygon_19","polygon_20","polygon_21","polygon_22","polygon_23","polygon_24","polygon_25","polygon_26","polygon_27","polygon_28","polygon_29","polygon_30","polygon_31","polygon_32","polygon_33","polygon_34","picture_4","heavy_caption","picture_5","noise_caption","heading_later","parts_31","parts_32","parts_33","parts_34","parts_35","parts_36","parts_37","parts_38","parts_39","parts_40","polygon_35","polygon_36","polygon_37","polygon_38","polygon_39","polygon_40","polygon_41","polygon_42","polygon_43","polygon_44","polygon_45","polygon_46","polygon_47","polygon_48","polygon_49","polygon_50","polygon_51","polygon_52","polygon_53","polygon_54","polygon_55","polygon_56","polygon_57","polygon_58","polygon_59","polygon_60","polygon_61","polygon_62","polygon_63","polygon_64","polygon_65","polygon_66","polygon_67","polygon_68","polygon_69","polygon_70","polygon_71","polygon_72","parts_41","parts_42","parts_43","parts_44","parts_45","parts_46","parts_47","parts_48","parts_49","parts_50","polygon_73","polygon_74","polygon_75","polygon_76","polygon_77","polygon_78","polygon_79","polygon_80","polygon_81","polygon_82","polygon_83","polygon_84","polygon_85","polygon_86","polygon_87","polygon_88","polygon_89","polygon_90","polygon_91","polygon_92","polygon_93","polygon_94","polygon_95","polygon_96","polygon_97","polygon_98","polygon_99","polygon_100","polygon_101","polygon_102","polygon_103","polygon_104","polygon_105","polygon_106","polygon_107","polygon_108","polygon_109","polygon_110","polygon_111","polygon_112","polygon_113","polygon_114","polygon_115","polygon_116","polygon_117","polygon_118","polygon_119","polygon_120"],"does":[[136.798,"polygon_120 is indicated — a transient flash."]]},{"start":146.21,"say":"So the forward process builds a bridge between two distributions. At one end are real images from the training data. At the other end is nearly pure Gaussian noise, which is easy to manufacture whenever we want a new sample.","live":null,"does":[[160.03750000000002,"picture_5 moves to a new place on the board."],[160.03750000000002,"heading_later is hidden from the screen — left the board."],[160.03750000000002,"heavy_caption is hidden from the screen — left the board."],[160.03750000000002,"middle_caption is hidden from the screen — left the board."],[160.03750000000002,"noise_caption is hidden from the screen — left the board."],[160.03750000000002,"picture_3 is hidden from the screen — left the board."],[160.03750000000002,"parts_21 is hidden from the screen — picture_3 left the board."],[160.03750000000002,"parts_22 is hidden from the screen — picture_3 left the board."],[160.03750000000002,"parts_23 is hidden from the screen — picture_3 left the board."],[160.03750000000002,"parts_24 is hidden from the screen — picture_3 left the board."],[160.03750000000002,"parts_25 is hidden from the screen — picture_3 left the board."],[160.03750000000002,"parts_26 is hidden from the screen — picture_3 left the board."],[160.03750000000002,"parts_27 is hidden from the screen — picture_3 left the board."],[160.03750000000002,"parts_28 is hidden from the screen — picture_3 left the board."],[160.03750000000002,"parts_29 is hidden from the screen — picture_3 left the board."],[160.03750000000002,"parts_30 is hidden from the screen — picture_3 left the board."],[160.03750000000002,"polygon_11 is hidden from the screen — picture_3 left the board."],[160.03750000000002,"polygon_12 is hidden from the screen — picture_3 left the board."],[160.03750000000002,"polygon_13 is hidden from the screen — picture_3 left the board."],[160.03750000000002,"polygon_14 is hidden from the screen — picture_3 left the board."],[160.03750000000002,"polygon_15 is hidden from the screen — picture_3 left the board."],[160.03750000000002,"polygon_16 is hidden from the screen — picture_3 left the board."],[160.03750000000002,"polygon_17 is hidden from the screen — picture_3 left the board."],[160.03750000000002,"polygon_18 is hidden from the screen — picture_3 left the board."],[160.03750000000002,"polygon_19 is hidden from the screen — picture_3 left the board."],[160.03750000000002,"polygon_20 is hidden from the screen — picture_3 left the board."],[160.03750000000002,"polygon_21 is hidden from the screen — picture_3 left the board."],[160.03750000000002,"polygon_22 is hidden from the screen — picture_3 left the board."],[160.03750000000002,"polygon_23 is hidden from the screen — picture_3 left the board."],[160.03750000000002,"polygon_24 is hidden from the screen — picture_3 left the board."],[160.03750000000002,"polygon_25 is hidden from the screen — picture_3 left the board."],[160.03750000000002,"polygon_26 is hidden from the screen — picture_3 left the board."],[160.03750000000002,"polygon_27 is hidden from the screen — picture_3 left the board."],[160.03750000000002,"polygon_28 is hidden from the screen — picture_3 left the board."],[160.03750000000002,"polygon_29 is hidden from the screen — picture_3 left the board."],[160.03750000000002,"polygon_30 is hidden from the screen — picture_3 left the board."],[160.03750000000002,"polygon_31 is hidden from the screen — picture_3 left the board."],[160.03750000000002,"polygon_32 is hidden from the screen — picture_3 left the board."],[160.03750000000002,"polygon_33 is hidden from the screen — picture_3 left the board."],[160.03750000000002,"polygon_34 is hidden from the screen — picture_3 left the board."],[160.03750000000002,"picture_4 is hidden from the screen — left the board."],[160.03750000000002,"parts_31 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"parts_32 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"parts_33 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"parts_34 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"parts_35 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"parts_36 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"parts_37 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"parts_38 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"parts_39 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"parts_40 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_35 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_36 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_37 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_38 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_39 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_40 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_41 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_42 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_43 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_44 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_45 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_46 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_47 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_48 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_49 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_50 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_51 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_52 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_53 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_54 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_55 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_56 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_57 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_58 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_59 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_60 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_61 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_62 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_63 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_64 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_65 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_66 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_67 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_68 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_69 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_70 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_71 is hidden from the screen — picture_4 left the board."],[160.03750000000002,"polygon_72 is hidden from the screen — picture_4 left the board."]]},{"start":161.2375,"say":"Write the bridge as a chain. We begin at x zero, take one random transition to x one, another to x two, and continue until x T.","live":["picture_5","parts_41","parts_42","parts_43","parts_44","parts_45","parts_46","parts_47","parts_48","parts_49","parts_50","polygon_73","polygon_74","polygon_75","polygon_76","polygon_77","polygon_78","polygon_79","polygon_80","polygon_81","polygon_82","polygon_83","polygon_84","polygon_85","polygon_86","polygon_87","polygon_88","polygon_89","polygon_90","polygon_91","polygon_92","polygon_93","polygon_94","polygon_95","polygon_96","polygon_97","polygon_98","polygon_99","polygon_100","polygon_101","polygon_102","polygon_103","polygon_104","polygon_105","polygon_106","polygon_107","polygon_108","polygon_109","polygon_110","polygon_111","polygon_112","polygon_113","polygon_114","polygon_115","polygon_116","polygon_117","polygon_118","polygon_119","polygon_120"],"does":[[161.2375,"heading_chain is shown on the screen, written out."],[162.43300000000005,"chain is shown on the screen, written out."],[165.82300000000004,"step_note is shown on the screen, written out."]]},{"start":172.4255,"say":"This is called the forward process. Forward refers to the direction from data toward noise. It is not the direction in which images are generated, and it does not require a neural network.","live":["picture_5","parts_41","parts_42","parts_43","parts_44","parts_45","parts_46","parts_47","parts_48","parts_49","parts_50","polygon_73","polygon_74","polygon_75","polygon_76","polygon_77","polygon_78","polygon_79","polygon_80","polygon_81","polygon_82","polygon_83","polygon_84","polygon_85","polygon_86","polygon_87","polygon_88","polygon_89","polygon_90","polygon_91","polygon_92","polygon_93","polygon_94","polygon_95","polygon_96","polygon_97","polygon_98","polygon_99","polygon_100","polygon_101","polygon_102","polygon_103","polygon_104","polygon_105","polygon_106","polygon_107","polygon_108","polygon_109","polygon_110","polygon_111","polygon_112","polygon_113","polygon_114","polygon_115","polygon_116","polygon_117","polygon_118","polygon_119","polygon_120","step_note","chain","heading_chain"],"does":[[173.54000000000005,"step_note (the \"forward\" part) is emphasized."],[183.52500000000003,"step_note (the \"forward\" part) is no longer emphasized."]]},{"start":185.251,"say":"We choose the corruption rule ourselves. That means we know exactly how much signal and how much random disturbance appear at every step. The entire forward chain can be simulated on demand from any training image.","live":null,"does":[[190.92800000000003,"chain (the \"x_0\" part) is emphasized."],[192.63500000000002,"chain (the \"x_0\" part) is no longer emphasized."],[192.63500000000002,"chain (the \"x_T\" part) is emphasized."],[199.6595,"chain (the \"x_T\" part) is no longer emphasized."]]},{"start":200.2595,"say":"At the chosen final time, x T is approximately a standard Gaussian tensor. The approximation matters: schedules are designed so that almost no usable information about x zero remains, while the endpoint is numerically well behaved.","live":null,"does":[[200.2595,"destination is shown on the screen, written out."],[204.102,"destination (the \"epsilon in cal(N)(0,I)\" part) is emphasized."],[215.7815,"destination (the \"epsilon in cal(N)(0,I)\" part) is no longer emphasized."]]},{"start":216.38150000000002,"say":"One subtlety is worth fixing now. We do not repeatedly add raw noise without restraint, because the variance would grow without bound. Each step slightly reduces the existing signal while adding a calibrated amount of fresh noise.","live":["picture_5","parts_41","parts_42","parts_43","parts_44","parts_45","parts_46","parts_47","parts_48","parts_49","parts_50","polygon_73","polygon_74","polygon_75","polygon_76","polygon_77","polygon_78","polygon_79","polygon_80","polygon_81","polygon_82","polygon_83","polygon_84","polygon_85","polygon_86","polygon_87","polygon_88","polygon_89","polygon_90","polygon_91","polygon_92","polygon_93","polygon_94","polygon_95","polygon_96","polygon_97","polygon_98","polygon_99","polygon_100","polygon_101","polygon_102","polygon_103","polygon_104","polygon_105","polygon_106","polygon_107","polygon_108","polygon_109","polygon_110","polygon_111","polygon_112","polygon_113","polygon_114","polygon_115","polygon_116","polygon_117","polygon_118","polygon_119","polygon_120","step_note","chain","destination","heading_chain"],"does":[[226.65600000000006,"step_note (the \"keeps most\" part) is indicated — a transient flash."]]},{"start":231.7495,"say":"That calibration gives us clean algebra, stable scales, and a known target at every noise level. Those three facts will turn image generation into a supervised learning problem rather than a demand that a network invent an entire image in one unexplained leap.","live":null,"does":[[236.40500000000006,"A box is drawn around destination."],[248.34633333333335,"chain is hidden from the screen — left the board."],[248.34633333333335,"destination is hidden from the screen — left the board."],[248.34633333333335,"heading_chain is hidden from the screen — left the board."],[248.34633333333335,"picture_5 is hidden from the screen — left the board."],[248.34633333333335,"parts_41 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"parts_42 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"parts_43 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"parts_44 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"parts_45 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"parts_46 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"parts_47 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"parts_48 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"parts_49 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"parts_50 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_73 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_74 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_75 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_76 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_77 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_78 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_79 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_80 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_81 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_82 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_83 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_84 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_85 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_86 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_87 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_88 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_89 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_90 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_91 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_92 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_93 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_94 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_95 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_96 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_97 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_98 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_99 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_100 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_101 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_102 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_103 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_104 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_105 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_106 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_107 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_108 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_109 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_110 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_111 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_112 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_113 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_114 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_115 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_116 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_117 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_118 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_119 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"polygon_120 is hidden from the screen — picture_5 left the board."],[248.34633333333335,"step_note is hidden from the screen — left the board."]]}]},{"title":"The Forward Equations","start":249.388,"end":474.29925,"objects":{"alpha":"a Math [text] that says \"$alpha_t = 1 - beta_t$\"","beta":"a Math [text] that says \"$0 < beta_t < 1$\"","direct":"a Derivation [text] that says \"$x_t &= sqrt(alpha_t) x_(t-1) + sqrt(1-alpha_t) epsilon_t \\ x_t &= sqrt(alpha_t alpha_(t-1)) x_(t-2) + upright(\"Gaussian noise\") \\ x_t &= sqrt(overline(alpha)_t) x_0 + sqrt(1-overline(alpha)_t) epsilon$\"","distribution":"a Math [text] that says \"$q(x_t | x_(t-1)) = cal(N)(sqrt(alpha_t)x_(t-1), thin (1-alpha_t)I)$\"","facts":"a Block [text] that says \"$beta_t$ chooses the fresh noise added at step $t$. $overline(alpha)_t$ records how much original signal survives. One sampled $epsilon$ creates $x_t$ directly from $x_0$.\"","figure":"a Figure (x_range=(-3.0, 4.0), y_range=(-1.0, 4.8), aspect=(7.0, 5.8))","heading_direct":"a Heading that says \"Jump Directly to Any Time\"","heading_meaning":"a Heading that says \"What the Coefficients Mean\"","heading_step":"a Heading that says \"One Calibrated Noise Step\"","mix":"a VariableNumber (initial_value=0.1, format_spec='.2f')","mix_label":"a Point [yellow] labelled \"1-overline(alpha)_t = 0.10\" drawn in figure (location=(2.8, 4.1), show_marker=False)","mixture":"a Vector [yellow] labelled \"x_t\" drawn in figure (end=(((sqrt((1.0 - mix)) * 2.5) + (sqrt(mix) * -1.2)), ((sqrt((1.0 …)","noise":"a Vector [red] labelled \"epsilon\" drawn in figure (end=(-1.2, 2.7))","origin":"a Point [gray] labelled \"0\" drawn in figure","product":"a Math [text] that says \"$overline(alpha)_t = product_(s=1)^t alpha_s$\"","signal":"a Vector [blue] labelled \"x_0\" drawn in figure (end=(2.5, 1.0))","snr":"a Math [text] that says \"$upright(\"SNR\")_t = frac(overline(alpha)_t, 1-overline(alpha)_t)$\"","transition":"a Math [text] that says \"$x_t = sqrt(alpha_t) x_(t-1) + sqrt(1-alpha_t) epsilon_t$\""},"beats":[{"start":249.388,"say":"Now let us make one forward step precise. Choose a small positive number beta t. This is the noise schedule at step t, and it controls how much new uncertainty enters during that transition.","live":[],"does":[[249.388,"heading_step is shown on the screen, written out."],[254.02,"beta is shown on the screen, written out."]]},{"start":262.0505,"say":"Define alpha t as one minus beta t. When beta is small, alpha is close to one, which is the algebraic statement that a single step should preserve most of its input.","live":["beta","heading_step"],"does":[[262.922,"alpha is shown on the screen, written out."],[263.897,"alpha (the \"1 - beta_t\" part) is emphasized."],[273.765,"alpha (the \"1 - beta_t\" part) is no longer emphasized."]]},{"start":274.365,"say":"The next image has two ingredients. Multiply the current image by square root alpha t, then add an independent standard Gaussian tensor multiplied by square root one minus alpha t.","live":["beta","alpha","heading_step"],"does":[[275.967,"transition is shown on the screen, written out."],[278.045,"transition (the \"sqrt(alpha_t) x_(t-1)\" part) is emphasized."],[282.724,"transition (the \"sqrt(1-alpha_t) epsilon_t\" part) is emphasized."],[282.724,"transition (the \"sqrt(alpha_t) x_(t-1)\" part) is no longer emphasized."],[287.414,"transition (the \"sqrt(1-alpha_t) epsilon_t\" part) is no longer emphasized."]]},{"start":288.014,"say":"Those square roots are not decorative. Variances scale with the square of a multiplier, so this choice keeps the total variance controlled as signal is exchanged for noise.","live":["beta","alpha","transition","heading_step"],"does":[[288.722,"transition (the \"sqrt(alpha_t)\" part) is indicated — a transient flash."]]},{"start":298.97,"say":"The same statement can be written as a conditional distribution. Given x t minus one, x t is Gaussian. Its mean is the slightly reduced image, and its covariance is one minus alpha t times the identity.","live":null,"does":[[301.037,"distribution is shown on the screen, written out."],[307.608,"distribution (the \"sqrt(alpha_t)x_(t-1)\" part) is emphasized."],[310.174,"distribution (the \"(1-alpha_t)I\" part) is emphasized."],[310.174,"distribution (the \"sqrt(alpha_t)x_(t-1)\" part) is no longer emphasized."],[313.9355,"distribution (the \"(1-alpha_t)I\" part) is no longer emphasized."]]},{"start":314.5355,"say":"Every pixel channel receives independent Gaussian disturbance in this basic formulation. The image structure comes from the mean, while the covariance tells us how widely the next sample may wander around that mean.","live":["beta","alpha","transition","distribution","heading_step"],"does":[[327.35249999999996,"alpha is hidden from the screen — left the board."],[327.35249999999996,"beta is hidden from the screen — left the board."],[327.35249999999996,"distribution is hidden from the screen — left the board."],[327.35249999999996,"heading_step is hidden from the screen — left the board."],[327.35249999999996,"transition is hidden from the screen — left the board."]]},{"start":328.5525,"say":"A remarkable simplification appears when we compose many of these Gaussian steps. Begin with the one-step rule we just wrote.","live":[],"does":[[328.5525,"heading_direct is shown on the screen, written out."],[334.65999999999997,"direct is shown on the screen, written out."]]},{"start":337.373,"say":"Substitute the rule for x t minus one. The surviving signal multipliers multiply, while the independent Gaussian terms combine into another Gaussian term.","live":["heading_direct"],"does":[[337.849,"direct is shown on the screen, written out."]]},{"start":348.224,"say":"Repeat all the way back to x zero. Define alpha bar t as the product of every alpha up to time t.","live":null,"does":[[352.62399999999997,"product is shown on the screen, written out."],[353.16999999999996,"product (the \"product_(s=1)^t alpha_s\" part) is emphasized."],[355.63149999999996,"product (the \"product_(s=1)^t alpha_s\" part) is no longer emphasized."]]},{"start":356.2315,"say":"The result is the closed form. At any chosen time t, x t equals square root alpha bar t times the clean image, plus square root one minus alpha bar t times one standard Gaussian tensor.","live":["product","heading_direct"],"does":[[357.508,"direct is shown on the screen, written out."],[365.27599999999995,"direct (the \"sqrt(overline(alpha)_t) x_0\" part) is emphasized."],[369.84999999999997,"direct (the \"sqrt(1-overline(alpha)_t) epsilon\" part) is emphasized."],[369.84999999999997,"direct (the \"sqrt(overline(alpha)_t) x_0\" part) is no longer emphasized."],[371.0925,"direct (the \"sqrt(1-overline(alpha)_t) epsilon\" part) is no longer emphasized."]]},{"start":371.6925,"say":"This means training never needs to simulate all earlier corruption steps. Sample a time t, sample one epsilon, and construct x t directly from the original image.","live":null,"does":[[381.758,"direct is indicated — a transient flash."]]},{"start":384.669,"say":"The picture on the right is a toy two-dimensional version of that mixture. Blue is a fixed signal vector, red is a fixed noise vector, and yellow is the noisy observation formed from both.","live":null,"does":[[385.307,"figure is shown on the screen, written out."],[385.307,"origin is shown on the screen, written out."],[389.197,"signal is shown on the screen, written out."],[391.611,"noise is shown on the screen, written out."],[393.899,"mixture is shown on the screen, written out."],[393.899,"mix_label is shown on the screen, written out."]]},{"start":397.575,"say":"At a low noise fraction, yellow stays close to the blue signal. The noise changes it, but signal still controls the result.","live":["product","figure","heading_direct","origin","signal","noise","mixture","mix_label"],"does":[[399.677,"mixture is indicated — a transient flash."]]},{"start":406.5225,"say":"Increase the noise fraction. The blue contribution shrinks, the red contribution gains weight, and the observed vector turns away from its original direction.","live":null,"does":[[406.871,"mixture is redrawn as the numbers it depends on change."],[406.871,"mix_label is redrawn as the numbers it depends on change."],[406.871,"mix ticks to 0.55."]]},{"start":417.36249999999995,"say":"Near the end, almost all reliable information comes from epsilon. The original signal has not been abruptly deleted. Its coefficient has been driven close to zero by the accumulated schedule.","live":null,"does":[[418.082,"mixture is redrawn as the numbers it depends on change."],[418.082,"mix_label is redrawn as the numbers it depends on change."],[418.082,"mix ticks to 0.93."]]},{"start":429.6065,"say":"A useful summary is the signal-to-noise ratio. Signal power is alpha bar t, noise power is one minus alpha bar t, so their ratio falls as t increases.","live":null,"does":[[432.091,"snr is shown on the screen, written out."],[433.345,"snr (the \"overline(alpha)_t\" part) is emphasized."],[435.85299999999995,"snr (the \"1-overline(alpha)_t\" part) is emphasized."],[435.85299999999995,"snr (the \"overline(alpha)_t\" part) is no longer emphasized."],[441.5535,"direct is hidden from the screen — left the board."],[441.5535,"figure is hidden from the screen — left the board."],[441.5535,"origin is hidden from the screen — figure left the board."],[441.5535,"signal is hidden from the screen — figure left the board."],[441.5535,"noise is hidden from the screen — figure left the board."],[441.5535,"mixture is hidden from the screen — figure left the board."],[441.5535,"mix_label is hidden from the screen — figure left the board."],[441.5535,"heading_direct is hidden from the screen — left the board."],[441.5535,"product is hidden from the screen — left the board."],[441.5535,"snr is hidden from the screen — left the board."],[441.5535,"snr (the \"1-overline(alpha)_t\" part) is no longer emphasized."]]},{"start":442.1535,"say":"Keep three meanings attached to the notation. Beta t controls the fresh noise in one transition. Alpha bar t records the signal surviving from the original image. And the closed form lets one epsilon produce any desired training noise level.","live":[],"does":[[442.1535,"heading_meaning is shown on the screen, written out."],[442.838,"facts is shown on the screen, written out."],[445.439,"facts (the \"$beta_t$\" part) is emphasized."],[449.329,"facts (the \"$beta_t$\" part) is no longer emphasized."],[449.329,"facts (the \"$overline(alpha)_t$\" part) is emphasized."],[454.913,"facts (the \"$epsilon$\" part) is emphasized."],[454.913,"facts (the \"$overline(alpha)_t$\" part) is no longer emphasized."],[458.0125,"facts (the \"$epsilon$\" part) is no longer emphasized."]]},{"start":458.61249999999995,"say":"We chose every part of this corruption process. Therefore, for each noisy image, we know the clean source, the time, and the exact random tensor that was mixed in. That is the opening a supervised learner needs.","live":["facts","heading_meaning"],"does":[[473.2575833333333,"facts is hidden from the screen — left the board."],[473.2575833333333,"heading_meaning is hidden from the screen — left the board."]]}]},{"title":"Training the Noise Predictor","start":474.29925,"end":759.3917291666667,"objects":{"clean_box":"a Polygon [blue] drawn in pipeline (vertices=((0.4, 3.5), (2.4, 3.5), (2.4, 5.5), (0.4, 5.5)), fill_opacity=0.22)","clean_label":"a Math [blue] that says \"$x_0$\" drawn in pipeline","construction":"a Derivation [text] that says \"$t &in chevron.l 1,dots,T chevron.r \\ epsilon &in cal(N)(0,I) \\ x_t &= sqrt(overline(alpha)_t)x_0 + sqrt(1-overline(alpha)_t)epsilon \\ hat(epsilon) &= epsilon_theta(x_t,t)$\"","direct_problem":"a Panel that says \"A random seed does not identify one uniquely correct finished image. Many different images could be valid outputs.\"","gradient":"a Math [text] that says \"$theta arrow.r theta - eta thin nabla_theta cal(L)$\"","heading_compare":"a Heading that says \"Why This Is Supervised\"","heading_loss":"a Heading that says \"The Noise-Prediction Objective\"","heading_recipe":"a Heading that says \"One Training Example\"","loss":"a Math [text] that says \"$cal(L)_(upright(\"simple\")) = upright(E)_(x_0,t,epsilon) norm(epsilon-epsilon_theta(x_t,t))^2$\"","mix_arrow_a":"an Arrow [gray] drawn in pipeline (start=(2.6, 4.5), end=(4.1, 3.3))","mix_arrow_b":"an Arrow [gray] drawn in pipeline (start=(2.6, 1.5), end=(4.1, 2.7))","network_arrow":"an Arrow [yellow] drawn in pipeline (start=(6.35, 3.0), end=(7.35, 3.0))","network_box":"a Polygon [yellow] drawn in pipeline (vertices=((7.45, 1.8), (9.35, 1.8), (9.35, 4.2), (7.45, 4.2)), fill_opacity=0.18)","network_label":"a Math [yellow] that says \"$epsilon_theta$\" drawn in pipeline","noise_box":"a Polygon [red] drawn in pipeline (vertices=((0.4, 0.5), (2.4, 0.5), (2.4, 2.5), (0.4, 2.5)))","noise_label":"a Math [red] that says \"$epsilon$\" drawn in pipeline","noise_problem":"a Panel that says \"The sampled $epsilon$ is known exactly. It is a tensor-sized label paired with the constructed input $x_t$.\"","noisy_box":"a Polygon [magenta] drawn in pipeline (vertices=((4.2, 2.0), (6.2, 2.0), (6.2, 4.0), (4.2, 4.0)))","noisy_label":"a Math [magenta] that says \"$x_t$\" drawn in pipeline","output_arrow":"an Arrow [green] drawn in pipeline (start=(9.5, 3.0), end=(10.3, 3.0))","pipeline":"a Figure (x_range=(0.0, 12.0), y_range=(0.0, 6.0), aspect=(2.0, 1.0))","prediction_box":"a Polygon [green] drawn in pipeline (vertices=((10.4, 2.0), (11.8, 2.0), (11.8, 4.0), (10.4, 4.0)), fill_opacity=0.25)","prediction_label":"a Math [green] that says \"$hat(epsilon)$\" drawn in pipeline","question":"a Panel that says \"Given a noisy image $x_t$ and its time $t$, what target can a neural network learn from ordinary labelled examples?\"","recipe":"a Table [text] that says \"Step Operation 1 Choose a clean training image $x_0$ 2 Sample a time $t$ 3 Sample Gaussian noise $epsilon$ 4 Construct $x_t$ from $x_0$ and $epsilon$ 5 Predict $epsilon$ from $x_t$ and $t$\" (rows=(('Step', 'Operation'), ('1', 'Choose a clean training image $x…, header=True)","tex":"a Tex [text] that says \"Ambiguous target\"","tex_2":"a Tex [text] that says \"Known target\"","time_label":"a Math [yellow] that says \"$t$\" drawn in pipeline"},"beats":[{"start":474.29925,"say":"The forward process gives us noisy images, but training still needs a target. What should the neural network predict when it receives a noisy image x t and the time t?","live":[],"does":[[474.29925,"question is shown on the screen, written out."]]},{"start":485.38275,"say":"One tempting answer is the clean image x zero. Some diffusion parameterizations do predict clean data or a related quantity. But the most common first formulation asks for something even more directly known: the noise epsilon that we sampled ourselves.","live":["question"],"does":[[496.19224999999994,"question (the \"what target\" part) is emphasized."],[499.96524999999997,"question (the \"what target\" part) is no longer emphasized."],[502.62375,"question moves to a new place on the board."]]},{"start":503.22375,"say":"Here is the complete learning problem as a pipeline. Begin with a clean training image x zero.","live":null,"does":[[503.22375,"pipeline is shown on the screen, written out."],[507.42625,"clean_box is shown on the screen, written out."],[507.42625,"clean_label is shown on the screen, written out."]]},{"start":510.48825,"say":"Independently sample a Gaussian noise tensor epsilon. It has exactly the same shape as the image tensor, with one random value for every channel and spatial location.","live":["question","pipeline","clean_box","clean_label"],"does":[[513.37925,"noise_box is shown on the screen, written out."],[513.37925,"noise_label is shown on the screen, written out."]]},{"start":522.26775,"say":"Choose a time t, read the schedule coefficients at that time, and combine the clean image with epsilon to construct x t. We now possess both the input and the label.","live":["question","pipeline","clean_box","clean_label","noise_box","noise_label"],"does":[[523.1502499999999,"time_label is shown on the screen, written out."],[526.7262499999999,"mix_arrow_a is shown on the screen, written out."],[526.7262499999999,"mix_arrow_b is shown on the screen, written out."],[529.18725,"noisy_box is shown on the screen, written out."],[529.18725,"noisy_label is shown on the screen, written out."]]},{"start":533.9672499999999,"say":"Feed x t and t to a neural network. The time input matters because the same visible pattern means something different at a low noise level and at a high one.","live":["question","pipeline","clean_box","clean_label","noise_box","noise_label","mix_arrow_a","mix_arrow_b","noisy_box","noisy_label","time_label"],"does":[[534.31525,"network_arrow is shown on the screen, written out."],[536.16125,"network_box is shown on the screen, written out."],[536.16125,"network_label is shown on the screen, written out."]]},{"start":544.52825,"say":"The network returns a tensor with the image's shape. Call it epsilon hat, the network's estimate of the particular noise tensor used to create this example.","live":["question","pipeline","clean_box","clean_label","noise_box","noise_label","mix_arrow_a","mix_arrow_b","noisy_box","noisy_label","time_label","network_arrow","network_box","network_label"],"does":[[545.3992499999999,"output_arrow is shown on the screen, written out."],[548.5922499999999,"prediction_box is shown on the screen, written out."],[548.5922499999999,"prediction_label is shown on the screen, written out."]]},{"start":555.22925,"say":"Compare epsilon hat with the known epsilon using squared error. Pixel by pixel and channel by channel, the loss penalizes disagreement between the generated label and the prediction.","live":["question","pipeline","clean_box","clean_label","noise_box","noise_label","mix_arrow_a","mix_arrow_b","noisy_box","noisy_label","time_label","network_arrow","network_box","network_label","output_arrow","prediction_box","prediction_label"],"does":[[557.14525,"noise_label is indicated — a transient flash."],[558.19025,"pipeline moves to a new place on the board."],[558.19025,"loss is shown on the screen, written out."],[565.22525,"prediction_label is indicated — a transient flash."]]},{"start":566.68525,"say":"Then backpropagate through the denoising network exactly as in ordinary supervised learning. The parameters move in the direction that reduces expected noise-prediction error.","live":["question","loss","pipeline","clean_box","clean_label","noise_box","noise_label","mix_arrow_a","mix_arrow_b","noisy_box","noisy_label","time_label","network_arrow","network_box","network_label","output_arrow","prediction_box","prediction_label"],"does":[[567.32325,"gradient is shown on the screen, written out."]]},{"start":578.25625,"say":"There is no human annotation step. Labels are free because the forward process manufactured them. Yet the statistical structure is completely supervised: each input is paired with a definite target tensor.","live":["question","loss","gradient","pipeline","clean_box","clean_label","noise_box","noise_label","mix_arrow_a","mix_arrow_b","noisy_box","noisy_label","time_label","network_arrow","network_box","network_label","output_arrow","prediction_box","prediction_label"],"does":[[592.6067499999999,"pipeline moves to a new place on the board."],[592.6067499999999,"gradient is hidden from the screen — left the board."],[592.6067499999999,"loss is hidden from the screen — left the board."],[592.6067499999999,"question is hidden from the screen — left the board."]]},{"start":593.80675,"say":"Let us run one training example in the order an implementation uses. First, select a clean image from the data set.","live":["pipeline","clean_box","clean_label","noise_box","noise_label","mix_arrow_a","mix_arrow_b","noisy_box","noisy_label","time_label","network_arrow","network_box","network_label","output_arrow","prediction_box","prediction_label"],"does":[[593.80675,"heading_recipe is shown on the screen, written out."],[593.80675,"recipe is shown on the screen, written out."],[598.59025,"recipe is shown on the screen, written out."],[599.79725,"recipe (the \"row=2\" part) is emphasized."],[601.84075,"recipe (the \"row=2\" part) is no longer emphasized."]]},{"start":602.44075,"say":"Second, choose a time uniformly from the allowed diffusion steps. Across training, this makes the same network practise very light denoising, medium denoising, and recovery from extremely noisy inputs.","live":["pipeline","clean_box","clean_label","noise_box","noise_label","mix_arrow_a","mix_arrow_b","noisy_box","noisy_label","time_label","network_arrow","network_box","network_label","output_arrow","prediction_box","prediction_label","heading_recipe"],"does":[[602.91725,"recipe is shown on the screen, written out."],[604.2752499999999,"recipe (the \"row=3\" part) is emphasized."],[617.0577499999999,"recipe (the \"row=3\" part) is no longer emphasized."]]},{"start":617.65775,"say":"Third, draw a fresh Gaussian epsilon. Because it is newly sampled, the same clean image can generate unlimited distinct supervised examples.","live":null,"does":[[618.00625,"recipe is shown on the screen, written out."],[619.52625,"recipe (the \"row=4\" part) is emphasized."],[627.44475,"recipe (the \"row=4\" part) is no longer emphasized."]]},{"start":628.04475,"say":"Fourth, use the closed-form forward equation to construct x t directly. There is no need to execute every earlier noise step.","live":null,"does":[[628.39325,"recipe is shown on the screen, written out."],[631.2492500000001,"recipe (the \"row=5\" part) is emphasized."],[637.07675,"recipe (the \"row=5\" part) is no longer emphasized."]]},{"start":637.67675,"say":"Fifth, ask the network for epsilon and compare it with the sampled target. Repeat with new images, times, and noise tensors until the predictor works across the entire schedule.","live":null,"does":[[638.08325,"recipe is shown on the screen, written out."],[639.39525,"recipe (the \"row=6\" part) is emphasized."],[649.03175,"heading_recipe is hidden from the screen — left the board."],[649.03175,"pipeline is hidden from the screen — left the board."],[649.03175,"clean_box is hidden from the screen — pipeline left the board."],[649.03175,"clean_label is hidden from the screen — pipeline left the board."],[649.03175,"noise_box is hidden from the screen — pipeline left the board."],[649.03175,"noise_label is hidden from the screen — pipeline left the board."],[649.03175,"mix_arrow_a is hidden from the screen — pipeline left the board."],[649.03175,"mix_arrow_b is hidden from the screen — pipeline left the board."],[649.03175,"noisy_box is hidden from the screen — pipeline left the board."],[649.03175,"noisy_label is hidden from the screen — pipeline left the board."],[649.03175,"time_label is hidden from the screen — pipeline left the board."],[649.03175,"network_arrow is hidden from the screen — pipeline left the board."],[649.03175,"network_box is hidden from the screen — pipeline left the board."],[649.03175,"network_label is hidden from the screen — pipeline left the board."],[649.03175,"output_arrow is hidden from the screen — pipeline left the board."],[649.03175,"prediction_box is hidden from the screen — pipeline left the board."],[649.03175,"prediction_label is hidden from the screen — pipeline left the board."],[649.03175,"recipe is hidden from the screen — left the board."],[649.03175,"gradient is shown on the screen, faded in — cast on this board again."],[649.03175,"recipe (the \"row=6\" part) is no longer emphasized."]]},{"start":649.63175,"say":"The equations say the same thing compactly. Sample t uniformly from one through T.","live":["gradient"],"does":[[649.63175,"heading_loss is shown on the screen, written out."],[653.59025,"construction is shown on the screen, written out."]]},{"start":656.08275,"say":"Sample epsilon from a standard Gaussian. This epsilon is randomness, but once sampled it becomes an exact observed label.","live":["gradient","heading_loss"],"does":[[656.75625,"construction (the \"epsilon\" part) is emphasized."],[657.92925,"construction is shown on the screen, written out."],[663.73425,"construction (the \"epsilon\" part) is no longer emphasized."]]},{"start":665.14675,"say":"Mix x zero and epsilon using the schedule at t. The result x t is the network input.","live":null,"does":[[665.4952499999999,"construction is shown on the screen, written out."],[665.95925,"construction (the \"x_0\" part) is emphasized."],[667.27125,"construction (the \"epsilon\" part) is emphasized."],[667.27125,"construction (the \"x_0\" part) is no longer emphasized."],[672.56525,"construction (the \"epsilon\" part) is no longer emphasized."]]},{"start":673.16525,"say":"The network receives x t and t, and predicts epsilon hat. In image models, this predictor is often a convolutional network or transformer with multiscale spatial features, but its architecture does not change the learning target.","live":null,"does":[[674.07125,"construction (the \"x_t,t\" part) is emphasized."],[676.13725,"construction is shown on the screen, written out."],[688.08375,"construction (the \"x_t,t\" part) is no longer emphasized."]]},{"start":688.6837499999999,"say":"Finally minimize expected squared error. Expectations mean that we average over clean images, sampled times, and sampled noise. Standard minibatches approximate that average.","live":null,"does":[[690.59925,"loss is shown on the screen, written out."],[691.02925,"loss (the \"norm(epsilon-epsilon_theta(x_t,t))^2\" part) is emphasized."],[701.37325,"construction is hidden from the screen — left the board."],[701.37325,"gradient is hidden from the screen — left the board."],[701.37325,"heading_loss is hidden from the screen — left the board."],[701.37325,"loss is hidden from the screen — left the board."],[701.37325,"loss (the \"norm(epsilon-epsilon_theta(x_t,t))^2\" part) is no longer emphasized."]]},{"start":701.97325,"say":"Now compare this with demanding a finished image directly. A random seed does not come with one uniquely correct photograph. Many outputs could be plausible, so ordinary squared error has no single natural target.","live":[],"does":[[701.97325,"heading_compare is shown on the screen, written out."],[703.83125,"direct_problem is shown on the screen, written out."]]},{"start":716.4817499999999,"say":"Noise prediction is different. We chose the clean image, chose t, sampled epsilon, and computed x t. The exact epsilon is therefore a valid label for that exact input.","live":["direct_problem","heading_compare"],"does":[[717.74725,"noise_problem is shown on the screen, written out."],[724.44625,"noise_problem (the \"known exactly\" part) is emphasized."],[728.57925,"noise_problem (the \"known exactly\" part) is no longer emphasized."]]},{"start":729.1792499999999,"say":"The network is still learning something profound. To identify which fluctuations are noise, it must learn what natural image structure looks like at every scale. But the optimization interface remains an ordinary supervised regression problem.","live":["direct_problem","noise_problem","heading_compare"],"does":[[742.2752499999999,"noise_problem (the \"paired\" part) is indicated — a transient flash."]]},{"start":744.6982499999999,"say":"Once that predictor is accurate, we can present a noisy tensor, estimate the disturbance hidden inside it, and take a carefully calibrated step toward a cleaner tensor. Repeating that operation is the generative process.","live":null,"does":[[758.3500624999999,"direct_problem is hidden from the screen — left the board."],[758.3500624999999,"heading_compare is hidden from the screen — left the board."],[758.3500624999999,"noise_problem is hidden from the screen — left the board."]]}]},{"title":"Reversing the Process","start":759.3917291666667,"end":1029.9356458333334,"objects":{"cap_edges":"a Math [text] that says \"$x_200$\"","cap_final":"a Math [text] that says \"$x_0$\"","cap_layout":"a Math [text] that says \"$x_750$\"","cap_objects":"a Math [text] that says \"$x_450$\"","cap_pure":"a Math [text] that says \"$x_T$\"","circle":"a Circle [yellow] drawn in picture_3 (center=(6.7, 4.9), radius=0.52, filled=True)","circle_2":"a Circle [yellow] drawn in picture_4 (center=(6.7, 4.9), radius=0.52, filled=True)","circle_3":"a Circle [yellow] drawn in picture_5 (center=(6.7, 4.9), radius=0.52, filled=True)","heading_emerge":"a Heading that says \"Structure Before Detail\"","heading_loop":"a Heading that says \"The Sampling Loop\"","heading_rule":"a Heading that says \"One Reverse Step\"","heading_start":"a Heading that says \"Begin With Noise\"","line":"a Line [red] drawn in picture_4 (start=(4.7, 0.9), end=(6.5, 0.9))","line_2":"a Line [yellow] drawn in picture_4 (start=(4.4, 2.5), end=(6.8, 2.5))","line_3":"a Line [red] drawn in picture_5 (start=(4.7, 0.9), end=(6.5, 0.9))","line_4":"a Line [yellow] drawn in picture_5 (start=(4.4, 2.5), end=(6.8, 2.5))","loop":"a Table [text] that says \"Stage Operation Start Sample $x_T$ from $cal(N)(0,I)$ Predict Compute $hat(epsilon)_t=epsilon_theta(x_t,t)$ Step Form a slightly cleaner $x_(t-1)$ Repeat Decrease $t$ until reaching $x_0$\" (rows=(('Stage', 'Operation'), ('Start', 'Sample $x_T$ from $cal(N)(0…, header=True)","mean":"a Math [text] that says \"$mu_theta(x_t,t) = frac(1,sqrt(alpha_t)) (x_t-frac(1-alpha_t,sqrt(1-overline(alpha)_t))hat(epsilon)_t)$\"","picture":"a Figure (x_range=(0.0, 8.0), y_range=(0.0, 6.0), aspect=(4.0, 3.0))","picture_2":"a Figure (x_range=(0.0, 8.0), y_range=(0.0, 6.0), aspect=(4.0, 3.0))","picture_3":"a Figure (x_range=(0.0, 8.0), y_range=(0.0, 6.0), aspect=(4.0, 3.0))","picture_4":"a Figure (x_range=(0.0, 8.0), y_range=(0.0, 6.0), aspect=(4.0, 3.0))","picture_5":"a Figure (x_range=(0.0, 8.0), y_range=(0.0, 6.0), aspect=(4.0, 3.0))","polygon":"a Polygon [red] drawn in picture (vertices=((0, 0), (1.0, 0), (1.0, 1.0), (0, 1.0)), fill_opacity=1.0)","polygon_10":"a Polygon [magenta] drawn in picture (vertices=((1, 1), (2.0, 1), (2.0, 2.0), (1, 2.0)), fill_opacity=1.0)","polygon_100":"a Polygon [blue] drawn in picture_3 (vertices=((7, 2), (8.0, 2), (8.0, 3.0), (7, 3.0)), fill_opacity=0.48)","polygon_101":"a Polygon [green] drawn in picture_3 (vertices=((0, 5), (1.0, 5), (1.0, 6.0), (0, 6.0)), fill_opacity=0.48)","polygon_102":"a Polygon [magenta] drawn in picture_3 (vertices=((1, 1), (2.0, 1), (2.0, 2.0), (1, 2.0)), fill_opacity=0.48)","polygon_103":"a Polygon [green] drawn in picture_3 (vertices=((2, 3), (3.0, 3), (3.0, 4.0), (2, 4.0)), fill_opacity=0.48)","polygon_104":"a Polygon [magenta] drawn in picture_3 (vertices=((3, 5), (4.0, 5), (4.0, 6.0), (3, 6.0)), fill_opacity=0.48)","polygon_105":"a Polygon [green] drawn in picture_3 (vertices=((4, 1), (5.0, 1), (5.0, 2.0), (4, 2.0)), fill_opacity=0.48)","polygon_106":"a Polygon [magenta] drawn in picture_3 (vertices=((5, 3), (6.0, 3), (6.0, 4.0), (5, 4.0)), fill_opacity=0.48)","polygon_107":"a Polygon [green] drawn in picture_3 (vertices=((6, 5), (7.0, 5), (7.0, 6.0), (6, 6.0)), fill_opacity=0.48)","polygon_108":"a Polygon [magenta] drawn in picture_3 (vertices=((7, 1), (8.0, 1), (8.0, 2.0), (7, 2.0)), fill_opacity=0.48)","polygon_109":"a Polygon [yellow] drawn in picture_3 (vertices=((0, 4), (1.0, 4), (1.0, 5.0), (0, 5.0)), fill_opacity=0.48)","polygon_11":"a Polygon [green] drawn in picture (vertices=((2, 3), (3.0, 3), (3.0, 4.0), (2, 4.0)), fill_opacity=1.0)","polygon_110":"a Polygon [gray] drawn in picture_3 (vertices=((1, 0), (2.0, 0), (2.0, 1.0), (1, 1.0)), fill_opacity=0.48)","polygon_111":"a Polygon [yellow] drawn in picture_3 (vertices=((2, 2), (3.0, 2), (3.0, 3.0), (2, 3.0)), fill_opacity=0.48)","polygon_112":"a Polygon [gray] drawn in picture_3 (vertices=((3, 4), (4.0, 4), (4.0, 5.0), (3, 5.0)), fill_opacity=0.48)","polygon_113":"a Polygon [yellow] drawn in picture_3 (vertices=((4, 0), (5.0, 0), (5.0, 1.0), (4, 1.0)), fill_opacity=0.48)","polygon_114":"a Polygon [gray] drawn in picture_3 (vertices=((5, 2), (6.0, 2), (6.0, 3.0), (5, 3.0)), fill_opacity=0.48)","polygon_115":"a Polygon [yellow] drawn in picture_3 (vertices=((6, 4), (7.0, 4), (7.0, 5.0), (6, 5.0)), fill_opacity=0.48)","polygon_116":"a Polygon [blue] drawn in picture_4 (vertices=((0.0, 2.0), (8.0, 2.0), (8.0, 6.0), (0.0, 6.0)), fill_opacity=0.28)","polygon_117":"a Polygon [green] drawn in picture_4 (vertices=((0.0, 0.0), (8.0, 0.0), (8.0, 2.0), (0.0, 2.0)), fill_opacity=0.34)","polygon_118":"a Polygon [gray] drawn in picture_4 (vertices=((0.0, 2.0), (2.5, 4.6), (4.2, 2.0)), fill_opacity=0.55)","polygon_119":"a Polygon [gray] drawn in picture_4 (vertices=((2.0, 2.0), (4.9, 5.0), (7.2, 2.0)), fill_opacity=0.42)","polygon_12":"a Polygon [magenta] drawn in picture (vertices=((3, 5), (4.0, 5), (4.0, 6.0), (3, 6.0)), fill_opacity=1.0)","polygon_120":"a Polygon [red] drawn in picture_4 (vertices=((4.7, 0.9), (6.5, 0.9), (6.5, 2.5), (4.7, 2.5)), fill_opacity=0.7)","polygon_121":"a Polygon [yellow] drawn in picture_4 (vertices=((4.4, 2.5), (5.6, 3.45), (6.8, 2.5)), fill_opacity=0.7)","polygon_122":"a Polygon [gray] drawn in picture_4 (vertices=((5.42, 0.9), (5.82, 0.9), (5.82, 1.72), (5.42, 1.72)), fill_opacity=0.86)","polygon_123":"a Polygon [cyan] drawn in picture_4 (vertices=((4.98, 1.82), (5.38, 1.82), (5.38, 2.2), (4.98, 2.2)), fill_opacity=0.92)","polygon_124":"a Polygon [cyan] drawn in picture_4 (vertices=((5.86, 1.82), (6.26, 1.82), (6.26, 2.2), (5.86, 2.2)), fill_opacity=0.92)","polygon_125":"a Polygon [red] drawn in picture_4 (vertices=((0, 0), (1.0, 0), (1.0, 1.0), (0, 1.0)))","polygon_126":"a Polygon [blue] drawn in picture_4 (vertices=((1, 2), (2.0, 2), (2.0, 3.0), (1, 3.0)))","polygon_127":"a Polygon [red] drawn in picture_4 (vertices=((2, 4), (3.0, 4), (3.0, 5.0), (2, 5.0)))","polygon_128":"a Polygon [blue] drawn in picture_4 (vertices=((3, 0), (4.0, 0), (4.0, 1.0), (3, 1.0)))","polygon_129":"a Polygon [red] drawn in picture_4 (vertices=((4, 2), (5.0, 2), (5.0, 3.0), (4, 3.0)))","polygon_13":"a Polygon [green] drawn in picture (vertices=((4, 1), (5.0, 1), (5.0, 2.0), (4, 2.0)), fill_opacity=1.0)","polygon_130":"a Polygon [blue] drawn in picture_4 (vertices=((5, 4), (6.0, 4), (6.0, 5.0), (5, 5.0)))","polygon_131":"a Polygon [red] drawn in picture_4 (vertices=((6, 0), (7.0, 0), (7.0, 1.0), (6, 1.0)))","polygon_132":"a Polygon [blue] drawn in picture_4 (vertices=((7, 2), (8.0, 2), (8.0, 3.0), (7, 3.0)))","polygon_133":"a Polygon [green] drawn in picture_4 (vertices=((0, 5), (1.0, 5), (1.0, 6.0), (0, 6.0)))","polygon_134":"a Polygon [magenta] drawn in picture_4 (vertices=((1, 1), (2.0, 1), (2.0, 2.0), (1, 2.0)))","polygon_135":"a Polygon [green] drawn in picture_4 (vertices=((2, 3), (3.0, 3), (3.0, 4.0), (2, 4.0)))","polygon_136":"a Polygon [magenta] drawn in picture_4 (vertices=((3, 5), (4.0, 5), (4.0, 6.0), (3, 6.0)))","polygon_137":"a Polygon [green] drawn in picture_4 (vertices=((4, 1), (5.0, 1), (5.0, 2.0), (4, 2.0)))","polygon_138":"a Polygon [blue] drawn in picture_5 (vertices=((0.0, 2.0), (8.0, 2.0), (8.0, 6.0), (0.0, 6.0)), fill_opacity=0.28)","polygon_139":"a Polygon [green] drawn in picture_5 (vertices=((0.0, 0.0), (8.0, 0.0), (8.0, 2.0), (0.0, 2.0)), fill_opacity=0.34)","polygon_14":"a Polygon [magenta] drawn in picture (vertices=((5, 3), (6.0, 3), (6.0, 4.0), (5, 4.0)), fill_opacity=1.0)","polygon_140":"a Polygon [gray] drawn in picture_5 (vertices=((0.0, 2.0), (2.5, 4.6), (4.2, 2.0)), fill_opacity=0.55)","polygon_141":"a Polygon [gray] drawn in picture_5 (vertices=((2.0, 2.0), (4.9, 5.0), (7.2, 2.0)), fill_opacity=0.42)","polygon_142":"a Polygon [red] drawn in picture_5 (vertices=((4.7, 0.9), (6.5, 0.9), (6.5, 2.5), (4.7, 2.5)), fill_opacity=0.7)","polygon_143":"a Polygon [yellow] drawn in picture_5 (vertices=((4.4, 2.5), (5.6, 3.45), (6.8, 2.5)), fill_opacity=0.7)","polygon_144":"a Polygon [gray] drawn in picture_5 (vertices=((5.42, 0.9), (5.82, 0.9), (5.82, 1.72), (5.42, 1.72)), fill_opacity=0.86)","polygon_145":"a Polygon [cyan] drawn in picture_5 (vertices=((4.98, 1.82), (5.38, 1.82), (5.38, 2.2), (4.98, 2.2)), fill_opacity=0.92)","polygon_146":"a Polygon [cyan] drawn in picture_5 (vertices=((5.86, 1.82), (6.26, 1.82), (6.26, 2.2), (5.86, 2.2)), fill_opacity=0.92)","polygon_15":"a Polygon [green] drawn in picture (vertices=((6, 5), (7.0, 5), (7.0, 6.0), (6, 6.0)), fill_opacity=1.0)","polygon_16":"a Polygon [magenta] drawn in picture (vertices=((7, 1), (8.0, 1), (8.0, 2.0), (7, 2.0)), fill_opacity=1.0)","polygon_17":"a Polygon [yellow] drawn in picture (vertices=((0, 4), (1.0, 4), (1.0, 5.0), (0, 5.0)), fill_opacity=1.0)","polygon_18":"a Polygon [gray] drawn in picture (vertices=((1, 0), (2.0, 0), (2.0, 1.0), (1, 1.0)), fill_opacity=1.0)","polygon_19":"a Polygon [yellow] drawn in picture (vertices=((2, 2), (3.0, 2), (3.0, 3.0), (2, 3.0)), fill_opacity=1.0)","polygon_2":"a Polygon [blue] drawn in picture (vertices=((1, 2), (2.0, 2), (2.0, 3.0), (1, 3.0)), fill_opacity=1.0)","polygon_20":"a Polygon [gray] drawn in picture (vertices=((3, 4), (4.0, 4), (4.0, 5.0), (3, 5.0)), fill_opacity=1.0)","polygon_21":"a Polygon [yellow] drawn in picture (vertices=((4, 0), (5.0, 0), (5.0, 1.0), (4, 1.0)), fill_opacity=1.0)","polygon_22":"a Polygon [gray] drawn in picture (vertices=((5, 2), (6.0, 2), (6.0, 3.0), (5, 3.0)), fill_opacity=1.0)","polygon_23":"a Polygon [yellow] drawn in picture (vertices=((6, 4), (7.0, 4), (7.0, 5.0), (6, 5.0)), fill_opacity=1.0)","polygon_24":"a Polygon [gray] drawn in picture (vertices=((7, 0), (8.0, 0), (8.0, 1.0), (7, 1.0)), fill_opacity=1.0)","polygon_25":"a Polygon [blue] drawn in picture (vertices=((0, 3), (1.0, 3), (1.0, 4.0), (0, 4.0)), fill_opacity=1.0)","polygon_26":"a Polygon [red] drawn in picture (vertices=((1, 5), (2.0, 5), (2.0, 6.0), (1, 6.0)), fill_opacity=1.0)","polygon_27":"a Polygon [blue] drawn in picture (vertices=((2, 1), (3.0, 1), (3.0, 2.0), (2, 2.0)), fill_opacity=1.0)","polygon_28":"a Polygon [red] drawn in picture (vertices=((3, 3), (4.0, 3), (4.0, 4.0), (3, 4.0)), fill_opacity=1.0)","polygon_29":"a Polygon [blue] drawn in picture (vertices=((4, 5), (5.0, 5), (5.0, 6.0), (4, 6.0)), fill_opacity=1.0)","polygon_3":"a Polygon [red] drawn in picture (vertices=((2, 4), (3.0, 4), (3.0, 5.0), (2, 5.0)), fill_opacity=1.0)","polygon_30":"a Polygon [red] drawn in picture (vertices=((5, 1), (6.0, 1), (6.0, 2.0), (5, 2.0)), fill_opacity=1.0)","polygon_31":"a Polygon [blue] drawn in picture (vertices=((6, 3), (7.0, 3), (7.0, 4.0), (6, 4.0)), fill_opacity=1.0)","polygon_32":"a Polygon [red] drawn in picture (vertices=((7, 5), (8.0, 5), (8.0, 6.0), (7, 6.0)), fill_opacity=1.0)","polygon_33":"a Polygon [magenta] drawn in picture (vertices=((0, 2), (1.0, 2), (1.0, 3.0), (0, 3.0)), fill_opacity=1.0)","polygon_34":"a Polygon [green] drawn in picture (vertices=((1, 4), (2.0, 4), (2.0, 5.0), (1, 5.0)), fill_opacity=1.0)","polygon_35":"a Polygon [magenta] drawn in picture (vertices=((2, 0), (3.0, 0), (3.0, 1.0), (2, 1.0)), fill_opacity=1.0)","polygon_36":"a Polygon [green] drawn in picture (vertices=((3, 2), (4.0, 2), (4.0, 3.0), (3, 3.0)), fill_opacity=1.0)","polygon_37":"a Polygon [magenta] drawn in picture (vertices=((4, 4), (5.0, 4), (5.0, 5.0), (4, 5.0)), fill_opacity=1.0)","polygon_38":"a Polygon [green] drawn in picture (vertices=((5, 0), (6.0, 0), (6.0, 1.0), (5, 1.0)), fill_opacity=1.0)","polygon_39":"a Polygon [magenta] drawn in picture (vertices=((6, 2), (7.0, 2), (7.0, 3.0), (6, 3.0)), fill_opacity=1.0)","polygon_4":"a Polygon [blue] drawn in picture (vertices=((3, 0), (4.0, 0), (4.0, 1.0), (3, 1.0)), fill_opacity=1.0)","polygon_40":"a Polygon [green] drawn in picture (vertices=((7, 4), (8.0, 4), (8.0, 5.0), (7, 5.0)), fill_opacity=1.0)","polygon_41":"a Polygon [gray] drawn in picture (vertices=((0, 1), (1.0, 1), (1.0, 2.0), (0, 2.0)), fill_opacity=1.0)","polygon_42":"a Polygon [yellow] drawn in picture (vertices=((1, 3), (2.0, 3), (2.0, 4.0), (1, 4.0)), fill_opacity=1.0)","polygon_43":"a Polygon [gray] drawn in picture (vertices=((2, 5), (3.0, 5), (3.0, 6.0), (2, 6.0)), fill_opacity=1.0)","polygon_44":"a Polygon [yellow] drawn in picture (vertices=((3, 1), (4.0, 1), (4.0, 2.0), (3, 2.0)), fill_opacity=1.0)","polygon_45":"a Polygon [gray] drawn in picture (vertices=((4, 3), (5.0, 3), (5.0, 4.0), (4, 4.0)), fill_opacity=1.0)","polygon_46":"a Polygon [yellow] drawn in picture (vertices=((5, 5), (6.0, 5), (6.0, 6.0), (5, 6.0)), fill_opacity=1.0)","polygon_47":"a Polygon [gray] drawn in picture (vertices=((6, 1), (7.0, 1), (7.0, 2.0), (6, 2.0)), fill_opacity=1.0)","polygon_48":"a Polygon [yellow] drawn in picture (vertices=((7, 3), (8.0, 3), (8.0, 4.0), (7, 4.0)), fill_opacity=1.0)","polygon_49":"a Polygon [blue] drawn in picture_2 (vertices=((0.0, 2.0), (8.0, 2.0), (8.0, 6.0), (0.0, 6.0)), fill_opacity=0.28)","polygon_5":"a Polygon [red] drawn in picture (vertices=((4, 2), (5.0, 2), (5.0, 3.0), (4, 3.0)), fill_opacity=1.0)","polygon_50":"a Polygon [green] drawn in picture_2 (vertices=((0.0, 0.0), (8.0, 0.0), (8.0, 2.0), (0.0, 2.0)), fill_opacity=0.34)","polygon_51":"a Polygon [gray] drawn in picture_2 (vertices=((0.0, 2.0), (2.5, 4.6), (4.2, 2.0)), fill_opacity=0.55)","polygon_52":"a Polygon [gray] drawn in picture_2 (vertices=((2.0, 2.0), (4.9, 5.0), (7.2, 2.0)), fill_opacity=0.42)","polygon_53":"a Polygon [red] drawn in picture_2 (vertices=((0, 0), (1.0, 0), (1.0, 1.0), (0, 1.0)), fill_opacity=0.72)","polygon_54":"a Polygon [blue] drawn in picture_2 (vertices=((1, 2), (2.0, 2), (2.0, 3.0), (1, 3.0)), fill_opacity=0.72)","polygon_55":"a Polygon [red] drawn in picture_2 (vertices=((2, 4), (3.0, 4), (3.0, 5.0), (2, 5.0)), fill_opacity=0.72)","polygon_56":"a Polygon [blue] drawn in picture_2 (vertices=((3, 0), (4.0, 0), (4.0, 1.0), (3, 1.0)), fill_opacity=0.72)","polygon_57":"a Polygon [red] drawn in picture_2 (vertices=((4, 2), (5.0, 2), (5.0, 3.0), (4, 3.0)), fill_opacity=0.72)","polygon_58":"a Polygon [blue] drawn in picture_2 (vertices=((5, 4), (6.0, 4), (6.0, 5.0), (5, 5.0)), fill_opacity=0.72)","polygon_59":"a Polygon [red] drawn in picture_2 (vertices=((6, 0), (7.0, 0), (7.0, 1.0), (6, 1.0)), fill_opacity=0.72)","polygon_6":"a Polygon [blue] drawn in picture (vertices=((5, 4), (6.0, 4), (6.0, 5.0), (5, 5.0)), fill_opacity=1.0)","polygon_60":"a Polygon [blue] drawn in picture_2 (vertices=((7, 2), (8.0, 2), (8.0, 3.0), (7, 3.0)), fill_opacity=0.72)","polygon_61":"a Polygon [green] drawn in picture_2 (vertices=((0, 5), (1.0, 5), (1.0, 6.0), (0, 6.0)), fill_opacity=0.72)","polygon_62":"a Polygon [magenta] drawn in picture_2 (vertices=((1, 1), (2.0, 1), (2.0, 2.0), (1, 2.0)), fill_opacity=0.72)","polygon_63":"a Polygon [green] drawn in picture_2 (vertices=((2, 3), (3.0, 3), (3.0, 4.0), (2, 4.0)), fill_opacity=0.72)","polygon_64":"a Polygon [magenta] drawn in picture_2 (vertices=((3, 5), (4.0, 5), (4.0, 6.0), (3, 6.0)), fill_opacity=0.72)","polygon_65":"a Polygon [green] drawn in picture_2 (vertices=((4, 1), (5.0, 1), (5.0, 2.0), (4, 2.0)), fill_opacity=0.72)","polygon_66":"a Polygon [magenta] drawn in picture_2 (vertices=((5, 3), (6.0, 3), (6.0, 4.0), (5, 4.0)), fill_opacity=0.72)","polygon_67":"a Polygon [green] drawn in picture_2 (vertices=((6, 5), (7.0, 5), (7.0, 6.0), (6, 6.0)), fill_opacity=0.72)","polygon_68":"a Polygon [magenta] drawn in picture_2 (vertices=((7, 1), (8.0, 1), (8.0, 2.0), (7, 2.0)), fill_opacity=0.72)","polygon_69":"a Polygon [yellow] drawn in picture_2 (vertices=((0, 4), (1.0, 4), (1.0, 5.0), (0, 5.0)), fill_opacity=0.72)","polygon_7":"a Polygon [red] drawn in picture (vertices=((6, 0), (7.0, 0), (7.0, 1.0), (6, 1.0)), fill_opacity=1.0)","polygon_70":"a Polygon [gray] drawn in picture_2 (vertices=((1, 0), (2.0, 0), (2.0, 1.0), (1, 1.0)), fill_opacity=0.72)","polygon_71":"a Polygon [yellow] drawn in picture_2 (vertices=((2, 2), (3.0, 2), (3.0, 3.0), (2, 3.0)), fill_opacity=0.72)","polygon_72":"a Polygon [gray] drawn in picture_2 (vertices=((3, 4), (4.0, 4), (4.0, 5.0), (3, 5.0)), fill_opacity=0.72)","polygon_73":"a Polygon [yellow] drawn in picture_2 (vertices=((4, 0), (5.0, 0), (5.0, 1.0), (4, 1.0)), fill_opacity=0.72)","polygon_74":"a Polygon [gray] drawn in picture_2 (vertices=((5, 2), (6.0, 2), (6.0, 3.0), (5, 3.0)), fill_opacity=0.72)","polygon_75":"a Polygon [yellow] drawn in picture_2 (vertices=((6, 4), (7.0, 4), (7.0, 5.0), (6, 5.0)), fill_opacity=0.72)","polygon_76":"a Polygon [gray] drawn in picture_2 (vertices=((7, 0), (8.0, 0), (8.0, 1.0), (7, 1.0)), fill_opacity=0.72)","polygon_77":"a Polygon [blue] drawn in picture_2 (vertices=((0, 3), (1.0, 3), (1.0, 4.0), (0, 4.0)), fill_opacity=0.72)","polygon_78":"a Polygon [red] drawn in picture_2 (vertices=((1, 5), (2.0, 5), (2.0, 6.0), (1, 6.0)), fill_opacity=0.72)","polygon_79":"a Polygon [blue] drawn in picture_2 (vertices=((2, 1), (3.0, 1), (3.0, 2.0), (2, 2.0)), fill_opacity=0.72)","polygon_8":"a Polygon [blue] drawn in picture (vertices=((7, 2), (8.0, 2), (8.0, 3.0), (7, 3.0)), fill_opacity=1.0)","polygon_80":"a Polygon [red] drawn in picture_2 (vertices=((3, 3), (4.0, 3), (4.0, 4.0), (3, 4.0)), fill_opacity=0.72)","polygon_81":"a Polygon [blue] drawn in picture_2 (vertices=((4, 5), (5.0, 5), (5.0, 6.0), (4, 6.0)), fill_opacity=0.72)","polygon_82":"a Polygon [red] drawn in picture_2 (vertices=((5, 1), (6.0, 1), (6.0, 2.0), (5, 2.0)), fill_opacity=0.72)","polygon_83":"a Polygon [blue] drawn in picture_2 (vertices=((6, 3), (7.0, 3), (7.0, 4.0), (6, 4.0)), fill_opacity=0.72)","polygon_84":"a Polygon [red] drawn in picture_2 (vertices=((7, 5), (8.0, 5), (8.0, 6.0), (7, 6.0)), fill_opacity=0.72)","polygon_85":"a Polygon [magenta] drawn in picture_2 (vertices=((0, 2), (1.0, 2), (1.0, 3.0), (0, 3.0)), fill_opacity=0.72)","polygon_86":"a Polygon [green] drawn in picture_2 (vertices=((1, 4), (2.0, 4), (2.0, 5.0), (1, 5.0)), fill_opacity=0.72)","polygon_87":"a Polygon [blue] drawn in picture_3 (vertices=((0.0, 2.0), (8.0, 2.0), (8.0, 6.0), (0.0, 6.0)), fill_opacity=0.28)","polygon_88":"a Polygon [green] drawn in picture_3 (vertices=((0.0, 0.0), (8.0, 0.0), (8.0, 2.0), (0.0, 2.0)), fill_opacity=0.34)","polygon_89":"a Polygon [gray] drawn in picture_3 (vertices=((0.0, 2.0), (2.5, 4.6), (4.2, 2.0)), fill_opacity=0.55)","polygon_9":"a Polygon [green] drawn in picture (vertices=((0, 5), (1.0, 5), (1.0, 6.0), (0, 6.0)), fill_opacity=1.0)","polygon_90":"a Polygon [gray] drawn in picture_3 (vertices=((2.0, 2.0), (4.9, 5.0), (7.2, 2.0)), fill_opacity=0.42)","polygon_91":"a Polygon [red] drawn in picture_3 (vertices=((4.7, 0.9), (6.5, 0.9), (6.5, 2.5), (4.7, 2.5)), fill_opacity=0.7)","polygon_92":"a Polygon [yellow] drawn in picture_3 (vertices=((4.4, 2.5), (5.6, 3.45), (6.8, 2.5)), fill_opacity=0.7)","polygon_93":"a Polygon [red] drawn in picture_3 (vertices=((0, 0), (1.0, 0), (1.0, 1.0), (0, 1.0)), fill_opacity=0.48)","polygon_94":"a Polygon [blue] drawn in picture_3 (vertices=((1, 2), (2.0, 2), (2.0, 3.0), (1, 3.0)), fill_opacity=0.48)","polygon_95":"a Polygon [red] drawn in picture_3 (vertices=((2, 4), (3.0, 4), (3.0, 5.0), (2, 5.0)), fill_opacity=0.48)","polygon_96":"a Polygon [blue] drawn in picture_3 (vertices=((3, 0), (4.0, 0), (4.0, 1.0), (3, 1.0)), fill_opacity=0.48)","polygon_97":"a Polygon [red] drawn in picture_3 (vertices=((4, 2), (5.0, 2), (5.0, 3.0), (4, 3.0)), fill_opacity=0.48)","polygon_98":"a Polygon [blue] drawn in picture_3 (vertices=((5, 4), (6.0, 4), (6.0, 5.0), (5, 5.0)), fill_opacity=0.48)","polygon_99":"a Polygon [red] drawn in picture_3 (vertices=((6, 0), (7.0, 0), (7.0, 1.0), (6, 1.0)), fill_opacity=0.48)","predict":"a Math [text] that says \"$hat(epsilon)_t = epsilon_theta(x_t,t)$\"","sample":"a Math [text] that says \"$x_(t-1) = mu_theta(x_t,t) + sigma_t z, quad z in cal(N)(0,I)$\"","stochastic_note":"a Panel that says \"The reverse mean removes predicted corruption. A calibrated random term preserves the uncertainty needed to sample diverse images.\""},"beats":[{"start":759.3917291666667,"say":"Generation begins at the endpoint of the forward process. Sample x T directly from standard Gaussian noise. There is no hidden photograph underneath this particular tensor, because we did not obtain it by corrupting a data image.","live":[],"does":[[759.3917291666667,"heading_start is shown on the screen, written out."],[765.2087291666667,"picture is shown on the screen, written out."],[765.2087291666667,"polygon is shown on the screen, written out."],[765.2087291666667,"polygon_2 is shown on the screen, written out."],[765.2087291666667,"polygon_3 is shown on the screen, written out."],[765.2087291666667,"polygon_4 is shown on the screen, written out."],[765.2087291666667,"polygon_5 is shown on the screen, written out."],[765.2087291666667,"polygon_6 is shown on the screen, written out."],[765.2087291666667,"polygon_7 is shown on the screen, written out."],[765.2087291666667,"polygon_8 is shown on the screen, written out."],[765.2087291666667,"polygon_9 is shown on the screen, written out."],[765.2087291666667,"polygon_10 is shown on the screen, written out."],[765.2087291666667,"polygon_11 is shown on the screen, written out."],[765.2087291666667,"polygon_12 is shown on the screen, written out."],[765.2087291666667,"polygon_13 is shown on the screen, written out."],[765.2087291666667,"polygon_14 is shown on the screen, written out."],[765.2087291666667,"polygon_15 is shown on the screen, written out."],[765.2087291666667,"polygon_16 is shown on the screen, written out."],[765.2087291666667,"polygon_17 is shown on the screen, written out."],[765.2087291666667,"polygon_18 is shown on the screen, written out."],[765.2087291666667,"polygon_19 is shown on the screen, written out."],[765.2087291666667,"polygon_20 is shown on the screen, written out."],[765.2087291666667,"polygon_21 is shown on the screen, written out."],[765.2087291666667,"polygon_22 is shown on the screen, written out."],[765.2087291666667,"polygon_23 is shown on the screen, written out."],[765.2087291666667,"polygon_24 is shown on the screen, written out."],[765.2087291666667,"polygon_25 is shown on the screen, written out."],[765.2087291666667,"polygon_26 is shown on the screen, written out."],[765.2087291666667,"polygon_27 is shown on the screen, written out."],[765.2087291666667,"polygon_28 is shown on the screen, written out."],[765.2087291666667,"polygon_29 is shown on the screen, written out."],[765.2087291666667,"polygon_30 is shown on the screen, written out."],[765.2087291666667,"polygon_31 is shown on the screen, written out."],[765.2087291666667,"polygon_32 is shown on the screen, written out."],[765.2087291666667,"polygon_33 is shown on the screen, written out."],[765.2087291666667,"polygon_34 is shown on the screen, written out."],[765.2087291666667,"polygon_35 is shown on the screen, written out."],[765.2087291666667,"polygon_36 is shown on the screen, written out."],[765.2087291666667,"polygon_37 is shown on the screen, written out."],[765.2087291666667,"polygon_38 is shown on the screen, written out."],[765.2087291666667,"polygon_39 is shown on the screen, written out."],[765.2087291666667,"polygon_40 is shown on the screen, written out."],[765.2087291666667,"polygon_41 is shown on the screen, written out."],[765.2087291666667,"polygon_42 is shown on the screen, written out."],[765.2087291666667,"polygon_43 is shown on the screen, written out."],[765.2087291666667,"polygon_44 is shown on the screen, written out."],[765.2087291666667,"polygon_45 is shown on the screen, written out."],[765.2087291666667,"polygon_46 is shown on the screen, written out."],[765.2087291666667,"polygon_47 is shown on the screen, written out."],[765.2087291666667,"polygon_48 is shown on the screen, written out."],[765.2087291666667,"cap_pure is shown on the screen, written out."]]},{"start":773.9357291666666,"say":"Ask the trained network which part of this tensor looks like noise at time T. Then use the reverse transition to produce x T minus one, a sample expected to contain very slightly more image structure.","live":["picture","cap_pure","heading_start","polygon","polygon_2","polygon_3","polygon_4","polygon_5","polygon_6","polygon_7","polygon_8","polygon_9","polygon_10","polygon_11","polygon_12","polygon_13","polygon_14","polygon_15","polygon_16","polygon_17","polygon_18","polygon_19","polygon_20","polygon_21","polygon_22","polygon_23","polygon_24","polygon_25","polygon_26","polygon_27","polygon_28","polygon_29","polygon_30","polygon_31","polygon_32","polygon_33","polygon_34","polygon_35","polygon_36","polygon_37","polygon_38","polygon_39","polygon_40","polygon_41","polygon_42","polygon_43","polygon_44","polygon_45","polygon_46","polygon_47","polygon_48"],"does":[[776.3267291666666,"polygon_48 is indicated — a transient flash."]]},{"start":787.2597291666667,"say":"One step is not supposed to reveal a finished picture. Training taught the network a family of modest corrections, one for every noise level. Image generation comes from composing those corrections.","live":null,"does":[]},{"start":801.0952291666666,"say":"After many early reverse steps, broad statistical organization appears. Large regions begin to behave like sky and ground. A horizon and mountain mass can emerge even though individual pixels remain highly uncertain.","live":null,"does":[[804.5437291666667,"picture_2 is shown on the screen, written out."],[804.5437291666667,"polygon_49 is shown on the screen, written out."],[804.5437291666667,"polygon_50 is shown on the screen, written out."],[804.5437291666667,"polygon_51 is shown on the screen, written out."],[804.5437291666667,"polygon_52 is shown on the screen, written out."],[804.5437291666667,"polygon_53 is shown on the screen, written out."],[804.5437291666667,"polygon_54 is shown on the screen, written out."],[804.5437291666667,"polygon_55 is shown on the screen, written out."],[804.5437291666667,"polygon_56 is shown on the screen, written out."],[804.5437291666667,"polygon_57 is shown on the screen, written out."],[804.5437291666667,"polygon_58 is shown on the screen, written out."],[804.5437291666667,"polygon_59 is shown on the screen, written out."],[804.5437291666667,"polygon_60 is shown on the screen, written out."],[804.5437291666667,"polygon_61 is shown on the screen, written out."],[804.5437291666667,"polygon_62 is shown on the screen, written out."],[804.5437291666667,"polygon_63 is shown on the screen, written out."],[804.5437291666667,"polygon_64 is shown on the screen, written out."],[804.5437291666667,"polygon_65 is shown on the screen, written out."],[804.5437291666667,"polygon_66 is shown on the screen, written out."],[804.5437291666667,"polygon_67 is shown on the screen, written out."],[804.5437291666667,"polygon_68 is shown on the screen, written out."],[804.5437291666667,"polygon_69 is shown on the screen, written out."],[804.5437291666667,"polygon_70 is shown on the screen, written out."],[804.5437291666667,"polygon_71 is shown on the screen, written out."],[804.5437291666667,"polygon_72 is shown on the screen, written out."],[804.5437291666667,"polygon_73 is shown on the screen, written out."],[804.5437291666667,"polygon_74 is shown on the screen, written out."],[804.5437291666667,"polygon_75 is shown on the screen, written out."],[804.5437291666667,"polygon_76 is shown on the screen, written out."],[804.5437291666667,"polygon_77 is shown on the screen, written out."],[804.5437291666667,"polygon_78 is shown on the screen, written out."],[804.5437291666667,"polygon_79 is shown on the screen, written out."],[804.5437291666667,"polygon_80 is shown on the screen, written out."],[804.5437291666667,"polygon_81 is shown on the screen, written out."],[804.5437291666667,"polygon_82 is shown on the screen, written out."],[804.5437291666667,"polygon_83 is shown on the screen, written out."],[804.5437291666667,"polygon_84 is shown on the screen, written out."],[804.5437291666667,"polygon_85 is shown on the screen, written out."],[804.5437291666667,"polygon_86 is shown on the screen, written out."],[804.5437291666667,"cap_layout is shown on the screen, written out."]]},{"start":816.1852291666667,"say":"Continue through medium noise levels. The process commits to object-scale structure: a bright region in the sky, a building-sized block, and a roof shape. These are global decisions about composition rather than finished texture.","live":["picture","cap_pure","picture_2","cap_layout","heading_start","polygon","polygon_2","polygon_3","polygon_4","polygon_5","polygon_6","polygon_7","polygon_8","polygon_9","polygon_10","polygon_11","polygon_12","polygon_13","polygon_14","polygon_15","polygon_16","polygon_17","polygon_18","polygon_19","polygon_20","polygon_21","polygon_22","polygon_23","polygon_24","polygon_25","polygon_26","polygon_27","polygon_28","polygon_29","polygon_30","polygon_31","polygon_32","polygon_33","polygon_34","polygon_35","polygon_36","polygon_37","polygon_38","polygon_39","polygon_40","polygon_41","polygon_42","polygon_43","polygon_44","polygon_45","polygon_46","polygon_47","polygon_48","polygon_49","polygon_50","polygon_51","polygon_52","polygon_53","polygon_54","polygon_55","polygon_56","polygon_57","polygon_58","polygon_59","polygon_60","polygon_61","polygon_62","polygon_63","polygon_64","polygon_65","polygon_66","polygon_67","polygon_68","polygon_69","polygon_70","polygon_71","polygon_72","polygon_73","polygon_74","polygon_75","polygon_76","polygon_77","polygon_78","polygon_79","polygon_80","polygon_81","polygon_82","polygon_83","polygon_84","polygon_85","polygon_86"],"does":[[820.3057291666667,"picture_3 is shown on the screen, written out."],[820.3057291666667,"polygon_87 is shown on the screen, written out."],[820.3057291666667,"polygon_88 is shown on the screen, written out."],[820.3057291666667,"polygon_89 is shown on the screen, written out."],[820.3057291666667,"polygon_90 is shown on the screen, written out."],[820.3057291666667,"circle is shown on the screen, written out."],[820.3057291666667,"polygon_91 is shown on the screen, written out."],[820.3057291666667,"polygon_92 is shown on the screen, written out."],[820.3057291666667,"polygon_93 is shown on the screen, written out."],[820.3057291666667,"polygon_94 is shown on the screen, written out."],[820.3057291666667,"polygon_95 is shown on the screen, written out."],[820.3057291666667,"polygon_96 is shown on the screen, written out."],[820.3057291666667,"polygon_97 is shown on the screen, written out."],[820.3057291666667,"polygon_98 is shown on the screen, written out."],[820.3057291666667,"polygon_99 is shown on the screen, written out."],[820.3057291666667,"polygon_100 is shown on the screen, written out."],[820.3057291666667,"polygon_101 is shown on the screen, written out."],[820.3057291666667,"polygon_102 is shown on the screen, written out."],[820.3057291666667,"polygon_103 is shown on the screen, written out."],[820.3057291666667,"polygon_104 is shown on the screen, written out."],[820.3057291666667,"polygon_105 is shown on the screen, written out."],[820.3057291666667,"polygon_106 is shown on the screen, written out."],[820.3057291666667,"polygon_107 is shown on the screen, written out."],[820.3057291666667,"polygon_108 is shown on the screen, written out."],[820.3057291666667,"polygon_109 is shown on the screen, written out."],[820.3057291666667,"polygon_110 is shown on the screen, written out."],[820.3057291666667,"polygon_111 is shown on the screen, written out."],[820.3057291666667,"polygon_112 is shown on the screen, written out."],[820.3057291666667,"polygon_113 is shown on the screen, written out."],[820.3057291666667,"polygon_114 is shown on the screen, written out."],[820.3057291666667,"polygon_115 is shown on the screen, written out."],[820.3057291666667,"cap_objects is shown on the screen, written out."]]},{"start":831.3552291666667,"say":"This ordering is typical, not an absolute law. High-noise inputs preserve little local evidence, so early reverse steps mainly settle low-frequency, large-scale relationships. Fine edges become recoverable only after the broader image has stabilized.","live":["picture","cap_pure","picture_2","cap_layout","picture_3","cap_objects","heading_start","polygon","polygon_2","polygon_3","polygon_4","polygon_5","polygon_6","polygon_7","polygon_8","polygon_9","polygon_10","polygon_11","polygon_12","polygon_13","polygon_14","polygon_15","polygon_16","polygon_17","polygon_18","polygon_19","polygon_20","polygon_21","polygon_22","polygon_23","polygon_24","polygon_25","polygon_26","polygon_27","polygon_28","polygon_29","polygon_30","polygon_31","polygon_32","polygon_33","polygon_34","polygon_35","polygon_36","polygon_37","polygon_38","polygon_39","polygon_40","polygon_41","polygon_42","polygon_43","polygon_44","polygon_45","polygon_46","polygon_47","polygon_48","polygon_49","polygon_50","polygon_51","polygon_52","polygon_53","polygon_54","polygon_55","polygon_56","polygon_57","polygon_58","polygon_59","polygon_60","polygon_61","polygon_62","polygon_63","polygon_64","polygon_65","polygon_66","polygon_67","polygon_68","polygon_69","polygon_70","polygon_71","polygon_72","polygon_73","polygon_74","polygon_75","polygon_76","polygon_77","polygon_78","polygon_79","polygon_80","polygon_81","polygon_82","polygon_83","polygon_84","polygon_85","polygon_86","polygon_87","polygon_88","polygon_89","polygon_90","circle","polygon_91","polygon_92","polygon_93","polygon_94","polygon_95","polygon_96","polygon_97","polygon_98","polygon_99","polygon_100","polygon_101","polygon_102","polygon_103","polygon_104","polygon_105","polygon_106","polygon_107","polygon_108","polygon_109","polygon_110","polygon_111","polygon_112","polygon_113","polygon_114","polygon_115"],"does":[[847.7712291666667,"cap_objects moves to a new place on the board."],[847.7712291666667,"picture_3 moves to a new place on the board."],[847.7712291666667,"cap_layout is hidden from the screen — left the board."],[847.7712291666667,"cap_pure is hidden from the screen — left the board."],[847.7712291666667,"heading_start is hidden from the screen — left the board."],[847.7712291666667,"picture is hidden from the screen — left the board."],[847.7712291666667,"polygon is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_2 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_3 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_4 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_5 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_6 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_7 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_8 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_9 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_10 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_11 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_12 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_13 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_14 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_15 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_16 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_17 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_18 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_19 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_20 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_21 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_22 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_23 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_24 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_25 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_26 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_27 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_28 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_29 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_30 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_31 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_32 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_33 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_34 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_35 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_36 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_37 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_38 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_39 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_40 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_41 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_42 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_43 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_44 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_45 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_46 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_47 is hidden from the screen — picture left the board."],[847.7712291666667,"polygon_48 is hidden from the screen — picture left the board."],[847.7712291666667,"picture_2 is hidden from the screen — left the board."],[847.7712291666667,"polygon_49 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_50 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_51 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_52 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_53 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_54 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_55 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_56 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_57 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_58 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_59 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_60 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_61 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_62 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_63 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_64 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_65 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_66 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_67 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_68 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_69 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_70 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_71 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_72 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_73 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_74 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_75 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_76 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_77 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_78 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_79 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_80 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_81 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_82 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_83 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_84 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_85 is hidden from the screen — picture_2 left the board."],[847.7712291666667,"polygon_86 is hidden from the screen — picture_2 left the board."]]},{"start":848.9712291666667,"say":"At lower noise, edges sharpen. The network can now distinguish a wall from its windows, a roof boundary from the sky, and one contour from a nearby contour.","live":["picture_3","cap_objects","polygon_87","polygon_88","polygon_89","polygon_90","circle","polygon_91","polygon_92","polygon_93","polygon_94","polygon_95","polygon_96","polygon_97","polygon_98","polygon_99","polygon_100","polygon_101","polygon_102","polygon_103","polygon_104","polygon_105","polygon_106","polygon_107","polygon_108","polygon_109","polygon_110","polygon_111","polygon_112","polygon_113","polygon_114","polygon_115"],"does":[[848.9712291666667,"heading_emerge is shown on the screen, written out."],[850.6307291666667,"picture_4 is shown on the screen, written out."],[850.6307291666667,"polygon_116 is shown on the screen, written out."],[850.6307291666667,"polygon_117 is shown on the screen, written out."],[850.6307291666667,"polygon_118 is shown on the screen, written out."],[850.6307291666667,"polygon_119 is shown on the screen, written out."],[850.6307291666667,"circle_2 is shown on the screen, written out."],[850.6307291666667,"polygon_120 is shown on the screen, written out."],[850.6307291666667,"polygon_121 is shown on the screen, written out."],[850.6307291666667,"polygon_122 is shown on the screen, written out."],[850.6307291666667,"polygon_123 is shown on the screen, written out."],[850.6307291666667,"polygon_124 is shown on the screen, written out."],[850.6307291666667,"line is shown on the screen, written out."],[850.6307291666667,"line_2 is shown on the screen, written out."],[850.6307291666667,"polygon_125 is shown on the screen, written out."],[850.6307291666667,"polygon_126 is shown on the screen, written out."],[850.6307291666667,"polygon_127 is shown on the screen, written out."],[850.6307291666667,"polygon_128 is shown on the screen, written out."],[850.6307291666667,"polygon_129 is shown on the screen, written out."],[850.6307291666667,"polygon_130 is shown on the screen, written out."],[850.6307291666667,"polygon_131 is shown on the screen, written out."],[850.6307291666667,"polygon_132 is shown on the screen, written out."],[850.6307291666667,"polygon_133 is shown on the screen, written out."],[850.6307291666667,"polygon_134 is shown on the screen, written out."],[850.6307291666667,"polygon_135 is shown on the screen, written out."],[850.6307291666667,"polygon_136 is shown on the screen, written out."],[850.6307291666667,"polygon_137 is shown on the screen, written out."],[850.6307291666667,"cap_edges is shown on the screen, written out."]]},{"start":860.1707291666667,"say":"The last steps make smaller corrections. They adjust local contrast, texture, color consistency, and tiny geometric details while preserving the composition chosen earlier.","live":["picture_3","cap_objects","polygon_87","polygon_88","polygon_89","polygon_90","circle","polygon_91","polygon_92","polygon_93","polygon_94","polygon_95","polygon_96","polygon_97","polygon_98","polygon_99","polygon_100","polygon_101","polygon_102","polygon_103","polygon_104","polygon_105","polygon_106","polygon_107","polygon_108","polygon_109","polygon_110","polygon_111","polygon_112","polygon_113","polygon_114","polygon_115","picture_4","cap_edges","heading_emerge","polygon_116","polygon_117","polygon_118","polygon_119","circle_2","polygon_120","polygon_121","polygon_122","polygon_123","polygon_124","line","line_2","polygon_125","polygon_126","polygon_127","polygon_128","polygon_129","polygon_130","polygon_131","polygon_132","polygon_133","polygon_134","polygon_135","polygon_136","polygon_137"],"does":[[860.7167291666667,"picture_5 is shown on the screen, written out."],[860.7167291666667,"polygon_138 is shown on the screen, written out."],[860.7167291666667,"polygon_139 is shown on the screen, written out."],[860.7167291666667,"polygon_140 is shown on the screen, written out."],[860.7167291666667,"polygon_141 is shown on the screen, written out."],[860.7167291666667,"circle_3 is shown on the screen, written out."],[860.7167291666667,"polygon_142 is shown on the screen, written out."],[860.7167291666667,"polygon_143 is shown on the screen, written out."],[860.7167291666667,"polygon_144 is shown on the screen, written out."],[860.7167291666667,"polygon_145 is shown on the screen, written out."],[860.7167291666667,"polygon_146 is shown on the screen, written out."],[860.7167291666667,"line_3 is shown on the screen, written out."],[860.7167291666667,"line_4 is shown on the screen, written out."],[860.7167291666667,"cap_final is shown on the screen, written out."]]},{"start":872.3227291666667,"say":"The completed image is not retrieved from a training record. It is one sample reached by starting at a newly drawn noise tensor and following the learned reverse dynamics.","live":["picture_3","cap_objects","polygon_87","polygon_88","polygon_89","polygon_90","circle","polygon_91","polygon_92","polygon_93","polygon_94","polygon_95","polygon_96","polygon_97","polygon_98","polygon_99","polygon_100","polygon_101","polygon_102","polygon_103","polygon_104","polygon_105","polygon_106","polygon_107","polygon_108","polygon_109","polygon_110","polygon_111","polygon_112","polygon_113","polygon_114","polygon_115","picture_4","cap_edges","picture_5","cap_final","heading_emerge","polygon_116","polygon_117","polygon_118","polygon_119","circle_2","polygon_120","polygon_121","polygon_122","polygon_123","polygon_124","line","line_2","polygon_125","polygon_126","polygon_127","polygon_128","polygon_129","polygon_130","polygon_131","polygon_132","polygon_133","polygon_134","polygon_135","polygon_136","polygon_137","polygon_138","polygon_139","polygon_140","polygon_141","circle_3","polygon_142","polygon_143","polygon_144","polygon_145","polygon_146","line_3","line_4"],"does":[[876.7577291666666,"polygon_142 is indicated — a transient flash."],[876.7577291666666,"circle_3 is indicated — a transient flash."]]},{"start":882.9077291666666,"say":"A second initial noise tensor would usually produce a different landscape, arrangement, or object identity. Randomness at the start supplies diversity, while the learned denoiser keeps the trajectory near the distribution of natural images.","live":null,"does":[[897.6757291666667,"picture_3 moves to a new place on the board."],[897.6757291666667,"cap_edges is hidden from the screen — left the board."],[897.6757291666667,"cap_final is hidden from the screen — left the board."],[897.6757291666667,"cap_objects is hidden from the screen — left the board."],[897.6757291666667,"heading_emerge is hidden from the screen — left the board."],[897.6757291666667,"picture_4 is hidden from the screen — left the board."],[897.6757291666667,"polygon_116 is hidden from the screen — picture_4 left the board."],[897.6757291666667,"polygon_117 is hidden from the screen — picture_4 left the board."],[897.6757291666667,"polygon_118 is hidden from the screen — picture_4 left the board."],[897.6757291666667,"polygon_119 is hidden from the screen — picture_4 left the board."],[897.6757291666667,"circle_2 is hidden from the screen — picture_4 left the board."],[897.6757291666667,"polygon_120 is hidden from the screen — picture_4 left the board."],[897.6757291666667,"polygon_121 is hidden from the screen — picture_4 left the board."],[897.6757291666667,"polygon_122 is hidden from the screen — picture_4 left the board."],[897.6757291666667,"polygon_123 is hidden from the screen — picture_4 left the board."],[897.6757291666667,"polygon_124 is hidden from the screen — picture_4 left the board."],[897.6757291666667,"line is hidden from the screen — picture_4 left the board."],[897.6757291666667,"line_2 is hidden from the screen — picture_4 left the board."],[897.6757291666667,"polygon_125 is hidden from the screen — picture_4 left the board."],[897.6757291666667,"polygon_126 is hidden from the screen — picture_4 left the board."],[897.6757291666667,"polygon_127 is hidden from the screen — picture_4 left the board."],[897.6757291666667,"polygon_128 is hidden from the screen — picture_4 left the board."],[897.6757291666667,"polygon_129 is hidden from the screen — picture_4 left the board."],[897.6757291666667,"polygon_130 is hidden from the screen — picture_4 left the board."],[897.6757291666667,"polygon_131 is hidden from the screen — picture_4 left the board."],[897.6757291666667,"polygon_132 is hidden from the screen — picture_4 left the board."],[897.6757291666667,"polygon_133 is hidden from the screen — picture_4 left the board."],[897.6757291666667,"polygon_134 is hidden from the screen — picture_4 left the board."],[897.6757291666667,"polygon_135 is hidden from the screen — picture_4 left the board."],[897.6757291666667,"polygon_136 is hidden from the screen — picture_4 left the board."],[897.6757291666667,"polygon_137 is hidden from the screen — picture_4 left the board."],[897.6757291666667,"picture_5 is hidden from the screen — left the board."],[897.6757291666667,"polygon_138 is hidden from the screen — picture_5 left the board."],[897.6757291666667,"polygon_139 is hidden from the screen — picture_5 left the board."],[897.6757291666667,"polygon_140 is hidden from the screen — picture_5 left the board."],[897.6757291666667,"polygon_141 is hidden from the screen — picture_5 left the board."],[897.6757291666667,"circle_3 is hidden from the screen — picture_5 left the board."],[897.6757291666667,"polygon_142 is hidden from the screen — picture_5 left the board."],[897.6757291666667,"polygon_143 is hidden from the screen — picture_5 left the board."],[897.6757291666667,"polygon_144 is hidden from the screen — picture_5 left the board."],[897.6757291666667,"polygon_145 is hidden from the screen — picture_5 left the board."],[897.6757291666667,"polygon_146 is hidden from the screen — picture_5 left the board."],[897.6757291666667,"line_3 is hidden from the screen — picture_5 left the board."],[897.6757291666667,"line_4 is hidden from the screen — picture_5 left the board."]]},{"start":898.8757291666667,"say":"Now inspect one reverse step. First, the neural network predicts epsilon hat t from the current noisy image and the current time.","live":["picture_3","polygon_87","polygon_88","polygon_89","polygon_90","circle","polygon_91","polygon_92","polygon_93","polygon_94","polygon_95","polygon_96","polygon_97","polygon_98","polygon_99","polygon_100","polygon_101","polygon_102","polygon_103","polygon_104","polygon_105","polygon_106","polygon_107","polygon_108","polygon_109","polygon_110","polygon_111","polygon_112","polygon_113","polygon_114","polygon_115"],"does":[[898.8757291666667,"heading_rule is shown on the screen, written out."],[903.4037291666667,"predict is shown on the screen, written out."],[905.7837291666667,"predict (the \"x_t,t\" part) is emphasized."],[908.2912291666667,"predict (the \"x_t,t\" part) is no longer emphasized."]]},{"start":908.8912291666667,"say":"The reverse mean uses that prediction with coefficients derived from the same forward schedule. The long expression is calibrated subtraction, not simply x t minus epsilon hat.","live":["picture_3","polygon_87","polygon_88","polygon_89","polygon_90","circle","polygon_91","polygon_92","polygon_93","polygon_94","polygon_95","polygon_96","polygon_97","polygon_98","polygon_99","polygon_100","polygon_101","polygon_102","polygon_103","polygon_104","polygon_105","polygon_106","polygon_107","polygon_108","polygon_109","polygon_110","polygon_111","polygon_112","polygon_113","polygon_114","polygon_115","predict","heading_rule"],"does":[[909.8197291666667,"mean is shown on the screen, written out."],[910.5517291666667,"mean (the \"hat(epsilon)_t\" part) is emphasized."],[916.9257291666667,"mean (the \"hat(epsilon)_t\" part) is no longer emphasized."]]},{"start":921.7747291666667,"say":"Why the coefficients? The forward process scaled both signal and noise at every transition. A valid reverse step must undo that scaling while estimating which component belongs to the clean-image direction.","live":["picture_3","polygon_87","polygon_88","polygon_89","polygon_90","circle","polygon_91","polygon_92","polygon_93","polygon_94","polygon_95","polygon_96","polygon_97","polygon_98","polygon_99","polygon_100","polygon_101","polygon_102","polygon_103","polygon_104","polygon_105","polygon_106","polygon_107","polygon_108","polygon_109","polygon_110","polygon_111","polygon_112","polygon_113","polygon_114","polygon_115","predict","mean","heading_rule"],"does":[[931.5277291666666,"mean (the \"frac(1,sqrt(alpha_t))\" part) is indicated — a transient flash."]]},{"start":936.5852291666666,"say":"For a standard stochastic diffusion sampler, add a calibrated Gaussian term sigma t z. This does not carelessly put back the noise we removed. It represents uncertainty in which slightly cleaner image could have produced the current one.","live":null,"does":[[937.7697291666667,"sample is shown on the screen, written out."],[940.8577291666667,"sample (the \"sigma_t z\" part) is emphasized."],[951.9107291666667,"sample (the \"sigma_t z\" part) is no longer emphasized."]]},{"start":952.5107291666667,"say":"That uncertainty can also be handled by deterministic trajectories or by samplers using fewer, larger numerical steps. These are alternative ways to traverse a learned denoising field. The central model is still the time-dependent predictor trained on noisy images.","live":["picture_3","polygon_87","polygon_88","polygon_89","polygon_90","circle","polygon_91","polygon_92","polygon_93","polygon_94","polygon_95","polygon_96","polygon_97","polygon_98","polygon_99","polygon_100","polygon_101","polygon_102","polygon_103","polygon_104","polygon_105","polygon_106","polygon_107","polygon_108","polygon_109","polygon_110","polygon_111","polygon_112","polygon_113","polygon_114","polygon_115","predict","mean","sample","heading_rule"],"does":[[953.1727291666666,"stochastic_note is shown on the screen, written out."],[969.6012291666666,"heading_rule is hidden from the screen — left the board."],[969.6012291666666,"mean is hidden from the screen — left the board."],[969.6012291666666,"picture_3 is hidden from the screen — left the board."],[969.6012291666666,"polygon_87 is hidden from the screen — picture_3 left the board."],[969.6012291666666,"polygon_88 is hidden from the screen — picture_3 left the board."],[969.6012291666666,"polygon_89 is hidden from the screen — picture_3 left the board."],[969.6012291666666,"polygon_90 is hidden from the screen — picture_3 left the board."],[969.6012291666666,"circle is hidden from the screen — picture_3 left the board."],[969.6012291666666,"polygon_91 is hidden from the screen — picture_3 left the board."],[969.6012291666666,"polygon_92 is hidden from the screen — picture_3 left the board."],[969.6012291666666,"polygon_93 is hidden from the screen — picture_3 left the board."],[969.6012291666666,"polygon_94 is hidden from the screen — picture_3 left the board."],[969.6012291666666,"polygon_95 is hidden from the screen — picture_3 left the board."],[969.6012291666666,"polygon_96 is hidden from the screen — picture_3 left the board."],[969.6012291666666,"polygon_97 is hidden from the screen — picture_3 left the board."],[969.6012291666666,"polygon_98 is hidden from the screen — picture_3 left the board."],[969.6012291666666,"polygon_99 is hidden from the screen — picture_3 left the board."],[969.6012291666666,"polygon_100 is hidden from the screen — picture_3 left the board."],[969.6012291666666,"polygon_101 is hidden from the screen — picture_3 left the board."],[969.6012291666666,"polygon_102 is hidden from the screen — picture_3 left the board."],[969.6012291666666,"polygon_103 is hidden from the screen — picture_3 left the board."],[969.6012291666666,"polygon_104 is hidden from the screen — picture_3 left the board."],[969.6012291666666,"polygon_105 is hidden from the screen — picture_3 left the board."],[969.6012291666666,"polygon_106 is hidden from the screen — picture_3 left the board."],[969.6012291666666,"polygon_107 is hidden from the screen — picture_3 left the board."],[969.6012291666666,"polygon_108 is hidden from the screen — picture_3 left the board."],[969.6012291666666,"polygon_109 is hidden from the screen — picture_3 left the board."],[969.6012291666666,"polygon_110 is hidden from the screen — picture_3 left the board."],[969.6012291666666,"polygon_111 is hidden from the screen — picture_3 left the board."],[969.6012291666666,"polygon_112 is hidden from the screen — picture_3 left the board."],[969.6012291666666,"polygon_113 is hidden from the screen — picture_3 left the board."],[969.6012291666666,"polygon_114 is hidden from the screen — picture_3 left the board."],[969.6012291666666,"polygon_115 is hidden from the screen — picture_3 left the board."],[969.6012291666666,"predict is hidden from the screen — left the board."],[969.6012291666666,"sample is hidden from the screen — left the board."],[969.6012291666666,"stochastic_note is hidden from the screen — left the board."]]},{"start":970.2012291666667,"say":"The full sampling algorithm is now short enough to read as a loop. Start by drawing x T from a standard Gaussian.","live":[],"does":[[970.2012291666667,"heading_loop is shown on the screen, written out."],[970.2012291666667,"loop is shown on the screen, written out."],[974.6357291666667,"loop is shown on the screen, written out."],[977.0387291666667,"loop (the \"row=2\" part) is emphasized."],[978.0957291666666,"loop (the \"row=2\" part) is no longer emphasized."]]},{"start":978.6957291666666,"say":"At the current time, run the network once to predict the noise component.","live":["heading_loop"],"does":[[980.6577291666667,"loop (the \"row=3\" part) is emphasized."],[981.5287291666667,"loop is shown on the screen, written out."],[983.2232291666667,"loop (the \"row=3\" part) is no longer emphasized."]]},{"start":983.8232291666667,"say":"Use that prediction and the schedule to sample a slightly cleaner state. The state remains noisy unless t is already near zero.","live":null,"does":[[984.6947291666667,"loop is shown on the screen, written out."],[987.3527291666667,"loop (the \"row=4\" part) is emphasized."],[992.0322291666666,"loop (the \"row=4\" part) is no longer emphasized."]]},{"start":992.6322291666667,"say":"Decrease t and repeat. The same network is reused at every step, with its time input telling it which denoising regime is required.","live":null,"does":[[994.3037291666667,"loop is shown on the screen, written out."],[998.3787291666667,"loop (the \"row=5\" part) is emphasized."],[1001.6877291666667,"loop (the \"row=5\" part) is no longer emphasized."]]},{"start":1002.2877291666666,"say":"At zero, the state is interpreted as an image sample. Pure noise supplied the initial randomness; the learned sequence of local reverse decisions supplied recognizable structure.","live":null,"does":[[1004.7957291666667,"picture_5 is shown on the screen, written out."],[1004.7957291666667,"polygon_138 is shown on the screen, written out."],[1004.7957291666667,"polygon_139 is shown on the screen, written out."],[1004.7957291666667,"polygon_140 is shown on the screen, written out."],[1004.7957291666667,"polygon_141 is shown on the screen, written out."],[1004.7957291666667,"circle_3 is shown on the screen, written out."],[1004.7957291666667,"polygon_142 is shown on the screen, written out."],[1004.7957291666667,"polygon_143 is shown on the screen, written out."],[1004.7957291666667,"polygon_144 is shown on the screen, written out."],[1004.7957291666667,"polygon_145 is shown on the screen, written out."],[1004.7957291666667,"polygon_146 is shown on the screen, written out."],[1004.7957291666667,"line_3 is shown on the screen, written out."],[1004.7957291666667,"line_4 is shown on the screen, written out."]]},{"start":1014.9267291666666,"say":"We can now generate plausible images, but we have not told the model which plausible image we want. The final ingredient is conditioning, where a text prompt steers the same denoising process toward a chosen description.","live":["picture_5","polygon_138","polygon_139","polygon_140","polygon_141","circle_3","polygon_142","polygon_143","polygon_144","polygon_145","polygon_146","line_3","line_4","heading_loop"],"does":[[1028.8939791666667,"heading_loop is hidden from the screen — left the board."],[1028.8939791666667,"loop is hidden from the screen — left the board."],[1028.8939791666667,"picture_5 is hidden from the screen — left the board."],[1028.8939791666667,"polygon_138 is hidden from the screen — picture_5 left the board."],[1028.8939791666667,"polygon_139 is hidden from the screen — picture_5 left the board."],[1028.8939791666667,"polygon_140 is hidden from the screen — picture_5 left the board."],[1028.8939791666667,"polygon_141 is hidden from the screen — picture_5 left the board."],[1028.8939791666667,"circle_3 is hidden from the screen — picture_5 left the board."],[1028.8939791666667,"polygon_142 is hidden from the screen — picture_5 left the board."],[1028.8939791666667,"polygon_143 is hidden from the screen — picture_5 left the board."],[1028.8939791666667,"polygon_144 is hidden from the screen — picture_5 left the board."],[1028.8939791666667,"polygon_145 is hidden from the screen — picture_5 left the board."],[1028.8939791666667,"polygon_146 is hidden from the screen — picture_5 left the board."],[1028.8939791666667,"line_3 is hidden from the screen — picture_5 left the board."],[1028.8939791666667,"line_4 is hidden from the screen — picture_5 left the board."]]}]},{"title":"Text Conditioning and Guidance","start":1029.9356458333334,"end":1367.6616041666666,"objects":{"balanced_caption":"a Math [text] that says \"$w=1$\"","conditional":"a Math [text] that says \"$hat(epsilon)_c = epsilon_theta(x_t,t,c)$\"","conditioning":"a Math [text] that says \"$hat(epsilon)_c = epsilon_theta(x_t,t,c)$\"","diagram":"a Figure (x_range=(0.0, 12.0), y_range=(0.0, 6.0), aspect=(2.0, 1.0))","direction_note":"a Panel that says \"The difference between conditional and unconditional predictions is a direction that makes the current sample more compatible with the prompt.\"","encoder_arrow":"an Arrow [yellow] drawn in diagram (start=(3.65, 4.45), end=(4.65, 4.45))","guided":"a Math [text] that says \"$hat(epsilon)_(upright(\"guided\")) = hat(epsilon)_emptyset + w(hat(epsilon)_c-hat(epsilon)_emptyset)$\"","heading_attention":"a Heading that says \"Where Text Enters\"","heading_condition":"a Heading that says \"Give the Denoiser a Prompt\"","heading_guidance":"a Heading that says \"Classifier-Free Guidance\"","heading_summary":"a Heading that says \"The Whole Diffusion Story\"","heading_tradeoff":"a Heading that says \"Turning the Guidance Up\"","image_arrow":"an Arrow [magenta] drawn in diagram (start=(3.35, 1.7), end=(4.8, 1.7))","line":"a Line [gray] drawn in picture_2 (start=(4.0, 1.65), end=(4.0, 4.6))","line_2":"a Line [gray] drawn in picture_3 (start=(4.0, 1.65), end=(4.0, 4.6))","line_3":"a Line [magenta] drawn in picture_3 (start=(0.2, 0.45), end=(7.8, 0.45))","line_4":"a Line [magenta] drawn in picture_3 (start=(0.2, 0.75), end=(7.8, 0.75))","line_5":"a Line [red] drawn in picture_3 (start=(0.3, 5.55), end=(7.7, 5.55))","low_caption":"a Math [text] that says \"$w=0$\"","network_box":"a Polygon [yellow] drawn in diagram (vertices=((5.0, 0.6), (8.0, 0.6), (8.0, 2.8), (5.0, 2.8)), fill_opacity=0.16)","network_label":"a Math [yellow] that says \"$upright(\"denoiser\")$\" drawn in diagram","noisy_box":"a Polygon [magenta] drawn in diagram (vertices=((0.8, 0.6), (3.2, 0.6), (3.2, 2.8), (0.8, 2.8)), fill_opacity=0.28)","noisy_label":"a Math [magenta] that says \"$x_t$\" drawn in diagram","output_arrow":"an Arrow [green] drawn in diagram (start=(8.2, 1.7), end=(9.2, 1.7))","output_box":"a Polygon [green] drawn in diagram (vertices=((9.4, 0.6), (11.7, 0.6), (11.7, 2.8), (9.4, 2.8)), fill_opacity=0.24)","output_label":"a Math [green] that says \"$hat(epsilon)_c$\" drawn in diagram","parts":"a Polygon [blue] drawn in picture (vertices=((0.0, 2.2), (8.0, 2.2), (8.0, 6.0), (0.0, 6.0)))","parts_2":"a Polygon [blue] drawn in picture (vertices=((0.0, 0.0), (8.0, 0.0), (8.0, 2.2), (0.0, 2.2)), fill_opacity=0.42)","parts_3":"a Circle [red] drawn in picture (center=(6.6, 4.5), radius=0.62, filled=True)","parts_4":"a Polygon [yellow] drawn in picture_2 (vertices=((0.0, 2.2), (8.0, 2.2), (8.0, 6.0), (0.0, 6.0)))","parts_5":"a Polygon [blue] drawn in picture_2 (vertices=((0.0, 0.0), (8.0, 0.0), (8.0, 2.2), (0.0, 2.2)), fill_opacity=0.42)","parts_6":"a Circle [red] drawn in picture_2 (center=(6.6, 4.5), radius=0.62, filled=True)","parts_7":"a Polygon [yellow] drawn in picture_3 (vertices=((0.0, 2.2), (8.0, 2.2), (8.0, 6.0), (0.0, 6.0)), fill_opacity=0.48)","parts_8":"a Polygon [blue] drawn in picture_3 (vertices=((0.0, 0.0), (8.0, 0.0), (8.0, 2.2), (0.0, 2.2)), fill_opacity=0.7)","parts_9":"a Circle [red] drawn in picture_3 (center=(6.6, 4.5), radius=0.78, filled=True)","picture":"a Figure (x_range=(0.0, 8.0), y_range=(0.0, 6.0), aspect=(4.0, 3.0))","picture_2":"a Figure (x_range=(0.0, 8.0), y_range=(0.0, 6.0), aspect=(4.0, 3.0))","picture_3":"a Figure (x_range=(0.0, 8.0), y_range=(0.0, 6.0), aspect=(4.0, 3.0))","polygon":"a Polygon [gray] drawn in picture (vertices=((1.0, 2.2), (2.8, 4.2), (4.2, 2.2)), fill_opacity=0.55)","polygon_2":"a Polygon [green] drawn in picture (vertices=((4.8, 0.8), (6.2, 0.8), (6.2, 2.0), (4.8, 2.0)), fill_opacity=0.65)","polygon_3":"a Polygon [red] drawn in picture_2 (vertices=((2.2, 1.0), (5.8, 1.0), (5.1, 1.75), (2.8, 1.75)), fill_opacity=0.8)","polygon_4":"a Polygon [red] drawn in picture_2 (vertices=((4.0, 4.5), (4.0, 1.9), (6.1, 2.6)), fill_opacity=0.72)","polygon_5":"a Polygon [red] drawn in picture_3 (vertices=((2.2, 1.0), (5.8, 1.0), (5.1, 1.75), (2.8, 1.75)), fill_opacity=1.0)","polygon_6":"a Polygon [red] drawn in picture_3 (vertices=((4.0, 4.5), (4.0, 1.9), (6.1, 2.6)), fill_opacity=1.0)","polygon_7":"a Polygon [magenta] drawn in picture_3 (vertices=((6.8, 2.0), (7.6, 2.0), (7.6, 3.0), (6.8, 3.0)), fill_opacity=0.85)","prompt":"a Tex [text] that says \"a red sailboat at sunset\"","prompt_box":"a Polygon [yellow] drawn in diagram (vertices=((0.3, 3.5), (3.5, 3.5), (3.5, 5.4), (0.3, 5.4)), fill_opacity=0.16)","prompt_label":"a Math [yellow] that says \"$upright(\"text prompt\")$\" drawn in diagram","strong_caption":"a Math [text] that says \"$w=7$\"","summary":"a Block [text] that says \"Corrupt data into known Gaussian noise. Train $epsilon_theta$ to predict the sampled noise. Sample noise and apply learned reverse steps. Condition those steps on text, then choose guidance strength.\"","text_arrow":"an Arrow [yellow] drawn in diagram (start=(6.5, 3.85), end=(6.5, 2.95))","token_labels":"a Math [red] that says \"$upright(\"red\")$\" drawn in diagram","token_labels_2":"a Math [green] that says \"$upright(\"boat\")$\" drawn in diagram","token_labels_3":"a Math [blue] that says \"$upright(\"sunset\")$\" drawn in diagram","tokens":"a Polygon [red] drawn in diagram (vertices=((4.8, 4.0), (5.8, 4.0), (5.8, 4.9), (4.8, 4.9)), fill_opacity=0.22)","tokens_2":"a Polygon [green] drawn in diagram (vertices=((5.95, 4.0), (6.95, 4.0), (6.95, 4.9), (5.95, 4.9)), fill_opacity=0.22)","tokens_3":"a Polygon [blue] drawn in diagram (vertices=((7.1, 4.0), (8.1, 4.0), (8.1, 4.9), (7.1, 4.9)), fill_opacity=0.22)","tradeoffs":"a Block [text] that says \"Higher $w$: usually stronger prompt adherence. Higher $w$: usually less sample diversity. Too high: harsh contrast, artifacts, or unnatural images. The useful range depends on the model and sampler.\"","unconditional":"a Math [text] that says \"$hat(epsilon)_emptyset = epsilon_theta(x_t,t,emptyset)$\""},"beats":[{"start":1029.9356458333334,"say":"To request a particular image, add a condition c. Let the prompt be: a red sailboat at sunset. The reverse process remains a sequence of denoising steps, but every prediction may now depend on that description.","live":[],"does":[[1029.9356458333334,"heading_condition is shown on the screen, written out."],[1032.3386458333334,"conditioning is shown on the screen, written out."],[1034.2896458333335,"prompt is shown on the screen, written out."]]},{"start":1045.3381458333333,"say":"A text encoder converts the prompt into a sequence of learned vectors. These vectors represent tokens and their relationships, rather than a single hand-written list of visual rules.","live":["prompt","conditioning","heading_condition"],"does":[[1046.2436458333334,"diagram is shown on the screen, written out."],[1046.7316458333335,"encoder_arrow is shown on the screen, written out."],[1046.7316458333335,"tokens is shown on the screen, written out."],[1046.7316458333335,"tokens_2 is shown on the screen, written out."],[1046.7316458333335,"tokens_3 is shown on the screen, written out."],[1046.7316458333335,"token_labels is shown on the screen, written out."],[1046.7316458333335,"token_labels_2 is shown on the screen, written out."],[1046.7316458333335,"token_labels_3 is shown on the screen, written out."],[1047.3006458333334,"prompt_box is shown on the screen, written out."],[1047.3006458333334,"prompt_label is shown on the screen, written out."]]},{"start":1057.3276458333335,"say":"The noisy image x t enters the denoiser as before. Time t still tells the network how much corruption to expect.","live":["prompt","conditioning","diagram","heading_condition","prompt_box","prompt_label","encoder_arrow","tokens","tokens_2","tokens_3","token_labels","token_labels_2","token_labels_3"],"does":[[1057.8736458333335,"noisy_box is shown on the screen, written out."],[1057.8736458333335,"noisy_label is shown on the screen, written out."],[1059.2436458333334,"image_arrow is shown on the screen, written out."],[1059.7306458333335,"network_box is shown on the screen, written out."],[1059.7306458333335,"network_label is shown on the screen, written out."]]},{"start":1065.9381458333335,"say":"Text features also enter the denoising network. In common architectures, cross-attention lets spatial image features query the token sequence. A region beginning to resemble a boat can therefore respond strongly to the boat token.","live":["prompt","conditioning","diagram","heading_condition","prompt_box","prompt_label","encoder_arrow","tokens","tokens_2","tokens_3","token_labels","token_labels_2","token_labels_3","noisy_box","noisy_label","image_arrow","network_box","network_label"],"does":[[1066.2396458333335,"text_arrow is shown on the screen, written out."],[1079.7306458333335,"token_labels_2 is indicated — a transient flash."]]},{"start":1081.4221458333334,"say":"The output is still a noise estimate, not a finished image. Conditioning changes which noise the model predicts should be removed from a sample compatible with the prompt.","live":["prompt","conditioning","diagram","heading_condition","prompt_box","prompt_label","encoder_arrow","tokens","tokens_2","tokens_3","token_labels","token_labels_2","token_labels_3","noisy_box","noisy_label","image_arrow","network_box","network_label","text_arrow"],"does":[[1082.0256458333333,"output_arrow is shown on the screen, written out."],[1082.8616458333333,"output_box is shown on the screen, written out."],[1082.8616458333333,"output_label is shown on the screen, written out."]]},{"start":1092.0641458333334,"say":"This distinction keeps the generative mechanism unified. An unconditional model and a text-conditioned model both perform learned reverse diffusion. The condition changes the direction of each local step.","live":["prompt","conditioning","diagram","heading_condition","prompt_box","prompt_label","encoder_arrow","tokens","tokens_2","tokens_3","token_labels","token_labels_2","token_labels_3","noisy_box","noisy_label","image_arrow","network_box","network_label","text_arrow","output_arrow","output_box","output_label"],"does":[[1105.6016458333334,"conditioning moves to a new place on the board."],[1105.6016458333334,"prompt moves to a new place on the board."],[1105.6016458333334,"heading_condition is hidden from the screen — left the board."]]},{"start":1106.8016458333334,"say":"At an early, very noisy step, prompt information mainly influences global choices. The words sailboat and sunset can affect composition, object category, and broad color relationships before any rope or edge exists.","live":["prompt","conditioning","diagram","prompt_box","prompt_label","encoder_arrow","tokens","tokens_2","tokens_3","token_labels","token_labels_2","token_labels_3","noisy_box","noisy_label","image_arrow","network_box","network_label","text_arrow","output_arrow","output_box","output_label"],"does":[[1106.8016458333334,"heading_attention is shown on the screen, written out."],[1113.7556458333333,"token_labels_2 is indicated — a transient flash."],[1114.4516458333335,"token_labels_3 is indicated — a transient flash."]]},{"start":1122.4476458333334,"say":"At later steps, the same conditioning can influence finer details: the outline of a sail, reflections on water, and local texture. The condition is available throughout the trajectory, but what it can usefully control changes with the noise level.","live":["prompt","conditioning","diagram","prompt_box","prompt_label","encoder_arrow","tokens","tokens_2","tokens_3","token_labels","token_labels_2","token_labels_3","noisy_box","noisy_label","image_arrow","network_box","network_label","text_arrow","output_arrow","output_box","output_label","heading_attention"],"does":[[1136.1946458333334,"conditioning (the \"t,c\" part) is emphasized."],[1137.2861458333334,"conditioning (the \"t,c\" part) is no longer emphasized."]]},{"start":1137.8861458333333,"say":"During training, the model sees image and text pairs. The noise target is still known exactly, so conditioning does not destroy the supervised objective. It adds information the predictor may use to estimate epsilon.","live":null,"does":[[1150.7036458333334,"output_label is indicated — a transient flash."]]},{"start":1152.2786458333335,"say":"A plain conditional prediction may follow the text, but practitioners often want a stronger response. Classifier-free guidance supplies a controllable way to amplify the prompt's influence without training a separate image classifier.","live":null,"does":[[1165.5841458333334,"conditioning is hidden from the screen — left the board."],[1165.5841458333334,"diagram is hidden from the screen — left the board."],[1165.5841458333334,"prompt_box is hidden from the screen — diagram left the board."],[1165.5841458333334,"prompt_label is hidden from the screen — diagram left the board."],[1165.5841458333334,"encoder_arrow is hidden from the screen — diagram left the board."],[1165.5841458333334,"tokens is hidden from the screen — diagram left the board."],[1165.5841458333334,"tokens_2 is hidden from the screen — diagram left the board."],[1165.5841458333334,"tokens_3 is hidden from the screen — diagram left the board."],[1165.5841458333334,"token_labels is hidden from the screen — diagram left the board."],[1165.5841458333334,"token_labels_2 is hidden from the screen — diagram left the board."],[1165.5841458333334,"token_labels_3 is hidden from the screen — diagram left the board."],[1165.5841458333334,"noisy_box is hidden from the screen — diagram left the board."],[1165.5841458333334,"noisy_label is hidden from the screen — diagram left the board."],[1165.5841458333334,"image_arrow is hidden from the screen — diagram left the board."],[1165.5841458333334,"network_box is hidden from the screen — diagram left the board."],[1165.5841458333334,"network_label is hidden from the screen — diagram left the board."],[1165.5841458333334,"text_arrow is hidden from the screen — diagram left the board."],[1165.5841458333334,"output_arrow is hidden from the screen — diagram left the board."],[1165.5841458333334,"output_box is hidden from the screen — diagram left the board."],[1165.5841458333334,"output_label is hidden from the screen — diagram left the board."],[1165.5841458333334,"heading_attention is hidden from the screen — left the board."],[1165.5841458333334,"prompt is hidden from the screen — left the board."]]},{"start":1166.7841458333335,"say":"The method asks the same network for two predictions. First, run it with an empty condition. This estimates how the sample should denoise without knowing the prompt.","live":[],"does":[[1166.7841458333335,"heading_guidance is shown on the screen, written out."],[1171.5556458333333,"unconditional is shown on the screen, written out."],[1171.5556458333333,"unconditional (the \"emptyset\" part) is emphasized."],[1177.4536458333334,"unconditional (the \"emptyset\" part) is no longer emphasized."]]},{"start":1178.0536458333333,"say":"Second, run it with condition c. This prediction includes both general image knowledge and the influence of the text.","live":["unconditional","heading_guidance"],"does":[[1179.7016458333335,"conditional is shown on the screen, written out."],[1184.5316458333334,"conditional (the \"c\" part) is emphasized."],[1185.3206458333334,"conditional (the \"c\" part) is no longer emphasized."]]},{"start":1185.9206458333333,"say":"Subtract the unconditional prediction from the conditional one. The difference points toward a denoising decision that makes the current sample more compatible with the prompt.","live":["unconditional","conditional","heading_guidance"],"does":[[1190.1116458333333,"direction_note is shown on the screen, written out."]]},{"start":1196.0176458333335,"say":"Here is the guidance formula. Start with the unconditional prediction. Then multiply the conditional direction by a guidance strength w and add it.","live":["direction_note","unconditional","conditional","heading_guidance"],"does":[[1196.0176458333335,"guided is shown on the screen, written out."],[1201.7416458333335,"guided (the \"hat(epsilon)_c-hat(epsilon)_emptyset\" part) is emphasized."],[1203.4016458333335,"guided (the \"hat(epsilon)_c-hat(epsilon)_emptyset\" part) is no longer emphasized."],[1203.4016458333335,"guided (the \"w\" part) is emphasized."],[1205.5726458333334,"guided (the \"w\" part) is no longer emphasized."]]},{"start":1206.1726458333335,"say":"At w equal to zero, the conditional direction contributes nothing. At w equal to one, the formula returns the ordinary conditional prediction. Values above one extrapolate beyond it.","live":["direction_note","unconditional","conditional","guided","heading_guidance"],"does":[[1207.5776458333335,"guided (the \"w\" part) is emphasized."],[1217.2716458333334,"guided (the \"w\" part) is no longer emphasized."],[1218.9436458333334,"conditional is hidden from the screen — left the board."],[1218.9436458333334,"direction_note is hidden from the screen — left the board."],[1218.9436458333334,"guided is hidden from the screen — left the board."],[1218.9436458333334,"heading_guidance is hidden from the screen — left the board."],[1218.9436458333334,"unconditional is hidden from the screen — left the board."]]},{"start":1219.5436458333334,"say":"The three pictures are a schematic comparison from the same prompt. With zero guidance, the model can produce a plausible image while largely ignoring the requested sailboat.","live":[],"does":[[1219.5436458333334,"heading_tradeoff is shown on the screen, written out."],[1224.1066458333335,"picture is shown on the screen, written out."],[1224.1066458333335,"parts is shown on the screen, written out."],[1224.1066458333335,"parts_2 is shown on the screen, written out."],[1224.1066458333335,"parts_3 is shown on the screen, written out."],[1224.1066458333335,"polygon is shown on the screen, written out."],[1224.1066458333335,"polygon_2 is shown on the screen, written out."],[1224.1066458333335,"low_caption is shown on the screen, written out."]]},{"start":1230.3601458333335,"say":"At one, the ordinary conditional prediction introduces the requested boat and sunset while retaining the model's natural range of possible compositions.","live":["picture","low_caption","heading_tradeoff","parts","parts_2","parts_3","polygon","polygon_2"],"does":[[1230.9636458333334,"picture_2 is shown on the screen, written out."],[1230.9636458333334,"parts_4 is shown on the screen, written out."],[1230.9636458333334,"parts_5 is shown on the screen, written out."],[1230.9636458333334,"parts_6 is shown on the screen, written out."],[1230.9636458333334,"polygon_3 is shown on the screen, written out."],[1230.9636458333334,"line is shown on the screen, written out."],[1230.9636458333334,"polygon_4 is shown on the screen, written out."],[1230.9636458333334,"balanced_caption is shown on the screen, written out."]]},{"start":1240.2711458333333,"say":"Turn guidance much higher and prompt features are pushed harder. The boat may become more unmistakable, colors more forceful, and composition more literal.","live":["picture","low_caption","picture_2","balanced_caption","heading_tradeoff","parts","parts_2","parts_3","polygon","polygon_2","parts_4","parts_5","parts_6","polygon_3","line","polygon_4"],"does":[[1241.7346458333334,"picture_3 is shown on the screen, written out."],[1241.7346458333334,"parts_7 is shown on the screen, written out."],[1241.7346458333334,"parts_8 is shown on the screen, written out."],[1241.7346458333334,"parts_9 is shown on the screen, written out."],[1241.7346458333334,"polygon_5 is shown on the screen, written out."],[1241.7346458333334,"line_2 is shown on the screen, written out."],[1241.7346458333334,"polygon_6 is shown on the screen, written out."],[1241.7346458333334,"line_3 is shown on the screen, written out."],[1241.7346458333334,"line_4 is shown on the screen, written out."],[1241.7346458333334,"line_5 is shown on the screen, written out."],[1241.7346458333334,"polygon_7 is shown on the screen, written out."],[1241.7346458333334,"strong_caption is shown on the screen, written out."]]},{"start":1250.9606458333335,"say":"But stronger is not simply better. Extrapolation can move the trajectory away from the distribution on which the denoiser was trained. Excessive guidance may create harsh contrast, repeated edges, distorted geometry, or artificial texture.","live":["picture","low_caption","picture_2","balanced_caption","picture_3","strong_caption","heading_tradeoff","parts","parts_2","parts_3","polygon","polygon_2","parts_4","parts_5","parts_6","polygon_3","line","polygon_4","parts_7","parts_8","parts_9","polygon_5","line_2","polygon_6","line_3","line_4","line_5","polygon_7"],"does":[[1259.5056458333333,"polygon_7 is indicated — a transient flash."]]},{"start":1267.4311458333334,"say":"It also reduces diversity. If the conditional direction is amplified on every sample, different initial noise tensors are pulled toward a narrower set of prompt-compatible solutions.","live":null,"does":[[1268.6616458333335,"polygon_3 is indicated — a transient flash."]]},{"start":1279.0611458333333,"say":"So guidance strength controls a tradeoff. Turning it up usually improves literal prompt adherence, but tends to sacrifice variation and can eventually sacrifice naturalness and image quality.","live":null,"does":[[1280.9536458333334,"picture_2 moves to a new place on the board."],[1280.9536458333334,"balanced_caption is hidden from the screen — left the board."],[1280.9536458333334,"low_caption is hidden from the screen — left the board."],[1280.9536458333334,"picture is hidden from the screen — left the board."],[1280.9536458333334,"parts is hidden from the screen — picture left the board."],[1280.9536458333334,"parts_2 is hidden from the screen — picture left the board."],[1280.9536458333334,"parts_3 is hidden from the screen — picture left the board."],[1280.9536458333334,"polygon is hidden from the screen — picture left the board."],[1280.9536458333334,"polygon_2 is hidden from the screen — picture left the board."],[1280.9536458333334,"picture_3 is hidden from the screen — left the board."],[1280.9536458333334,"parts_7 is hidden from the screen — picture_3 left the board."],[1280.9536458333334,"parts_8 is hidden from the screen — picture_3 left the board."],[1280.9536458333334,"parts_9 is hidden from the screen — picture_3 left the board."],[1280.9536458333334,"polygon_5 is hidden from the screen — picture_3 left the board."],[1280.9536458333334,"line_2 is hidden from the screen — picture_3 left the board."],[1280.9536458333334,"polygon_6 is hidden from the screen — picture_3 left the board."],[1280.9536458333334,"line_3 is hidden from the screen — picture_3 left the board."],[1280.9536458333334,"line_4 is hidden from the screen — picture_3 left the board."],[1280.9536458333334,"line_5 is hidden from the screen — picture_3 left the board."],[1280.9536458333334,"polygon_7 is hidden from the screen — picture_3 left the board."],[1280.9536458333334,"strong_caption is hidden from the screen — left the board."],[1280.9536458333334,"tradeoffs is shown on the screen, written out."],[1284.4016458333335,"tradeoffs (the \"stronger prompt adherence\" part) is emphasized."],[1286.4566458333334,"tradeoffs (the \"less sample diversity\" part) is emphasized."],[1286.4566458333334,"tradeoffs (the \"stronger prompt adherence\" part) is no longer emphasized."],[1290.0436458333334,"tradeoffs (the \"harsh contrast, artifacts, or unnatural images\" part) is emphasized."],[1290.0436458333334,"tradeoffs (the \"less sample diversity\" part) is no longer emphasized."],[1290.9611458333334,"tradeoffs (the \"harsh contrast, artifacts, or unnatural images\" part) is no longer emphasized."]]},{"start":1291.5611458333333,"say":"There is no universal best number. The useful range depends on the model, its training, the sampler, the prompt, and the desired balance between faithfulness and variety.","live":["picture_2","heading_tradeoff","parts_4","parts_5","parts_6","polygon_3","line","polygon_4","tradeoffs"],"does":[[1295.3116458333334,"tradeoffs (the \"depends on the model and sampler\" part) is emphasized."],[1302.9851458333333,"heading_tradeoff is hidden from the screen — left the board."],[1302.9851458333333,"picture_2 is hidden from the screen — left the board."],[1302.9851458333333,"parts_4 is hidden from the screen — picture_2 left the board."],[1302.9851458333333,"parts_5 is hidden from the screen — picture_2 left the board."],[1302.9851458333333,"parts_6 is hidden from the screen — picture_2 left the board."],[1302.9851458333333,"polygon_3 is hidden from the screen — picture_2 left the board."],[1302.9851458333333,"line is hidden from the screen — picture_2 left the board."],[1302.9851458333333,"polygon_4 is hidden from the screen — picture_2 left the board."],[1302.9851458333333,"tradeoffs is hidden from the screen — left the board."],[1302.9851458333333,"tradeoffs (the \"depends on the model and sampler\" part) is no longer emphasized."]]},{"start":1303.5851458333334,"say":"Now the complete diffusion story fits into four steps. First, define a forward process that turns real images into known Gaussian noise.","live":[],"does":[[1303.5851458333334,"heading_summary is shown on the screen, written out."],[1305.9536458333334,"summary is shown on the screen, written out."],[1307.4856458333334,"summary (the \"Corrupt data\" part) is emphasized."]]},{"start":1313.4031458333334,"say":"Second, create supervised examples by sampling a clean image, a time, and epsilon. Train a neural network to predict that exact epsilon from the noisy image and time.","live":["summary","heading_summary"],"does":[[1313.7516458333334,"summary (the \"Corrupt data\" part) is no longer emphasized."],[1313.7516458333334,"summary (the \"Train $epsilon_theta$\" part) is emphasized."]]},{"start":1325.1256458333335,"say":"Third, generate by starting from fresh Gaussian noise and applying learned reverse steps. Large-scale structure usually settles before fine detail because the available information changes across noise levels.","live":null,"does":[[1325.6016458333334,"summary (the \"Sample noise\" part) is emphasized."],[1325.6016458333334,"summary (the \"Train $epsilon_theta$\" part) is no longer emphasized."]]},{"start":1338.9611458333334,"say":"Fourth, condition the denoiser on text. Classifier-free guidance amplifies the conditional direction, trading diversity and eventually naturalness for stronger prompt adherence.","live":null,"does":[[1339.3096458333334,"summary (the \"Condition those steps\" part) is emphasized."],[1339.3096458333334,"summary (the \"Sample noise\" part) is no longer emphasized."],[1351.3141458333334,"summary (the \"Condition those steps\" part) is no longer emphasized."]]},{"start":1351.9141458333334,"say":"The central trick is therefore not that one network learns to paint an image in a single leap. It learns a supervised family of noise-removal decisions, and generation emerges when those modest decisions are chained from randomness all the way to an image.","live":null,"does":[[1358.0906458333334,"summary (the \"predict the sampled noise\" part) is indicated — a transient flash."],[1366.6199375,"heading_summary is hidden from the screen — left the board."],[1366.6199375,"summary is hidden from the screen — left the board."]]}]}]},"durationSeconds":1368,"chapters":[{"title":"The Forward Process","startSeconds":0,"narration":"A diffusion model learns to generate images by first studying a much easier operation: destroying them. We will take one clean training image, add a little random noise, repeat that operation many times, and then ask what a neural network would need to learn in order to reverse it. Here is our clean data example. I am using a simple landscape so that its large shapes and small details are easy to track. In a real training set, this position would hold an ordinary photograph represented by a tensor of pixel values. Call that image x zero. The subscript does not name a pixel. It names a time in a corruption process, with time zero meaning that no artificial noise has yet been added. Now take one small step. Add an independent random value to every pixel, while retaining almost all of the image that was already there. One step would be difficult to notice, so this first comparison shows the effect after one hundred such steps. The house, mountains, horizon, and sun are still recognizable. But local pixel values have begun to wander. The corruption is not a blur that only removes high frequencies. It is random noise entering throughout the image. Continue to step four hundred. More of the observed tensor now comes from noise, and less comes from the original image. The broad composition survives, while windows, roof edges, and smaller color boundaries become unreliable. Push farther. By step seven hundred, the random component dominates most local evidence. You may still infer that something large sits near the center, but the image itself no longer supports confident object recognition. Near the end, even those weak global clues disappear. The process has not replaced the image with one fixed gray card. Every run ends in a different random tensor whose values follow a simple Gaussian distribution. That final simplicity is deliberate. Natural images occupy a complicated and highly structured part of pixel space. Standard Gaussian noise is a distribution we can sample immediately, without knowing anything about cats, houses, faces, or landscapes. So the forward process builds a bridge between two distributions. At one end are real images from the training data. At the other end is nearly pure Gaussian noise, which is easy to manufacture whenever we want a new sample. Write the bridge as a chain. We begin at x zero, take one random transition to x one, another to x two, and continue until x T. This is called the forward process. Forward refers to the direction from data toward noise. It is not the direction in which images are generated, and it does not require a neural network. We choose the corruption rule ourselves. That means we know exactly how much signal and how much random disturbance appear at every step. The entire forward chain can be simulated on demand from any training image. At the chosen final time, x T is approximately a standard Gaussian tensor. The approximation matters: schedules are designed so that almost no usable information about x zero remains, while the endpoint is numerically well behaved. One subtlety is worth fixing now. We do not repeatedly add raw noise without restraint, because the variance would grow without bound. Each step slightly reduces the existing signal while adding a calibrated amount of fresh noise. That calibration gives us clean algebra, stable scales, and a known target at every noise level. Those three facts will turn image generation into a supervised learning problem rather than a demand that a network invent an entire image in one unexplained leap."},{"title":"The Forward Equations","startSeconds":249.388,"narration":"Now let us make one forward step precise. Choose a small positive number beta t. This is the noise schedule at step t, and it controls how much new uncertainty enters during that transition. Define alpha t as one minus beta t. When beta is small, alpha is close to one, which is the algebraic statement that a single step should preserve most of its input. The next image has two ingredients. Multiply the current image by square root alpha t, then add an independent standard Gaussian tensor multiplied by square root one minus alpha t. Those square roots are not decorative. Variances scale with the square of a multiplier, so this choice keeps the total variance controlled as signal is exchanged for noise. The same statement can be written as a conditional distribution. Given x t minus one, x t is Gaussian. Its mean is the slightly reduced image, and its covariance is one minus alpha t times the identity. Every pixel channel receives independent Gaussian disturbance in this basic formulation. The image structure comes from the mean, while the covariance tells us how widely the next sample may wander around that mean. A remarkable simplification appears when we compose many of these Gaussian steps. Begin with the one-step rule we just wrote. Substitute the rule for x t minus one. The surviving signal multipliers multiply, while the independent Gaussian terms combine into another Gaussian term. Repeat all the way back to x zero. Define alpha bar t as the product of every alpha up to time t. The result is the closed form. At any chosen time t, x t equals square root alpha bar t times the clean image, plus square root one minus alpha bar t times one standard Gaussian tensor. This means training never needs to simulate all earlier corruption steps. Sample a time t, sample one epsilon, and construct x t directly from the original image. The picture on the right is a toy two-dimensional version of that mixture. Blue is a fixed signal vector, red is a fixed noise vector, and yellow is the noisy observation formed from both. At a low noise fraction, yellow stays close to the blue signal. The noise changes it, but signal still controls the result. Increase the noise fraction. The blue contribution shrinks, the red contribution gains weight, and the observed vector turns away from its original direction. Near the end, almost all reliable information comes from epsilon. The original signal has not been abruptly deleted. Its coefficient has been driven close to zero by the accumulated schedule. A useful summary is the signal-to-noise ratio. Signal power is alpha bar t, noise power is one minus alpha bar t, so their ratio falls as t increases. Keep three meanings attached to the notation. Beta t controls the fresh noise in one transition. Alpha bar t records the signal surviving from the original image. And the closed form lets one epsilon produce any desired training noise level. We chose every part of this corruption process. Therefore, for each noisy image, we know the clean source, the time, and the exact random tensor that was mixed in. That is the opening a supervised learner needs."},{"title":"Training the Noise Predictor","startSeconds":474.29925,"narration":"The forward process gives us noisy images, but training still needs a target. What should the neural network predict when it receives a noisy image x t and the time t? One tempting answer is the clean image x zero. Some diffusion parameterizations do predict clean data or a related quantity. But the most common first formulation asks for something even more directly known: the noise epsilon that we sampled ourselves. Here is the complete learning problem as a pipeline. Begin with a clean training image x zero. Independently sample a Gaussian noise tensor epsilon. It has exactly the same shape as the image tensor, with one random value for every channel and spatial location. Choose a time t, read the schedule coefficients at that time, and combine the clean image with epsilon to construct x t. We now possess both the input and the label. Feed x t and t to a neural network. The time input matters because the same visible pattern means something different at a low noise level and at a high one. The network returns a tensor with the image's shape. Call it epsilon hat, the network's estimate of the particular noise tensor used to create this example. Compare epsilon hat with the known epsilon using squared error. Pixel by pixel and channel by channel, the loss penalizes disagreement between the generated label and the prediction. Then backpropagate through the denoising network exactly as in ordinary supervised learning. The parameters move in the direction that reduces expected noise-prediction error. There is no human annotation step. Labels are free because the forward process manufactured them. Yet the statistical structure is completely supervised: each input is paired with a definite target tensor. Let us run one training example in the order an implementation uses. First, select a clean image from the data set. Second, choose a time uniformly from the allowed diffusion steps. Across training, this makes the same network practise very light denoising, medium denoising, and recovery from extremely noisy inputs. Third, draw a fresh Gaussian epsilon. Because it is newly sampled, the same clean image can generate unlimited distinct supervised examples. Fourth, use the closed-form forward equation to construct x t directly. There is no need to execute every earlier noise step. Fifth, ask the network for epsilon and compare it with the sampled target. Repeat with new images, times, and noise tensors until the predictor works across the entire schedule. The equations say the same thing compactly. Sample t uniformly from one through T. Sample epsilon from a standard Gaussian. This epsilon is randomness, but once sampled it becomes an exact observed label. Mix x zero and epsilon using the schedule at t. The result x t is the network input. The network receives x t and t, and predicts epsilon hat. In image models, this predictor is often a convolutional network or transformer with multiscale spatial features, but its architecture does not change the learning target. Finally minimize expected squared error. Expectations mean that we average over clean images, sampled times, and sampled noise. Standard minibatches approximate that average. Now compare this with demanding a finished image directly. A random seed does not come with one uniquely correct photograph. Many outputs could be plausible, so ordinary squared error has no single natural target. Noise prediction is different. We chose the clean image, chose t, sampled epsilon, and computed x t. The exact epsilon is therefore a valid label for that exact input. The network is still learning something profound. To identify which fluctuations are noise, it must learn what natural image structure looks like at every scale. But the optimization interface remains an ordinary supervised regression problem. Once that predictor is accurate, we can present a noisy tensor, estimate the disturbance hidden inside it, and take a carefully calibrated step toward a cleaner tensor. Repeating that operation is the generative process."},{"title":"Reversing the Process","startSeconds":759.3917291666667,"narration":"Generation begins at the endpoint of the forward process. Sample x T directly from standard Gaussian noise. There is no hidden photograph underneath this particular tensor, because we did not obtain it by corrupting a data image. Ask the trained network which part of this tensor looks like noise at time T. Then use the reverse transition to produce x T minus one, a sample expected to contain very slightly more image structure. One step is not supposed to reveal a finished picture. Training taught the network a family of modest corrections, one for every noise level. Image generation comes from composing those corrections. After many early reverse steps, broad statistical organization appears. Large regions begin to behave like sky and ground. A horizon and mountain mass can emerge even though individual pixels remain highly uncertain. Continue through medium noise levels. The process commits to object-scale structure: a bright region in the sky, a building-sized block, and a roof shape. These are global decisions about composition rather than finished texture. This ordering is typical, not an absolute law. High-noise inputs preserve little local evidence, so early reverse steps mainly settle low-frequency, large-scale relationships. Fine edges become recoverable only after the broader image has stabilized. At lower noise, edges sharpen. The network can now distinguish a wall from its windows, a roof boundary from the sky, and one contour from a nearby contour. The last steps make smaller corrections. They adjust local contrast, texture, color consistency, and tiny geometric details while preserving the composition chosen earlier. The completed image is not retrieved from a training record. It is one sample reached by starting at a newly drawn noise tensor and following the learned reverse dynamics. A second initial noise tensor would usually produce a different landscape, arrangement, or object identity. Randomness at the start supplies diversity, while the learned denoiser keeps the trajectory near the distribution of natural images. Now inspect one reverse step. First, the neural network predicts epsilon hat t from the current noisy image and the current time. The reverse mean uses that prediction with coefficients derived from the same forward schedule. The long expression is calibrated subtraction, not simply x t minus epsilon hat. Why the coefficients? The forward process scaled both signal and noise at every transition. A valid reverse step must undo that scaling while estimating which component belongs to the clean-image direction. For a standard stochastic diffusion sampler, add a calibrated Gaussian term sigma t z. This does not carelessly put back the noise we removed. It represents uncertainty in which slightly cleaner image could have produced the current one. That uncertainty can also be handled by deterministic trajectories or by samplers using fewer, larger numerical steps. These are alternative ways to traverse a learned denoising field. The central model is still the time-dependent predictor trained on noisy images. The full sampling algorithm is now short enough to read as a loop. Start by drawing x T from a standard Gaussian. At the current time, run the network once to predict the noise component. Use that prediction and the schedule to sample a slightly cleaner state. The state remains noisy unless t is already near zero. Decrease t and repeat. The same network is reused at every step, with its time input telling it which denoising regime is required. At zero, the state is interpreted as an image sample. Pure noise supplied the initial randomness; the learned sequence of local reverse decisions supplied recognizable structure. We can now generate plausible images, but we have not told the model which plausible image we want. The final ingredient is conditioning, where a text prompt steers the same denoising process toward a chosen description."},{"title":"Text Conditioning and Guidance","startSeconds":1029.9356458333334,"narration":"To request a particular image, add a condition c. Let the prompt be: a red sailboat at sunset. The reverse process remains a sequence of denoising steps, but every prediction may now depend on that description. A text encoder converts the prompt into a sequence of learned vectors. These vectors represent tokens and their relationships, rather than a single hand-written list of visual rules. The noisy image x t enters the denoiser as before. Time t still tells the network how much corruption to expect. Text features also enter the denoising network. In common architectures, cross-attention lets spatial image features query the token sequence. A region beginning to resemble a boat can therefore respond strongly to the boat token. The output is still a noise estimate, not a finished image. Conditioning changes which noise the model predicts should be removed from a sample compatible with the prompt. This distinction keeps the generative mechanism unified. An unconditional model and a text-conditioned model both perform learned reverse diffusion. The condition changes the direction of each local step. At an early, very noisy step, prompt information mainly influences global choices. The words sailboat and sunset can affect composition, object category, and broad color relationships before any rope or edge exists. At later steps, the same conditioning can influence finer details: the outline of a sail, reflections on water, and local texture. The condition is available throughout the trajectory, but what it can usefully control changes with the noise level. During training, the model sees image and text pairs. The noise target is still known exactly, so conditioning does not destroy the supervised objective. It adds information the predictor may use to estimate epsilon. A plain conditional prediction may follow the text, but practitioners often want a stronger response. Classifier-free guidance supplies a controllable way to amplify the prompt's influence without training a separate image classifier. The method asks the same network for two predictions. First, run it with an empty condition. This estimates how the sample should denoise without knowing the prompt. Second, run it with condition c. This prediction includes both general image knowledge and the influence of the text. Subtract the unconditional prediction from the conditional one. The difference points toward a denoising decision that makes the current sample more compatible with the prompt. Here is the guidance formula. Start with the unconditional prediction. Then multiply the conditional direction by a guidance strength w and add it. At w equal to zero, the conditional direction contributes nothing. At w equal to one, the formula returns the ordinary conditional prediction. Values above one extrapolate beyond it. The three pictures are a schematic comparison from the same prompt. With zero guidance, the model can produce a plausible image while largely ignoring the requested sailboat. At one, the ordinary conditional prediction introduces the requested boat and sunset while retaining the model's natural range of possible compositions. Turn guidance much higher and prompt features are pushed harder. The boat may become more unmistakable, colors more forceful, and composition more literal. But stronger is not simply better. Extrapolation can move the trajectory away from the distribution on which the denoiser was trained. Excessive guidance may create harsh contrast, repeated edges, distorted geometry, or artificial texture. It also reduces diversity. If the conditional direction is amplified on every sample, different initial noise tensors are pulled toward a narrower set of prompt-compatible solutions. So guidance strength controls a tradeoff. Turning it up usually improves literal prompt adherence, but tends to sacrifice variation and can eventually sacrifice naturalness and image quality. There is no universal best number. The useful range depends on the model, its training, the sampler, the prompt, and the desired balance between faithfulness and variety. Now the complete diffusion story fits into four steps. First, define a forward process that turns real images into known Gaussian noise. Second, create supervised examples by sampling a clean image, a time, and epsilon. Train a neural network to predict that exact epsilon from the noisy image and time. Third, generate by starting from fresh Gaussian noise and applying learned reverse steps. Large-scale structure usually settles before fine detail because the available information changes across noise levels. Fourth, condition the denoiser on text. Classifier-free guidance amplifies the conditional direction, trading diversity and eventually naturalness for stronger prompt adherence. The central trick is therefore not that one network learns to paint an image in a single leap. It learns a supervised family of noise-removal decisions, and generation emerges when those modest decisions are chained from randomness all the way to an image."}]}}
