🐶 Demo Interativo — Forward Process
Passo: 0 / 20
q(xt | xt-1)
Distribuição condicional no passo t
q(xt | xt-1) = 𝒩(xt; √(1−βt) · xt-1, βt · I)
q(·|·) — distribuição condicional do forward process: dado o passo anterior, qual a distribuição do próximo?
βt — cronograma de ruído (noise schedule): escalar pequeno (0<β<1) que controla o quanto de ruído é adicionado em cada passo; cresce ao longo do tempo
xt — imagem no passo t (vetor de todos os pixels)
√(1−βt) · xt-1 — média: imagem anterior ligeiramente atenuada
Por quê atenuar? Se adicionarmos ruído sem reduzir o sinal, a variância cresce sem limite a cada passo. O fator √(1−βt) < 1 compensa exatamente a variância do ruído adicionado, mantendo a variância total ≈ 1 ao longo de toda a cadeia — condição necessária para que xT convirja para N(0, I).
βt · I — variância: I é a identidade — ruído gaussiano independente em cada pixel
Cada pixel é perturbado de forma independente. A imagem inteira é tratada como um vetor.
📚 Conceitos do Forward Process
De pixels a ruído
Trocamos "tinta" por pixels e "água" por ruído estático gaussiano. O resultado final após T passos é praticamente ruído puro N(0,I).
Cadeia de Markov
Uma sequência de estados onde cada estado depende apenas do anterior. Não há memória longa — só o estado imediato importa.
Processo Forward
A cada passo t, adicionamos uma pequena quantidade de ruído gaussiano — incremental e controlado pelo cronograma βt.
Atalho Matemático
Usando α̅t = ∏ (1-βi), podemos ir diretamente de x₀ ao xt em qualquer passo: x_t = √α̅_t · x₀ + √(1-α̅_t) · ε
🧠
A propriedade Markoviana é poderosa: para adicionar ruído no passo t, só precisamos olhar para xt-1 — não para toda a história anterior.