Ir para o conteúdo

16. Generative Models

Todo modelo generativo responde a uma pergunta: como transformar uma distribuição da qual você consegue amostrar em outra da qual não consegue? Você tem um gerador de números aleatórios. Você quer uma fotografia. A distância entre essas duas coisas é a área inteira.

Ninguém ataca isso de frente. \(p(x)\) sobre um milhão de pixels não é algo que se escreva e só a constante de normalização já é intratável. Então toda família deste módulo faz o mesmo movimento — decompor o problema difícil de amostragem numa sequência de problemas fáceis — e elas diferem apenas em onde cortam. Essa escolha determina tudo o que vem depois: estabilidade de treino, qualidade das amostras, se você ganha uma verossimilhança e quantas passagens diretas custa uma imagem.

Este capítulo é o mapa. Os sete seguintes são o território.7

Slides

Clique nos slides e use as setas ← → para navegar; F abre em tela cheia e P abre a visão do apresentador, com as notas. Os três simuladores desta página rodam dentro dos slides. Abrir os slides numa aba nova

Quatro formas de cortar o problema

Família A decomposição Treinada por Custo de amostragem Dá verossimilhança?
Autorregressiva Regra da cadeia: \(p(x) = \prod_i p(x_i \mid x_{<i})\) Máxima verossimilhança, direto Uma passagem por dimensão Exata
Variável latente (VAE) \(p(x) = \int p(x\mid z)\,p(z)\,dz\) — um \(z\) simples, um decodificador aprendido Um limite inferior da verossimilhança (ELBO) Uma passagem Um limite
Adversarial (GAN) Nenhuma decomposição. Aprenda um gerador e um crítico que o julgue Um jogo minimax Uma passagem Nenhuma
Difusão / fluxo Tempo: um caminho do ruído aos dados, aprendido como correção local Regressão sobre um alvo conhecido Dezenas a centenas de passagens Sim, pela ODE (a equação diferencial que leva o ruído aos dados)

Duas das colunas dividem as famílias das duas formas que os capítulos seguintes vão usar o tempo todo.

  • Densidade explícita ou implícita. Um modelo explícito deixa você avaliar \(p_\theta(x)\) (a densidade que o modelo de pesos \(\theta\) dá a \(x\)), ou um limite dela, para qualquer \(x\) que você entregar: modelos autorregressivos, VAEs, difusão e fluxos. Um modelo implícito, a GAN, só deixa você sortear amostras. Isso decide o que dá para medir: uma verossimilhança em dados separados só existe para o primeiro grupo; para uma GAN as amostras são a única evidência.
  • Como é treinado. Por verossimilhança (as duas primeiras linhas: maximizar \(\log p_\theta\) ou o limite dela), adversarial (um crítico ocupa o lugar da verossimilhança) e regressão sobre um score ou uma velocidade (difusão e flow matching), que não precisa nem de densidade normalizada nem de crítico. O score, \(\nabla_x \log p(x)\), é a direção em que a densidade sobe; a velocidade é para onde um ponto deve andar em cada instante do caminho ruído → dados.

Uma família que a tabela deixa de fora: os normalizing flows, uma rede inversível cujo jacobiano é barato, de modo que a fórmula de mudança de variáveis dá uma verossimilhança exata numa passagem. A inversibilidade limita a arquitetura e eles perderam em qualidade; a versão em tempo contínuo deles, o continuous normalizing flow, é o que o flow matching treina (capítulo 21).

Duas das quatro linhas já estão aposentadas como métodos de manchete e duas movem o mundo. O resto deste capítulo é o porquê.

O mesmo alvo, três amostradores

Abaixo, a mesma distribuição de dados — oito gaussianas num anel — é gerada de três formas. Toda grandeza no painel é exata: o score, o campo de velocidade e as marginais discretas têm forma fechada para este alvo, então nada é treinado e nada é aproximado. O que você observa é a decomposição, isolada de qualquer questão sobre se uma rede a ajustou bem.

