o problema
Em 2020 a geração de imagem estava dividida em duas famílias que não se encontravam. De um lado, os GAN produziam as amostras mais bonitas, mas não davam verossimilhança nenhuma e o treino adversarial era um problema em si. Do outro, os modelos baseados em verossimilhança — autoregressivos, flows, VAE — tinham treino estável e número comparável, e amostra visivelmente pior. Score matching e modelos baseados em energia tinham acabado de chegar perto dos GAN, o que sugeria que havia caminho fora do adversarial.
Modelos de difusão existiam desde 2015. São fáceis de definir, eficientes de treinar, e ninguém havia demonstrado que geravam imagem de qualidade. Ficaram cinco anos como uma curiosidade elegante de inferência variacional: uma cadeia de Markov que aprende a reverter outra cadeia de Markov que destrói o sinal com ruído. A ideia estava lá, faltava a escolha de parametrização que fizesse ela render.
a ideia
Você define, à mão, um processo que estraga a imagem: a cada passo, encolhe um pouco os pixels e soma um pouco de ruído gaussiano. Depois de mil passos não sobrou nada — é ruído puro, indistinguível de uma amostra de uma normal padrão. Esse processo não tem nada para aprender; é aritmética com constantes escolhidas de antemão. O modelo só aprende o caminho de volta, um passo por vez.
O movimento central do paper está em o que exatamente a rede prevê. O caminho óbvio é fazê-la prever a média do passo anterior. Ho, Jain e Abbeel reescrevem essa média e descobrem que ela é uma função do ruído que foi somado — ruído esse que o treino conhece, porque foi sorteado. Então trocam a pergunta: em vez de “como era a imagem antes”, a rede responde “quanto de ruído tem aqui”. Com essa troca, o termo da perda vira um mínimos quadrados entre o ruído sorteado e o ruído previsto, e o objetivo inteiro passa a se parecer com denoising score matching em várias escalas de ruído. As duas linhas de pesquisa eram a mesma coisa vista de ângulos diferentes.
como funciona
O processo forward tem uma propriedade que faz o treino ser barato: dá para saltar direto do dado original para o passo t em forma fechada, sem simular os passos intermediários. Isso transforma o treino num loop sem cadeia nenhuma.
treino:
x0 ~ dados
t ~ uniforme(1..T)
eps ~ N(0, I)
xt = sqrt(abarra[t])*x0 + sqrt(1 - abarra[t])*eps
gradiente em || eps - eps_theta(xt, t) ||^2
amostragem:
xT ~ N(0, I)
para t = T..1:
z = N(0,I) se t > 1, senão 0
x[t-1] = (x[t] - (1-alpha[t])/sqrt(1-abarra[t]) * eps_theta(x[t],t)) / sqrt(alpha[t]) + sigma[t]*z
A perda de treino é essa e só essa: erro quadrático, sem os pesos que o limite variacional prescreveria. Descartar os pesos reduz a importância dos passos de ruído pequeno, onde a tarefa é fácil, e concentra a rede nos passos difíceis.
T é 1.000, com as variâncias crescendo linearmente de 0,0001 a 0,02. A rede é uma U-Net no estilo do PixelCNN++ com group normalization e self-attention na resolução 16×16; o timestep entra via sinusoidal position embedding, o mesmo do Transformer, somado em cada bloco residual. Os pesos são compartilhados entre todos os passos — é uma rede só, chamada mil vezes. O modelo de CIFAR10 tem 35,7 milhões de parâmetros; os de 256×256, 114 milhões.
o que isso custou
Verossimilhança. O modelo com FID 3,17 tem codelength de 3,75 bits por dimensão, contra 2,80 do Sparse Transformer. E o trade-off é explícito na ablação: treinar no limite variacional verdadeiro melhora o codelength e joga o FID de 3,17 para 13,51. Você escolhe um ou outro.
Amostragem. Mil avaliações sequenciais da rede por imagem. O paper mede: 17 segundos para um batch de 256 imagens 32×32, 300 segundos para 128 imagens 256×256. É ordens de grandeza mais caro que uma passada de GAN.
Fragilidade da receita. Aprender as variâncias do reverse process desestabiliza o treino. Prever a imagem original em vez do ruído piora as amostras. Prever a média com o objetivo simplificado não treina. A combinação que funciona é estreita, e o paper admite que a justificativa dela é empírica.
Qualidade fora do CIFAR10. Em LSUN Cat o FID é 19,75, contra 6,93 do StyleGAN2; em Church, 7,89 contra 6,42 do ProgressiveGAN. A vitória não é geral.
E a leitura de compressão progressiva, que é uma das partes mais bonitas do texto, é declarada prova de conceito: depende de minimal random coding, que não é tratável em alta dimensão.
onde isso aparece hoje
A parametrização por predição de ruído virou o padrão de fato dos modelos de difusão, e a difusão virou a base dos geradores de imagem que se popularizaram depois. As duas frentes de trabalho seguintes estão anunciadas no próprio paper: ele observa que o comprimento da difusão não precisa ser 1.000 e pode ser encurtado para amostrar rápido, e que o decoder final poderia ser mais forte.
A observação sobre geração progressiva — features de larga escala aparecem primeiro, detalhes por último — também sobreviveu como intuição operacional. É por isso que travar o latente intermediário preserva pose e cor de cabelo enquanto varia o resto, e é o que torna interpolação e edição no meio da cadeia possíveis.