Ir para o conteúdo

Espaço Latente

Um espaço latente é o espaço em que uma rede descreve de novo os seus dados: uma lista de números por entrada que ninguém rotulou, aprendida porque a perda precisava dela. Quase todo capítulo deste curso constrói um. O último mapa de features de uma CNN, o embedding de um token, o residual stream de um Transformer, o espaço compartilhado do CLIP, o código de um VAE, a grade 64 × 64 × 4 em que o Stable Diffusion roda, o estado de um modelo de mundo: todos são espaços latentes e cada um é moldado por uma perda diferente. Esta página reúne o que os capítulos dizem sobre eles e depois olha de perto os quatro capítulos que não tratam de outra coisa. A página de embedding olha os mesmos espaços pelo lado dos vetores.

O latente de cada capítulo

Capítulo O latente Tamanho no curso O que o molda
Dados · redução de dimensionalidade coordenadas de PCA, t-SNE e UMAP dígitos 64 → 2 variância (PCA), vizinhanças (t-SNE, UMAP)
Redes Convolucionais os mapas de features 1 × 28 × 28 → 64 × 7 × 7 → 64 a perda de classificação
Atenção · embeddings uma linha por token GPT-2: 50.257 × 768 prever o próximo token
Transformers o residual stream \(n \times d\) em todo bloco prever o próximo token
Vision Transformers um token por patch 197 × 768 no ViT-B/16 classificação ou auto-supervisão
Transfer Learning a saída de um encoder congelado 768 no DistilBERT o pré-treino de outra pessoa
CLIP um espaço comum a imagens e textos 512, vetores unitários a perda contrastiva
Autoencoders Variacionais uma gaussiana por entrada 64 × 64 × 4 no SD 1.5 reconstrução + β · KL
GANs o ruído \(z\) que entra no gerador 1 ou 2 no simulador, 64 no lab o discriminador
Stable Diffusion a grade do VAE, sem ruído 4 × 64 × 64 um autoencoder congelado
Diffusion Transformers essa grade, cortada em tokens 4.096 tokens em 1024² o mesmo
Geração Autorregressiva uma grade de índices de codebook 16 × 16 inteiros reconstrução + perdas do codebook
JEPA o embedding da parte escondida um vetor por patch previsão no espaço de embeddings + um termo anticolapso
Modelos de Mundo o estado do agente \(z \in \mathbb R^{32}\) no V–M–C reconstrução, recompensa ou previsão
TDWM vetores unitários, um por quadro a esfera unitária o tempo

Todas as técnicas num mapa só

Todas as técnicas que esta página cita, em cinco famílias. Clique numa caixa para ver o que é o latente dela, o tamanho e o que o molda, com um link para o capítulo. Avançar percorre as sete ligações numeradas entre VAE, JEPA, modelos de mundo e TDWM que as últimas seções da página destrincham.

Um mapa de todas as técnicas de espaço latente da página, em cinco famílias, com ligações numeradas entre VAE, JEPA, modelos de mundo e TDWM.

Por que um latente pode ser pequeno e por que pode ser grande

Pequeno. Os dados não ocupam o espaço em que estão escritos. A página da maldição da dimensionalidade estima a dimensão intrínseca do MNIST em cerca de 12 a 15 (não 784) e o capítulo de redes profundas apresenta o autoencoder como a arquitetura que aposta que os dados vivem numa variedade de dimensão menor. Uma projeção reta não acompanha uma variedade curva: na mola da página de redução o PCA põe 72% dos vizinhos no lugar errado e o t-SNE 1%. É o argumento a favor de latentes aprendidos e não lineares.

Grande. O espaço de muitas dimensões é espaçoso. O cosseno entre duas direções aleatórias tem média zero e desvio padrão \(1/\sqrt d\): com \(d = 1000\), 99% dos pares têm \(|\cos\theta| < 0.082\) (A4 · Tudo fica ortogonal). Direções quase ortogonais saem baratas e é por isso que um embedding de 768 dimensões carrega muito mais do que 768 coisas distinguíveis.

Visto. Um latente só se vê por uma projeção e cada projeção mente de um jeito. O quadro "sete coisas que não se pode dizer sobre um gráfico de t-SNE ou UMAP", da página de redução, vale para qualquer gráfico de embeddings: em ruído uniforme de 20 dimensões a silhueta é 0.042 e no mapa do t-SNE ela vira 0.333.

Features: o espaço que um classificador constrói

Uma CNN troca resolução por canais: o tensor fica menor enquanto o que ele descreve fica mais rico (1 × 28 × 28 → 64 × 7 × 7, depois um vetor de 64 após o global average pooling). O que a última camada lê é um latente e o capítulo de transfer learning o mede com uma sonda linear: 1.538 parâmetros treináveis sobre um DistilBERT congelado, que só consegue traçar um hiperplano no espaço que o encoder já construiu. A sonda é o teste padrão de um latente no curso; ela volta no ViT, no CLIP, no JEPA e no TDWM. Features congeladas também economizam: podem ser calculadas uma vez e guardadas.