Três lições e elas generalizam muito além deste brinquedo:

  1. O custo autorregressivo é o número de dimensões. Duas aqui e de graça. Uma por pixel ou por token em dados reais — e é por isso que modelos autorregressivos de imagem trabalham sobre 1024 tokens latentes e não sobre um milhão de pixels (capítulo 23).
  2. O custo da difusão é o número de passos e ele é um botão. Arraste para 1: um único passo de Euler não acompanha um caminho curvo e toda amostra cai no meio do anel. Com 8 passos, 20% das amostras ainda caem fora dos dados; com 32 é cerca de 1%, que é o piso que uma amostra perfeita deste tamanho mostraria de qualquer jeito. Esse botão — qualidade trocada por latência, na inferência, depois do treino — é a propriedade que fez a difusão vencer.
  3. Estocasticidade compra robustez em contagens intermediárias de passos. Ligue a correção de Langevin: com 8 ou 16 passos o amostrador fica mensuravelmente melhor, porque os erros são corrigidos em vez de acumulados; com 128 os dois já convergiram e ela não compra nada. É a troca ODE-versus-SDE (amostrador determinístico contra estocástico) em miniatura.6 Em números: com 8 passos a correção leva a fração fora dos dados de 20% para 16% e com 16 passos de 4% para 2%; custa uma avaliação a mais por passo.

O painel acima sorteia 600 pontos de uma vez. Abaixo, uma amostra, no código do laboratório, linha a linha, num alvo pequeno o bastante para conferir à mão: quatro pontos nos cantos de um quadrado. O autorregressivo chega a \((-1; -1)\) em duas passagens e dá a probabilidade exata dela, \(0{,}5 \times 0{,}8 = 0{,}4\); o fluxo, com 4 passos de Euler, para em \((1; 0{,}82)\), ainda entre os cantos. Arraste n_steps para 1 (cai na média dos dados) e para 8 (cai num canto):

p(x1, x2) · o alvo
uniformes do sorteio
ruído z
 

A assimetria que explica borrão e colapso

O outro eixo não é custo, é falha e há uma única ideia por baixo dos dois modos de falha mais famosos da área.

Ajustar um modelo é minimizar uma divergência e a divergência KL não é simétrica. A direção em que você a escreve muda o que você obtém quando o modelo não consegue representar os dados exatamente — o que é sempre.

\[ \underbrace{\text{KL}(p_{\text{dados}} \,\|\, p_\theta)}_{\text{média sobre os dados}} \qquad\text{versus}\qquad \underbrace{\text{KL}(p_\theta \,\|\, p_{\text{dados}})}_{\text{média sobre o modelo}} \]
  • A KL para frente é punida onde quer que os dados tenham massa e o modelo não. O ótimo dela cobre tudo, inclusive o vale vazio entre os modos. Isto é máxima verossimilhança — o que VAEs e modelos autorregressivos otimizam — e é exatamente por isso que as amostras deles parecem médias. Borrão não é bug do decodificador. É o objetivo recebendo o que pediu.
  • A KL reversa só é punida onde o modelo põe massa e é indiferente a dados que ela nunca visita. O ótimo dela escolhe um modo e abandona o resto: toda amostra plausível, uma parte inteira da distribuição desaparecida. Isso é colapso de modos e o ponto é enunciá-lo como propriedade de um objetivo, não como acidente de treino.

Diga uma vez, use sete vezes

Borrado e colapsado não são defeitos sem relação. São as duas pontas de uma mesma assimetria. Todo modelo deste módulo se posiciona em algum ponto dela e saber onde diz como serão suas amostras antes mesmo de rodá-lo.

O trilema e como ele foi quebrado

Durante boa parte dos anos 2010 a área parecia um trade-off rígido de três pontas5:

  • Alta qualidade das amostras

  • Cobertura de modos e diversidade

  • Amostragem rápida

