Diffusion Models

Demonstrações interativas da aula de modelos difusores

Quatro visualizações que acompanham os slides: o processo de difusão (forward), o noise schedule, a álgebra gaussiana por trás do kernel e da posterior, e o treinamento ao vivo de um mini modelo difusor em 2D, direto no navegador. Notação dos slides: zt, βt, αt = ∏s≤t(1−βs).

1 · Processo de difusão (forward)

Partimos de amostras de uma distribuição simples e aplicamos a regra sequencial zt = √(1−βt)·zt−1 + √βt·εt, com εt ∼ 𝒩(0, I). Arraste o tempo e observe a distribuição marginal (roxo) convergir para a normal padrão (tracejado).

Trajetórias zt no tempo (3 instâncias destacadas)

Marginal q(zt) no instante atual

2 · Explorador do noise schedule

Os hiperparâmetros βt controlam a velocidade da difusão. Acumulando αt = ∏(1−βs) obtemos quanto sinal (√αt) e quanto ruído (√(1−αt)) compõem zt = √αt·x + √(1−αt)·ε.

βt

αt = ∏(1−βs)

√αt (sinal) vs √(1−αt) (ruído)

zt = √αt·x + √(1−αt)·ε aplicado pixel a pixel

3 · Álgebra gaussiana: kernel e posterior

3a · Kernel q(zt | x): sequencial ≡ um passo só

Da mesma instância x saem várias trajetórias estocásticas. O kernel q(zt|x) = 𝒩(√αt·x, (1−αt)·I) permite amostrar o resultado de t passos de uma vez. Compare o histograma das trajetórias sequenciais (ciano) com amostras diretas do kernel (verde): ambas seguem a mesma densidade (roxo). Arraste o marcador de x.

30 trajetórias sequenciais a partir do mesmo x

Em t: trajetórias vs kernel vs densidade exata

3b · Posterior q(zt−1 | zt, x): produto de gaussianas

A difusão revertida no tempo, condicionada em x, é proporcional ao produto q(zt|zt−1) · q(zt−1|x). O produto de duas gaussianas é gaussiano: a posterior (roxo) fica entre a verossimilhança (ciano) e a prior (laranja), e é mais estreita que ambas. Arraste os marcadores de x e zt no gráfico.

Curvas sobre o eixo zt−1 (arraste x e zt)

💡 Observe com o slider: com t pequeno a prior é estreita (pouco ruído acumulado, variância 1−αt−1 pequena) e a posterior praticamente coincide com ela, a informação vem de x. Com t grande a prior fica quase plana e a posterior cola na verossimilhança, a informação vem de zt. É por isso que a amostragem reversa pode partir de ruído puro: perto de t = T, condicionar em x quase não muda a posterior (teste arrastando x com t = 50).

4 · Treine um mini diffusion model ao vivo

Uma MLP g(z, t, c) (13→64→64→2, ~5,6 mil parâmetros) é treinada aqui no navegador com o algoritmo dos slides: sorteia t ∼ U{1..T} e ε ∼ 𝒩(0,I), monta zt = √αt·x + √(1−αt)·ε pelo kernel e minimiza ‖g(zt, t) − ε‖². Depois, a amostragem reversa transforma ruído puro nas duas luas.

passos: 0 · loss: —

Loss (média móvel, escala log). O patamar ≈ variância irredutível do ruído, não é bug.

Amostragem reversa: zT ∼ 𝒩(0,I) → dados

Amostragem (slides): t−1 = zt/√(1−βt) − (βt/(√(1−αt)·√(1−βt)))·g(zt, t), depois zt−1 = ẑt−1 + σt·ε. Com condição de classe, usa-se classifier-free guidance: g̃ = (1+w)·g(z, t, c) − w·g(z, t, ∅).