Embeddings: de nomes a vetores

Um id de token é um nome: o id 4 (␣climb) não é o dobro do id 2 (␣cat). A camada de embedding transforma cada nome numa linha aprendida de \(E \in \mathbb R^{V \times d}\) — 50.257 linhas de 768 números no GPT-2, 38.6 milhões de parâmetros, 31% do modelo. Numa tabela treinada nenhuma coluna se lê sozinha: o que uma dimensão quer dizer está espalhado por muitas. A linha é a mesma sejam quais forem os vizinhos e é essa a limitação que a atenção resolve: no exemplo de "banco" o embedding dá aos dois sentidos o mesmo vetor e a atenção devolve um vetor por token, agora com contexto.

Dentro do Transformer o latente mantém uma forma só (\(n \times d\)) do primeiro ao último bloco e cada bloco apenas soma uma correção a ele — o residual stream. No fim, o unembedding o lê com uma direção por token: a coluna \(j\) é uma direção do espaço de \(d\) dimensões que favorece o token \(j\). Amarrar essa matriz à tabela de embeddings funciona porque as duas falam do mesmo espaço. E o capítulo de LLMs explica por que o espaço tem estrutura: comprimir texto nessa escala obriga a modelar o que o produziu.

Espaços compartilhados: o CLIP

O CLIP põe imagens e frases num único espaço vetorial (512 números na esfera unitária) e esse espaço compartilhado é todo o compromisso da arquitetura. A classificação zero-shot vira um classificador linear cujos pesos foram digitados em vez de aprendidos. O espaço é menos compartilhado do que parece — o gap entre modalidades: o cosseno imagem–imagem é 0.755, prompt–prompt 0.671 e imagem–o próprio prompt só 0.258; um classificador linear separa imagens de legendas em 100% dos casos.

A mesma ideia mede geradores. O FID compara duas gaussianas ajustadas no espaço de features de 2048 dimensões do Inception; BERTScore e MAUVE comparam textos num espaço de embeddings; o CLIPScore compara uma imagem com o prompt no espaço do CLIP — e herda os pontos cegos dele: "um cubo vermelho sobre uma esfera azul" e "um cubo azul sobre uma esfera vermelha" viram quase o mesmo embedding.

Latentes generativos

  • Um código com buracos. O latente de um autoencoder é cheio de buracos que não se veem; o VAE os preenche com uma gaussiana por entrada e puxa todas para \(\mathcal N(0, I)\). A sobreposição dessas gaussianas é o que preenche o espaço entre os exemplos de treino. Com β → 0, cerca de 90% das amostras do prior decodificam em nada (o β é a história inteira).
  • Um latente com pontes. Uma GAN leva um espaço latente conexo num conjunto conexo, então precisa esticar pontes finas entre modos separados: com um latente de uma dimensão o gerador cobriu 2 de 8 modos e 57% das amostras caíram fora dos dados. O espaço \(\mathcal W\) do StyleGAN é o único lugar do curso em que direções querem dizer atributos — idade, pose, expressão — e editar vira aritmética de vetores (a linhagem).
  • Um latente que é uma imagem pequena. A difusão latente roda na grade 4 × 64 × 64 de um VAE: 786.432 números viram 16.384, 48× menos (\(8 \times 8\) por lado, vezes 3/4 pelos canais). O autoencoder cuida do detalhe perceptual; o modelo de difusão cuida da semântica e da composição. Os 4 canais viraram 16 no SD3 e no FLUX (para que serve um VAE). O guidance mostra quanto custa sair da variedade dos dados no latente: 1% das amostras fora dela com \(w = 3\), 17% com \(w = 10\), 63% com \(w = 15\).
  • Um latente cortado em tokens. O DiT faz o patchify da grade: 4 × 32 × 32 com \(p = 2\) dá 256 tokens; os 16 × 128 × 128 do SD3 dão 4.096. O vídeo acrescenta o tempo: um VAE 3-D comprime 4× no tempo e 8 × 8 no espaço. O flow matching move partículas nesse mesmo latente.
  • Um latente de inteiros. A geração autorregressiva prende a grade a um codebook: 256 tokens de 14 bits são 3.584 bits, cerca de 450 bytes, para uma imagem de 196.608 números. A falha é um codebook quase sem uso — o VQGAN original usava 3.4% de 16.384 códigos (treinar um quantizador) — e o MAR dispensa o quantizador porque tudo o que fica entre as entradas do codebook é irrepresentável.

VAE, JEPA, modelos de mundo e TDWM de perto