GANs pegaram qualidade e velocidade e abriram mão da cobertura. VAEs e normalizing flows pegaram cobertura e velocidade e abriram mão da qualidade. A difusão pegou qualidade e cobertura e abriu mão da velocidade — e esse acabou sendo o canto certo, porque velocidade é a única das três que dá para comprar de volta depois. Qualidade e cobertura são decididas no treino; o número de passos de amostragem é decidido na inferência. A história dos últimos três anos é em boa parte a história de recomprá-la: solvers melhores, fluxos retificados, destilação para um punhado de passos e então para um.

Os sete capítulos e para que serve cada um

Capítulo Família Por que está aqui
17 · VAE Variável latente Não é um gerador de imagens competitivo e não é por isso que importa. É o compressor sobre o qual todo modelo de difusão latente roda e o lugar mais claro para aprender a ideia de espaço latente.
18 · GAN Adversarial Deslocada como geradora. A perda dela sobrevive em toda parte — em decodificadores de autoencoder, super-resolução, vocoders e destilação de um passo.
19 · CLIP Não generativo A ponte. Aprender um espaço compartilhado imagem–texto é o que tornou possível condicionar numa frase; tudo depois deste capítulo é condicionado a texto.
20 · Stable Diffusion Difusão O sistema completo: espaço latente, U-Net, condicionamento por texto, guidance sem classificador, samplers.
21 · Flow matching Fluxo A reformulação que simplificou o treino e endireitou os caminhos e que hoje sustenta o estado da arte.
22 · Diffusion Transformers Difusão Substituir a U-Net por um Transformer e ganhar leis de escala para geração de imagens.
23 · Geração autorregressiva Autorregressiva Gerar imagens como sequências de tokens — a rota para modelos any-to-any genuinamente unificados.

Uma história curta, lida como sequência de gargalos

Cada era se entende melhor por qual das quatro decomposições era acessível na época.

Quando O que aconteceu O gargalo que caiu
1948 Os n-gramas de Shannon geram texto Nenhum ainda — mas a regra da cadeia como recurso generativo
1985–2006 Máquinas de Boltzmann, deep belief nets1 Aprender uma distribuição sem rótulos. Amostrar seguiu intratável.
2013 VAE2 — o truque da reparametrização Retropropagar através de um nó aleatório. Modelos de variável latente viraram treináveis por gradiente.
2014 GAN3 Precisar de uma verossimilhança tratável. A qualidade saltou; cobertura e estabilidade foram o preço.
2015–2020 Difusão4 — de curiosidade a DDPM Qualidade de amostragem sem treino adversarial, cortando o problema ao longo do tempo.
2021 CLIP, difusão latente Condicionar em linguagem e rodar difusão num espaço 48× menor — o que a tornou viável numa GPU.
2022–2023 Stable Diffusion, DALL·E 2, Midjourney Acesso. Pesos abertos e o começo das discussões de direito autoral e proveniência.
2023–2024 Flow matching, DiT, destilação Caminhos mais retos, um backbone escalável e contagens de passos caindo de 1000 para menos de 10.
2024–2026 Vídeo, any-to-any, tempo real Coerência ao longo do tempo e um modelo que lê e escreve toda modalidade.

Duas coisas que este curso vai repetir

Avaliação é genuinamente um problema em aberto. O FID é o número padrão e é um substituto ruim para o que importa — é sensível ao extrator de features e ao redimensionamento das imagens, não é um número que se possa comparar entre artigos e, quando os modelos já são bons, acompanha mal o julgamento humano. O capítulo 8.3 é sobre como fazer melhor.

Os dados de treino são o trabalho de outras pessoas. De onde vieram as imagens, se houve consentimento, o estilo de quem um modelo reproduz sob demanda e o que acontece com as pessoas cujo trabalho era aquilo — nada disso está resolvido, tudo isso está em litígio ativo e faz parte da decisão de engenharia, não de um módulo de ética pregado no final.

