Modelos de difusão: a matemática por trás da geração de imagens
Como modelos de difusão transformam ruído em imagem: a matemática de adicionar e reverter ruído, e por que a difusão dominou a geração visual.
Paul Gomes
Autor
Toda imagem gerada por IA que você viu nos últimos anos começou como um retângulo de ruído puro, estática de televisão sem sinal. O modelo não “desenha” nada. Ele remove ruído. É o mais contraintuitivo da coisa toda: para ensinar uma máquina a criar, os pesquisadores primeiro ensinaram a destruir, com método, e depois pediram que ela desfizesse a própria destruição passo a passo. Essa inversão é o coração dos modelos de difusão, e entender por que ela funciona explica por que a difusão passou por cima das GANs e virou o padrão de fato da geração visual.
O processo direto: destruir de forma controlada
Comece pelo lado fácil, que é o de estragar uma imagem. Pegue uma foto qualquer e adicione um pouquinho de ruído gaussiano. Repita. A cada passo, a imagem fica um grau mais borrada, mais aleatória, menos ela mesma. Depois de muitos passos, o que sobra é indistinguível de ruído puro, sem nenhum traço da foto original. Esse é o processo direto (forward process) da difusão, e ele tem uma propriedade preciosa: é completamente definido por nós. Não há nada para aprender aqui. Você escolhe quanto ruído adicionar em cada etapa, segundo um cronograma fixo, e o processo simplesmente acontece.
A elegância matemática está em como esse acúmulo de ruído se comporta. Como cada passo adiciona ruído gaussiano de forma independente, e gaussianas somadas continuam gaussianas, dá para pular o caminho inteiro. Você não precisa aplicar mil pequenos passos para chegar ao nível de ruído do passo 1000. Existe uma fórmula fechada que leva a imagem original diretamente a qualquer nível de degradação que você quiser, numa tacada só. Isso não é detalhe técnico: é o que torna o treinamento viável. Sem esse atalho, gerar exemplos de treino seria proibitivamente caro.
O ponto conceitual a fixar é que o processo direto transforma uma distribuição complicadíssima — a distribuição das imagens reais, que ninguém sabe escrever numa equação — em uma distribuição trivial e conhecida, a gaussiana. Estragar é fácil justamente porque o destino da destruição é sempre o mesmo lugar simples.
O processo inverso: o único lugar onde há aprendizado
Se destruir é barato e determinado, criar é o oposto. O processo inverso pede que, dado um retângulo de ruído, o modelo recupere a imagem que estaria ali se aquele ruído fosse o resultado da destruição de algo real. Reverter um único passo de ruído parece impossível: há infinitas imagens que poderiam ter gerado aquele estado ruidoso. E aqui está a sacada teórica. Quando cada passo de ruído é suficientemente pequeno, o passo reverso também tem, aproximadamente, a forma de uma gaussiana. Isso é um resultado conhecido da teoria dos processos de difusão, não uma conveniência inventada. O modelo não precisa aprender a reverter um salto gigante e ambíguo; precisa apenas aprender a estimar os parâmetros de uma pequena correção gaussiana em cada etapa.
Na prática, a rede neural é treinada para uma tarefa surpreendentemente concreta: olhar uma imagem ruidosa e prever qual foi o ruído adicionado. Só isso. Você pega uma imagem de treino, sorteia um nível de degradação, aplica o ruído usando a fórmula fechada, mostra o resultado para a rede e pede que ela adivinhe o ruído que você mesmo injetou — que você conhece exatamente, porque foi você quem o colocou. O erro entre o ruído previsto e o ruído real vira o sinal de treinamento. É um problema de regressão honesto, com um alvo verdadeiro e não ambíguo, o que explica por que o treinamento de difusão é tão estável comparado ao das GANs.
Uma vez que a rede sabe prever ruído, gerar uma imagem nova é um loop. Comece com ruído puro. Pergunte ao modelo: quanto disso é ruído? Remova uma fração dele. Repita. A cada iteração a estática cede lugar à estrutura, e depois de muitos passos emerge uma imagem coerente que o modelo nunca viu, mas que pertence à distribuição que ele aprendeu. Prever ruído e remover uma parte dele, iterativamente, é literalmente o mecanismo inteiro da geração.
Por que prever o ruído, e não a imagem
Vale a pena parar nessa escolha, porque ela não é óbvia. Seria natural pedir que a rede previsse diretamente a imagem limpa. Reformular o alvo como o ruído tem consequências práticas boas. O ruído tem estatística bem-comportada e escala conhecida em todos os níveis de degradação, o que mantém o sinal de treinamento numa faixa estável do início ao fim. Além disso, existe uma relação matemática direta ligando o ruído previsto ao gradiente da distribuição dos dados ruidosos em cada nível — a direção que aponta para regiões de imagens mais prováveis. Prever ruído é, no fundo, aprender para que lado empurrar um ponto no espaço de imagens para torná-lo mais realista. A geração vira uma descida guiada por esse campo, do caos ruidoso até as regiões densas onde vivem as imagens plausíveis.
Onde entra o texto
Difusão pura gera imagens da distribuição, mas não as que você pediu. O condicionamento por texto é o que transforma isso num sistema de “escreva e receba”. A ideia é alimentar a rede que prevê ruído com uma representação do prompt — tipicamente vinda de um codificador de texto — de modo que a previsão de ruído passe a depender do que foi pedido. O mesmo estado ruidoso, condicionado a “um gato” ou a “uma catedral”, leva a rede a remover ruído em direções diferentes.
Há um truque adicional que merece nome: a classifier-free guidance. Durante o treino, o modelo aprende tanto a prever ruído com o prompt quanto sem ele. Na geração, compara-se as duas previsões e exagera-se a diferença, empurrando a imagem com mais força na direção apontada pelo texto. É o botão que troca fidelidade ao prompt por diversidade: aumente demais e as imagens ficam saturadas e caricaturais; dê menos e o modelo ignora o pedido. Boa parte da sensação de “obediência” de um gerador moderno vem da calibragem desse parâmetro.
O truque do espaço latente
Rodar difusão diretamente sobre milhões de pixels é caro. A virada de eficiência que tornou a geração de alta resolução acessível foi mover o processo para um espaço latente. Em vez de adicionar e remover ruído nos pixels, treina-se antes um autoencoder que comprime a imagem numa representação muito menor, densa, que preserva o essencial e descarta redundância. A difusão inteira — destruir, prever ruído, reverter — acontece nesse espaço comprimido. Só no final um decodificador expande o latente gerado de volta para pixels. O ganho de custo é enorme, porque a parte iterativa e pesada opera sobre uma fração dos dados. Essa mudança, mais do que qualquer aumento bruto de escala, foi o que tirou a difusão dos laboratórios e a colocou rodando na nuvem para milhões de pessoas.
Por que a difusão venceu
Antes da difusão, o topo da geração de imagens pertencia às GANs, treinadas num cabo de guerra entre um gerador e um discriminador. GANs produziam resultados impressionantes, mas eram notoriamente instáveis: colapso de modo, em que o gerador aprende a produzir sempre as mesmas poucas saídas boas, e treinamentos que descarrilavam sem aviso. A difusão troca esse jogo adversarial por um objetivo de regressão simples e estável, com um alvo verdadeiro em cada passo. Isso a torna mais fácil de treinar em escala e mais confiável em cobrir a variedade dos dados, em vez de fixar em alguns picos.
O preço é a lentidão. GANs geram em uma passada; difusão, na formulação clássica, precisa de muitos passos iterativos, e cada passo é uma execução da rede. Boa parte da pesquisa recente atacou exatamente isso — amostradores mais espertos que dão passos maiores, e técnicas de destilação que treinam modelos rápidos para imitar em poucas etapas o que o modelo lento faz em muitas. A direção é clara: espremer a qualidade da difusão dentro de um orçamento de passos cada vez menor.
Minha leitura
O que me impressiona na difusão não é o resultado, é a filosofia. A ideia de decompor um problema impossível — modelar a distribuição das imagens reais — numa longa sequência de problemas triviais, cada um deles apenas “remova um pouquinho de ruído”, é uma das jogadas mais elegantes do aprendizado de máquina recente. A dificuldade não foi eliminada; foi diluída em milhares de passos pequenos e digeríveis. Vejo aqui um padrão que vai muito além de imagens: trocar um salto criativo único e misterioso por uma cadeia de correções incrementais e verificáveis. Vídeo, áudio, moléculas e até geração de estrutura já seguem por esse caminho. A difusão venceu a geração visual, mas o que ela realmente entregou foi uma receita geral para transformar caos em ordem devagar, e isso é um ativo que a indústria ainda está começando a explorar.