Plant a repeller — samples learn to dodge it
Think of every possible image as a point in a huge space. Your prompt is a gold attractor: denoising pulls samples toward it. A negative prompt adds a red repeller. The 120 dots below are samples mid-generation. Click anywhere to move the forbidden zone and drag the strength slider — watch the flow re-route in real time.
Conceptual toy: real diffusion works in a ~16,000-dimensional latent space, but the pull/push mechanics are exactly this. Set strength to 0 to see samples happily cut straight through the "forbidden" zone.
Under the hood it's one subtraction, not a filter
At every denoising step the sampler computes a direction toward the prompt and a direction toward the negative, then steps along pull − push. Here is a single sample with its actual step vector decomposed: gold = toward the prompt, red = away from the negative, white = the step it really takes. Click to drop the sample anywhere, then step it.
In classifier-free guidance the update is noise_neg + scale × (noise_prompt − noise_neg): the negative embedding literally replaces the "unconditional" baseline, so everything is measured relative to what you banned.
The clean kill — deleting "blurry" from your batch
The model's world here has two clusters: sharp portraits (left) and blurry ones (right) — and 30% of its training mass is blurry, so plain sampling keeps landing there. Toggle the negative prompt and regenerate: the repeller sits exactly on the artifact cluster, so samples that would have gone blurry slide over to the sharp cluster instead.
Fuzzy grey dots = samples that ended inside the blur cluster (drawn smeared on purpose). The percentage is counted live from the 60 simulated trajectories, nothing is hardcoded.
Collateral damage — when the repeller becomes a bomb
Same two clusters, but now the strength slider goes to 8. The faint grid shows how the repeller warps the whole space; dark dots show where each sample would have landed with no negative at all. Crank it and watch perfectly good sharp images get shoved off their natural spot — some all the way into nonsense territory.
"Collateral shift" = average distance between each sample's landing spot with vs. without the negative, computed on identical random seeds. "Off-manifold" = samples pushed outside both clusters — the toy version of mangled, over-processed outputs.
"Portrait, negative: face" — negating what you asked for
Guidance steers along the difference between the prompt embedding and the negative embedding. Negate "watermark" and that difference vector is long and useful. Negate "face" while prompting "portrait" and the two embeddings nearly coincide — the steering signal shrinks toward zero and noise takes over. Slide the negative toward the prompt and watch the samples lose the plot.
The white arrow is the live steering signal (prompt − negative). Both the signal percentage and the coherent-sample count are measured from the running simulation each frame.