Laboratório: o mapa, medido

Cada afirmação desta página é medida num notebook no Colab com as mesmas oito gaussianas num anel, onde a densidade verdadeira é conhecida e todo número pode ser comparado com ela. Ele roda no navegador, em CPU, em poucos minutos; não é preciso instalar nada. Um modelo de cada família, cada seção terminando num checkpoint com valor de verificação:

  1. os dados, a densidade verdadeira e duas medidas: amostras fora dos dados e modos cobertos;
  2. uma densidade explícita: misturas de gaussianas e uma estimativa por kernel cuja verossimilhança de treino mente;
  3. KL para frente contra KL reversa com uma gaussiana: 79% das amostras fora dos dados ou um modo de oito;
  4. um modelo autorregressivo numa grade discretizada: verossimilhança exata, uma passagem por dimensão;
  5. uma GAN: nenhuma verossimilhança, pontes entre os modos e o que acontece quando os modos ficam estreitos;
  6. flow matching: o número de passos como botão e a verossimilhança pela ODE;
  7. o mapa como tabela e um modo raro com 2% dos dados — quais famílias o mantêm?

Abrir o laboratório no Colab — salve uma cópia no seu Drive (Arquivo → Salvar uma cópia no Drive) para rodar e editar.

Pontos principais

  1. Todo modelo generativo decompõe um problema intratável de amostragem em pedaços tratáveis. O corte escolhido decide custo, estabilidade e qualidade.
  2. Custo autorregressivo escala com dimensões; custo de difusão escala com passos. É por isso que as imagens foram para o espaço latente e por que contagens de passos são o que todo mundo otimiza.
  3. A KL é assimétrica. A KL para frente cobre modos e borra; a reversa procura modos e colapsa. Duas falhas famosas, uma causa.
  4. O trilema — qualidade, cobertura, velocidade — foi quebrado escolhendo o canto em que a propriedade ausente podia ser recomprada depois. A difusão abriu mão da velocidade e depois a pegou de volta.
  5. VAEs e GANs continuam em toda parte, como componentes e não como geradores. Leia os capítulos 17 e 18 com isso em mente.
  6. Avaliação e proveniência não estão resolvidas. Trate as duas como parte do trabalho.


  1. Ackley, D. H., Hinton, G. E., & Sejnowski, T. J. (1985). A learning algorithm for Boltzmann machines — Cognitive Science, 9(1); e Hinton, G. E., Osindero, S., & Teh, Y.-W. (2006). A fast learning algorithm for deep belief nets — Neural Computation, 18(7). Modelagem generativa baseada em energia, décadas antes de ser acessível. ↩

  2. Kingma, D. P., & Welling, M. (2014). Auto-Encoding Variational Bayes — ICLR. O ELBO e o truque da reparametrização. ↩

  3. Goodfellow, I., et al. (2014). Generative Adversarial Networks — NeurIPS. ↩

  4. Ho, J., Jain, A., & Abbeel, P. (2020). Denoising Diffusion Probabilistic Models — NeurIPS. O artigo que tornou a difusão competitiva, sobre a base de Sohl-Dickstein et al. (2015). ↩

  5. Xiao, Z., Kreis, K., & Vahdat, A. (2022). Tackling the Generative Learning Trilemma with Denoising Diffusion GANs — ICLR. Onde o trilema é enunciado com clareza. ↩

  6. Song, Y., et al. (2021). Score-Based Generative Modeling through Stochastic Differential Equations — ICLR. A unificação de difusão e score matching e o amostrador preditor–corretor usado no painel acima. ↩

  7. Bond-Taylor, S., Leach, A., Long, Y., & Willcocks, C. G. (2022). Deep Generative Modelling: A Comparative Review of VAEs, GANs, Normalizing Flows, Energy-Based and Autoregressive Models — IEEE TPAMI. O survey para ler junto com este módulo. ↩