Quatro capítulos só tratam do latente: o que ele deve guardar e o que o impede de não guardar nada? O VAE responde com pixels e um prior gaussiano. O JEPA responde com embeddings e uma defesa contra o colapso. Os modelos de mundo acrescentam a ação e usam o latente para planejar. O TDWM deixa o tempo decidir quais quadros devem se parecer. Três descendem uns dos outros e o VAE está na raiz de duas das ligações.

As ligações numeradas de 1 a 7 do mapa acima são as que esta seção destrincha.

Um esqueleto, quatro objetivos

Todo modelo do mapa tem um encoder, um latente e alguma coisa treinada em cima dele. O que muda é o que a perda compara e o que impede o latente de colapsar numa constante:

VAE JEPA (I-JEPA) Modelo de mundo TDWM
Encoder \(x \mapsto q_\phi(z \mid x)\), uma gaussiana contexto \(\mapsto s_x\); uma cópia EMA codifica o alvo, \(s_y\) \(o_t \mapsto z_t\) \(o_t \mapsto z_t\), um vetor unitário
Preditor nenhum: um decoder leva \(z\) de volta a \(x\) \(s_x\) e as posições do alvo \(\mapsto \hat s_y\) \((z_t, a_t) \mapsto \hat z_{t+1}\) \((z_{t-2:t}, a_{t:t+k-1}, k) \mapsto \hat z_{t+k}\)
A perda compara pixels embeddings pixels e recompensas (RSSM) ou embeddings (preditivos latentes) cossenos com cada quadro do clipe
Contra um latente constante a reconstrução EMA e stop-gradient, ou VICReg / SIGReg a reconstrução (RSSM); um encoder congelado ou SIGReg (DINO-WM, LeWM) a própria perda
O que molda o latente KL até \(\mathcal N(0, I)\), por entrada SIGReg: o lote em direção a \(\mathcal N(0, I)\) (LeJEPA) KL até um prior aprendido (RSSM) norma unitária e tempo
Serve para compressão, amostragem features congeladas planejamento, imaginação planejamento

Dois colapsos com um nome só

As duas famílias têm uma falha chamada colapso e nas duas ela quer dizer que o código deixa de depender da entrada. Não é a mesma falha:

VAE: colapso do posterior JEPA: colapso da representação
O que acontece \(q(z \mid x) = \mathcal N(0, I)\) para todo \(x\) \(s_x = c\) para todo \(x\)
Quanto custa a reconstrução cai para a média do dataset: a perda fica alta a previsão fica exata: a perda é zero
Por que acontece o β é grande ou o decoder não precisa do código nada na perda de previsão proíbe
A correção annealing da KL, free bits, um decoder mais fraco um alvo EMA, VICReg, SIGReg — ou, no TDWM, uma perda que pede que quadros distantes difiram

A assimetria é toda a diferença entre prever pixels e prever embeddings. Pixels não colapsam, então o VAE só colapsa quando o objetivo diz que o código não vale o preço. Um alvo de embedding anda junto com o encoder, então uma constante é o mínimo global da perda de previsão pura e todo JEPA precisa excluí-la explicitamente. O capítulo do JEPA mostra isso no CIFAR-10: sem o stop-gradient a dispersão dos embeddings cai de 0.803 para 0.009 (como saber se uma representação colapsou).

A gaussiana, duas vezes: a KL do VAE e o SIGReg

O VAE e o LeJEPA empurram um latente para \(\mathcal N(0, I)\), por motivos diferentes e com uma conta diferente. Tire a média da KL do VAE sobre os dados e separe em duas partes, com \(q(z) = \mathbb E_x\, q(z \mid x)\) o posterior agregado (a nuvem de todos os códigos juntos)1:

\[ \mathbb E_x\Big[\text{KL}\big(q(z \mid x)\,\|\,p(z)\big)\Big] = \underbrace{I_q(x; z)}_{\text{informação no código}} \;+\; \underbrace{\text{KL}\big(q(z)\,\|\,p(z)\big)}_{\text{forma da nuvem inteira}} \]

Sai em uma linha: dentro da esperança, \(\log q(z \mid x) - \log p(z) = \big[\log q(z \mid x) - \log q(z)\big] + \big[\log q(z) - \log p(z)\big]\) e a média dos dois colchetes dá os dois termos.

O VAE paga pelos dois. O SIGReg olha só para o lote de embeddings, projetado em direções aleatórias, então confere só o segundo termo: a informação sai de graça. O exemplo resolvido do capítulo do VAE (\(p(z) = \mathcal N(0, 1)\), \(p(x \mid z) = \mathcal N(2z, 1)\)) mostra a separação exata. Com o chute ótimo para cada β, \(q^*(z \mid x) = \mathcal N\big(\tfrac{2x}{4+\beta}, \tfrac{\beta}{4+\beta}\big)\), e \(x \sim \mathcal N(0, 5)\):

β KL média, o que o VAE paga \(I(x; z)\) \(\text{KL}(q(z) \,\|\, p(z))\), o que o SIGReg vê
0.1 1.964 1.954 0.010
1 0.805 0.805 0.000
4 0.253 0.243 0.010
16 0.037 0.030 0.006

Com β = 1 o encoder é a posterior verdadeira, os códigos juntos são exatamente \(\mathcal N(0, 1)\) e os 0.805 nats inteiros são informação sobre \(x\) (\(\tfrac12 \log 5\), como no passo 4 do lab do VAE). O SIGReg não cobraria nada por esse código. Por isso um β-VAE troca informação por um latente regular enquanto um JEPA com SIGReg não troca — e por isso o TDWM procura a informação que o LeWM perde no termo de previsão, não no SIGReg.

A perda principal decide o que o latente guarda

A ligação tracejada do mapa é a mesma lição aprendida duas vezes. Um regularizador molda o latente; a perda principal decide o que entra nele.

  • VAE. Na seção 6 do lab do VAE o decoder recebe uma dica, a própria imagem reduzida por average pooling, ao lado de \(z\). Com β = 1 a KL cai de 15.83 nats (sem dica) para 1.82 (7 × 7) e 0.02 (28 × 28): um decoder que faz o trabalho sozinho torna o código inútil e o prior vira o ótimo.
  • LeWM. O MSE do próximo embedding é menor quando o futuro é fácil de prever e o jeito mais seguro de deixá-lo fácil é parar de representar o que é difícil de antecipar. No OGBench Scene uma sonda linear recupera a gaveta a partir dos embeddings do LeWM com \(R^2 = 0.95\), mas o cubo com 0.27 e o braço com 0.392. O SIGReg não tem como objetar: uma nuvem gaussiana pode ser feita só com a gaveta. A sonda do próprio TDWM chega a 0.56 no cubo e a 0.69 no braço.

Nos dois casos a correção está no objetivo, não no regularizador: free bits ou um decoder mais fraco no VAE; no TDWM, uma perda em que cada quadro do clipe precisa ser distinguido dos outros.

A geometria é o que o planejador usa

Um modelo de mundo planeja por distâncias no seu latente, então a geometria do latente é o mapa do planejador. No capítulo de modelos de mundo a distância no latente tem correlação de postos de 0.93 com a distância em linha reta e só 0.41 com o comprimento do caminho que o agente precisa percorrer de fato; o CEM resolve 1 tarefa em 10 com o primeiro custo e 10 em 10 com o segundo. A resposta do TDWM é tornar a geometria temporal: quadros a poucos passos ficam perto, quadros distantes ficam quase ortogonais (por que a geometria importa).

Quatro ideias que voltam em todo capítulo

  1. A perda decide o que o latente guarda. A reconstrução guarda cada detalhe e o VAE borra o que não consegue; uma perda contrastiva guarda o que distingue os pares e o CLIP lê legendas como um saco de palavras; prever o próximo embedding guarda o que é previsível e o LeWM esquece o cubo.
  2. Uma sonda linear é o teste. Transfer learning, ViT, CLIP, JEPA e TDWM julgam um latente pelo que um hiperplano consegue ler nele.
  3. A geometria é uma escolha de projeto. Uma gaussiana (VAE, SIGReg), uma esfera (CLIP, TDWM), uma grade com canais (difusão latente, DiT), um codebook (VQ). A escolha decide quais distâncias querem dizer alguma coisa.
  4. Fora da variedade, nada foi treinado. Os buracos do autoencoder, as pontes da GAN, o guidance forçado demais e uma política que explora o próprio modelo de mundo são a mesma falha: um ponto que o decoder ou o preditor nunca viu.

Ordem de leitura dos quatro

  1. VAE — o ELBO, um latente gaussiano e o colapso do posterior.
  2. JEPA — prever o embedding, não os pixels; o colapso e as quatro saídas, o SIGReg entre elas.
  3. Modelos de mundo — o V–M–C sobre um VAE, o ELBO ao longo do tempo do RSSM, a família preditiva latente e o planejamento com CEM.
  4. TDWM — um modelo de mundo JEPA em que o tempo, não um regularizador, mantém o latente vivo.

  1. Hoffman, M. D., & Johnson, M. J. (2016). ELBO surgery: yet another way to carve up the variational evidence lower bound — NIPS Workshop on Advances in Approximate Bayesian Inference. A separação da KL em informação mútua e a KL do posterior agregado. ↩

  2. Peng, W., & Molin, H. (2026). Temporal Discriminative World Models — página do projeto, Stanford University. As sondas citadas aqui; veja o capítulo do TDWM. ↩