Aula 7: Autoencoders Profundos e o Autoencoder Variacional
Aprendizado Não Supervisionado
1 Revisão e Introdução
1.1 Revisão Cuidadosa: O Que as Aulas 5 e 6 Deixaram Prontos
Esta aula se apoia em três resultados. Vale relembrar não só o que cada um diz, mas por que vale, porque é exatamente o mecanismo de cada um que deixa de funcionar hoje.
1. Autoencoder linear \(\equiv\) PCA (Aula 6). Um autoencoder é uma rede \(D\)-\(M\)-\(D\) treinada para reproduzir a própria entrada, minimizando \(E(\mathbf{w})=\tfrac12\sum_n\|\mathbf{y}(\mathbf{x}_n,\mathbf{w})-\mathbf{x}_n\|^2\). Com ativações lineares, a rede inteira calcula \(\mathbf{x}\mapsto\mathbf{A}\mathbf{x}\), com \(\mathbf{A}=\mathbf{W}\mathbf{V}\) de posto no máximo \(M\). Assim, toda reconstrução mora num subespaço de dimensão \(\le M\), e o melhor subespaço possível, no sentido do erro quadrático, é o subespaço principal (Mecanismos I e II da Aula 6). Os pesos podem ser qualquer base desse subespaço (a invariância por \(\mathbf{G}\)). Na mesma aula ficou registrada uma ressalva do DLFC (§19.1.1, p. 565, tradução livre): “mesmo com unidades ocultas não lineares, a solução de erro mínimo é novamente dada pela projeção sobre o subespaço dos componentes principais (Bourlard e Kamp, 1988)”. Trocar a ativação, sozinho, não resolve. Hoje veremos onde a não linearidade precisa estar.
2. PPCA: um modelo gerador com posterior fechada (Aula 6). A PPCA conta uma história de como cada ponto nasce: sorteia-se \(\mathbf{z}\sim\mathcal{N}(\mathbf{0},\mathbf{I})\) em \(\mathbb{R}^M\) e faz-se \(\mathbf{x}=\mathbf{W}\mathbf{z}+\boldsymbol\mu+\boldsymbol\epsilon\), com \(\boldsymbol\epsilon\sim\mathcal{N}(\mathbf{0},\sigma^2\mathbf{I})\). Como tudo é linear e Gaussiano, tudo também tem forma fechada. A marginal é \(p(\mathbf{x})=\mathcal{N}(\boldsymbol\mu,\mathbf{C})\), com \(\mathbf{C}=\mathbf{W}\mathbf{W}^T+\sigma^2\mathbf{I}\). A posterior, pelo resultado para modelos linear-Gaussianos (PRML §12.2, eq. 12.42, p. 573), é
\[ p(\mathbf{z}\mid\mathbf{x})=\mathcal{N}\!\left(\mathbf{z}\;\middle|\;\mathbf{B}^{-1}\mathbf{W}^T(\mathbf{x}-\boldsymbol\mu),\;\sigma^2\mathbf{B}^{-1}\right), \qquad \mathbf{B}=\mathbf{W}^T\mathbf{W}+\sigma^2\mathbf{I}_M . \]
(O PRML chama \(\mathbf{B}\) de \(\mathbf{M}\). Trocamos a letra porque \(M\) é a dimensão latente.) O PRML observa, na mesma página (tradução livre): “a média da posterior depende de \(\mathbf{x}\), enquanto a covariância da posterior não depende”. Em outras palavras, a PPCA já tem um “encoder” exato: uma função linear de \(\mathbf{x}\), que sai do próprio modelo por Bayes, sem treino adicional.
3. A decomposição do ELBO (Aula 5). Para qualquer distribuição normalizada \(q(\mathbf{H})\) sobre as variáveis não observadas,
\[ \ln p(\mathbf{X})=\mathcal{L}(q)+\mathrm{KL}\big(q\,\|\,p(\mathbf{H}\mid\mathbf{X})\big), \qquad \mathcal{L}(q)=\int q(\mathbf{H})\ln\frac{p(\mathbf{X},\mathbf{H})}{q(\mathbf{H})}\,\mathrm{d}\mathbf{H}. \]
A identidade vem de escrever \(\ln p(\mathbf{X})=\ln p(\mathbf{X},\mathbf{H})-\ln p(\mathbf{H}\mid\mathbf{X})\), somar e subtrair \(\ln q(\mathbf{H})\) e integrar contra \(q\). Como \(\mathrm{KL}\ge0\), o ELBO é cota inferior de \(\ln p(\mathbf{X})\), com igualdade se e só se \(q\) é a posterior exata. O EM (Aula 4) é a alternância que se apoia nisso. O passo E faz \(q\) igual à posterior, e a folga zera. O passo M maximiza \(\mathcal{L}\) nos parâmetros. No GMM, o passo E são as responsabilidades. Na PPCA, é a Gaussiana acima. Nos dois casos, o passo E foi possível porque a posterior tinha forma fechada.
1.2 Ideia Central
A aula inteira é uma única troca: substituir a transformação linear \(\mathbf{W}\mathbf{z}+\boldsymbol\mu\) por uma rede neural \(\mathbf{g}(\mathbf{z},\mathbf{w})\). Essa troca tem duas consequências, uma desejada e outra que precisaremos contornar.
- A desejada: o conjunto de reconstruções possíveis deixa de ser um plano e pode curvar-se para acompanhar dados que vivem numa variedade curva. É o deep autoencoder, uma PCA não linear.
- A que precisa ser contornada: com \(\mathbf{g}\) não linear, a marginal \(p(\mathbf{x})\) e a posterior \(p(\mathbf{z}\mid\mathbf{x})\) perdem a forma fechada, e o passo E exato do EM deixa de existir. O ELBO da Aula 5 deixa de ser uma ferramenta de análise e passa a ser o próprio objetivo de treino, com \(q\) dada por uma segunda rede. É o Variational Autoencoder (VAE).
1.3 Roteiro da Aula
- Onde a não linearidade precisa estar para que a reconstrução se curve, e quando essa flexibilidade compensa? Veremos que o AE raso não sai do plano por um motivo geométrico simples, e que o deep AE ganha no MNIST mas sobreajusta no Breast Cancer.
- Por que um bom compressor não é um bom gerador? O espaço latente do AE não tem escala, forma nem densidade definidas, e o decoder não é controlado fora dos códigos de treino.
- Como o VAE estende a PPCA quando a posterior deixa de ter forma fechada? Mesmo modelo gerador com \(\mathbf{g}\) não linear, encoder como posterior aproximada (inferência amortizada) e ELBO como objetivo, decomposto em reconstrução menos KL.
- Como se calcula o gradiente de uma esperança sob uma distribuição que depende dos próprios parâmetros? Pelo reparameterization trick, comparado ao estimador score function, com a variância medida.
1.4 Problema Motivador
Cada imagem do MNIST tem \(28\times28=784\) pixels. Queremos guardar dois números por imagem e, a partir deles, reconstruir os \(784\) pixels. A figura compara, em \(10\) imagens de teste (uma por dígito), a reconstrução da PCA com \(M=2\) e a de um autoencoder profundo com o mesmo gargalo \(M=2\), treinado em 20.000 imagens.
O erro quadrático médio por pixel, nas 2.000 imagens de teste, é 0,0554 para a PCA e 0,0376 para o autoencoder profundo. Com dois números, a PCA produz borrões em que só se distinguem “algo vertical” e “algo redondo”. O autoencoder já reconstrói dígitos reconhecíveis na maioria dos casos. Os dois guardam a mesma quantidade de informação, e a diferença está na forma da superfície sobre a qual as reconstruções podem cair.
Agora uma segunda pergunta, que não é sobre comprimir: se sortearmos dois números quaisquer e os passarmos pelo decoder, sai um dígito? Responder essa pergunta ocupa a segunda metade da aula.
1.5 Pausa — O Que Restringe a Reconstrução
Pense no conjunto \(\{\mathbf{B}\mathbf{z}+\mathbf{c}:\mathbf{z}\in\mathbb{R}^M\}\) e no que o encoder pode e não pode mudar nele.
- □ No MNIST com \(M=2\), a PCA reconstrói pior que o autoencoder profundo porque a PCA não minimiza o erro quadrático de reconstrução.
- □ Um autoencoder com várias camadas ocultas, todas com ativação linear, tem erro mínimo de treino igual ao da PCA com o mesmo \(M\), qualquer que seja o número de camadas.
- □ Um erro de reconstrução de treino menor garante que o código de \(M\) números resume melhor também imagens que a rede nunca viu.
- □ Na PPCA, a incerteza sobre \(\mathbf{z}\) depois de observar \(\mathbf{x}\) (a covariância da posterior) é a mesma para todos os pontos.
2 Intuição — Curvar a Variedade
2.1 A Hipótese da Variedade
A razão para esperar que poucos números bastem é a hipótese da variedade: dados reais de alta dimensão não preenchem o espaço \(\mathbb{R}^D\), mas se concentram perto de uma variedade (manifold) de dimensão bem menor. O DLFC (Cap. 16, p. 496) dá um exemplo concreto. Tome um único dígito manuscrito e gere muitas imagens transladando-o e girando-o dentro de um quadro maior. Cada imagem tem milhares de pixels, mas o conjunto inteiro tem só três graus de liberdade (dois de translação e um de rotação). E essa variedade é curva (tradução livre): “a variedade será não linear porque, por exemplo, se transladarmos o dígito passando por um pixel específico, o valor desse pixel vai de zero (branco) a um (preto) e de volta a zero, o que é claramente uma função não linear da posição do dígito”.
A PCA só sabe representar variedades planas. Se a variedade dos dados curva, um plano de dimensão \(M\) ou não acompanha a curvatura (erro alto) ou precisa de muitas dimensões para cobri-la.
2.2 Um Arco em Duas Dimensões
O ponto geométrico fica nítido no menor caso possível. São \(400\) pontos sobre um arco de circunferência em \(\mathbb{R}^2\), com um pouco de ruído. A variedade tem dimensão \(1\) (a posição ao longo do arco), então guardamos um número por ponto (\(M=1\)). A figura mostra, para três modelos, o conjunto de todas as reconstruções possíveis (a imagem do decoder) como uma linha laranja.
- PCA: reta pelo centro dos dados. Erro médio 0,0957.
- AE raso \(2\)-\(1\)-\(2\) com ativação \(\tanh\) no gargalo e saída linear: erro 0,0960. É o mesmo da PCA, e a imagem do decoder é um segmento de reta. É a ressalva do DLFC, agora visível.
- AE profundo (\(2\)-\(32\)-\(32\)-\(1\)-\(32\)-\(32\)-\(2\), \(\tanh\)): erro 0,0016. A imagem do decoder é uma curva que acompanha o arco.
A diferença entre o segundo e o terceiro modelo não está em “ter ou não ter não linearidade”, porque os dois têm. Está em onde ela está: no AE raso, entre o código e a saída só há uma camada afim; no profundo, há camadas não lineares entre \(\mathbf{z}\) e \(\hat{\mathbf{x}}\).
2.3 A Arquitetura: Duas Funções em Sequência
O DLFC (§19.1.2, p. 565, Figs. 19.2 e 19.3) descreve o autoencoder profundo como duas funções em sequência. A primeira, \(F_1\) (o encoder), leva \(\mathbf{x}\in\mathbb{R}^D\) ao código \(\mathbf{z}\in\mathbb{R}^M\). A segunda, \(F_2\) (o decoder), leva o código de volta a \(\mathbb{R}^D\). Como \(F_2\) pode ser não linear, a imagem de \(F_2\) é uma superfície \(M\)-dimensional curva mergulhada em \(\mathbb{R}^D\), a variedade aprendida. O encoder \(F_1\) faz o papel de projeção: diz em que ponto dessa superfície cada dado deve ser representado. No arco, \(F_2\) é a curva laranja e \(F_1\) escolhe o ponto da curva.
3 Bloco 1: O Deep Autoencoder
3.1 Definição
Em relação à Aula 6, só a parametrização mudou. O critério é o mesmo erro de reconstrução. Separamos os parâmetros em \(\boldsymbol\phi\) (encoder) e \(\mathbf{w}\) (decoder), como no DLFC, porque no VAE os dois terão papéis diferentes.
3.2 Por Que a Profundidade Precisa Estar no Decoder
A ressalva do DLFC (p. 565) diz que unidades ocultas não lineares na arquitetura rasa não tiram a solução do subespaço da PCA. O argumento abaixo mostra o mecanismo por trás disso. Ele é nosso, elementar, e dá a cota inferior. A prova original de Bourlard e Kamp (1988), citada pelo DLFC, trata do mínimo global.
Demonstração. (i) Para todo \(n\), \(\hat{\mathbf{x}}_n=\mathbf{B}\,\mathbf{f}(\mathbf{x}_n)+\mathbf{c}\). Como \(\mathbf{f}(\mathbf{x}_n)\in\mathbb{R}^M\), o vetor \(\mathbf{B}\,\mathbf{f}(\mathbf{x}_n)\) é combinação linear das colunas de \(\mathbf{B}\), logo pertence a \(\mathcal{C}(\mathbf{B})\), e \(\hat{\mathbf{x}}_n\in\mathbf{c}+\mathcal{C}(\mathbf{B})=\mathcal{S}\). A dimensão de \(\mathcal{C}(\mathbf{B})\) é o posto de \(\mathbf{B}\), que é \(\le M\) porque \(\mathbf{B}\) tem \(M\) colunas. (ii) Seja \(P_{\mathcal{S}}\) a projeção ortogonal sobre \(\mathcal{S}\). Como \(\hat{\mathbf{x}}_n\in\mathcal{S}\) e \(P_{\mathcal{S}}(\mathbf{x}_n)\) é o ponto de \(\mathcal{S}\) mais próximo de \(\mathbf{x}_n\), \(\|\mathbf{x}_n-\hat{\mathbf{x}}_n\|^2\ge\|\mathbf{x}_n-P_{\mathcal{S}}(\mathbf{x}_n)\|^2\). Somando em \(n\),
\[ E\;\ge\;\tfrac12\sum_n\|\mathbf{x}_n-P_{\mathcal{S}}(\mathbf{x}_n)\|^2 \;\ge\;\min_{\mathcal{S}'\,:\,\dim\mathcal{S}'\le M}\;\tfrac12\sum_n\|\mathbf{x}_n-P_{\mathcal{S}'}(\mathbf{x}_n)\|^2 , \]
e o mínimo à direita, sobre subespaços afins de dimensão \(\le M\), é atingido pelo subespaço principal passando pela média. É o Teorema de erro mínimo da Aula 6 (PRML §12.1.2), cuja forma \(\tilde{\mathbf{x}}_n=\sum_{i\le M}z_{ni}\mathbf{u}_i+\sum_{i>M}b_i\mathbf{u}_i\) já admite o deslocamento constante \(b_i\) nas direções descartadas, ou seja, trata subespaços afins. \(\blacksquare\)
A rede rasa \(D\)-\(M\)-\(D\) com unidades ocultas não lineares e saída linear é exatamente esse caso: o “código” é a ativação \(\mathbf{h}=\sigma(\mathbf{V}\mathbf{x}+\mathbf{a})\) e o decoder é \(\mathbf{W}\mathbf{h}+\mathbf{c}\), afim em \(\mathbf{h}\). A não linearidade do encoder só decide em que ponto do plano cada dado cai; quem desenha o plano é o decoder. Uma ativação de saída aplicada coordenada a coordenada (como a sigmoide que usamos no MNIST, para manter os pixels em \([0,1]\)) só deforma cada eixo por uma função fixa. A flexibilidade para curvar a variedade vem das camadas ocultas do decoder.
3.3 O Que Se Ganha e o Que Se Perde
O DLFC (§19.1.2, p. 566, tradução livre) resume: a rede “realiza uma forma não linear de PCA. Tem a vantagem de não se limitar a transformações lineares, embora contenha a PCA padrão como caso particular. Porém, o treino passa a envolver otimização não linear, pois a função de erro (19.1) deixa de ser quadrática nos parâmetros […] e há o risco de encontrar um mínimo local subótimo. Além disso, a dimensionalidade do subespaço precisa ser especificada antes do treino”. Em contraste, a PCA sai de uma decomposição espectral exata e entrega todos os \(M\) de uma vez, ordenados por variância.
Há uma terceira limitação que o trecho não menciona e que o dataset-fio mostra: sobreajuste. A figura compara, no Breast Cancer Wisconsin (30 atributos padronizados, \(M=2\)), PCA, AE raso e AE profundo (\(30\)-\(64\)-\(32\)-\(2\)-\(32\)-\(64\)-\(30\), 8.288 parâmetros), ajustados em 455 pacientes e avaliados em 114 pacientes separados.
- O AE raso empata com a PCA no treino (0,366 contra 0,363) e no teste (0,310 contra 0,307), como prevê a Proposição.
- O AE profundo reduz o erro de treino a 0,112, menos de um terço do da PCA, mas o erro de teste sobe para 0,425, pior que a PCA. A rede usou sua flexibilidade para memorizar os pacientes de treino. É o double-dipping da Aula 5: o erro medido nos pontos de ajuste é otimista.
- Como resumo para o diagnóstico (que nunca entrou no ajuste), uma regressão logística sobre os dois números atinge acurácia de teste de 91,2% com a PCA e 93,9% com o AE profundo. A diferença corresponde a 3 pacientes em 114, pouco para concluir algo com um conjunto de teste desse tamanho; o critério que o modelo de fato otimiza, o erro de reconstrução, piorou.
A conclusão não é que o AE profundo é “pior”. Com \(455\) pacientes e estrutura quase linear (lembre que o primeiro componente explicou \(44{,}27\%\) da variância na Aula 6), não há curvatura que a amostra sustente. No MNIST, com \(20\,000\) imagens e uma variedade sabidamente curva, a flexibilidade compensa. A capacidade do modelo precisa ser proporcional à quantidade de dados e à curvatura real.
3.4 Outras Formas de Impedir a Cópia
O gargalo \(M<D\) é uma forma de impedir que a rede aprenda a identidade. O DLFC (§19.1.3–19.1.4, pp. 566–567) descreve outras duas:
- Autoencoder esparso: gargalo largo, mas com penalidade \(L_1\) sobre as ativações de uma camada oculta, \(\widetilde{E}(\mathbf{w})=E(\mathbf{w})+\lambda\sum_k|z_k|\) (19.2). A regularização incide sobre ativações, não sobre pesos, e faz cada ponto usar poucas unidades.
- Autoencoder com remoção de ruído (denoising): a entrada é uma versão corrompida \(\tilde{\mathbf{x}}_n\) (ruído Gaussiano ou pixels zerados), e o alvo é o \(\mathbf{x}_n\) limpo, \(E(\mathbf{w})=\sum_n\|\mathbf{y}(\tilde{\mathbf{x}}_n,\mathbf{w})-\mathbf{x}_n\|^2\) (19.3). Como entrada e alvo diferem, copiar não zera o erro. A rede precisa aprender para onde fica a variedade dos dados limpos.
3.5 Pausa — Quando a Flexibilidade Compensa
Separe o que aumenta a capacidade do modelo do que aumenta a informação disponível para ajustá-lo.
- □ Acrescentar camadas ocultas não lineares apenas ao encoder, mantendo o decoder afim de \(\mathbf{z}\) até \(\hat{\mathbf{x}}\), permite reconstruções sobre uma superfície curva.
- □ Com \(M=D\) e redes suficientemente expressivas, o erro de treino mínimo de um autoencoder profundo é zero, sem que a rede aprenda estrutura alguma dos dados.
- □ Como o autoencoder profundo minimiza a mesma soma de quadrados da PCA, o gradiente descendente encontra o mínimo global, assim como a decomposição espectral.
- □ Um autoencoder denoising pode ter camada oculta mais larga que a entrada sem convergir para a identidade, porque a entrada corrompida é diferente do alvo.
4 Bloco 2: O Gap Generativo
4.1 O Espaço Latente do Autoencoder
No MNIST a compressão funciona. A pergunta seguinte é se o decoder pode gerar dígitos novos. A figura mostra, à esquerda, os códigos 2D das \(20\,000\) imagens de treino, coloridos pelo dígito (o rótulo não entrou no treino). Três coisas chamam a atenção.
- Escala e posição arbitrárias. Os códigos ocupam aproximadamente \([-6{,}4;\,12{,}6]\times[-13{,}0;\,12{,}3]\) (percentis 1 e 99). Nada no objetivo fixa a escala, o centro ou a forma dessa nuvem.
- Ilhas e buracos. Os dígitos formam braços e aglomerados com regiões vazias entre eles.
- Densidade desconhecida. Para gerar, é preciso sortear \(\mathbf{z}\) de alguma distribuição, e o AE não fornece nenhuma.
A tentativa ingênua é ajustar uma única Gaussiana a todos os códigos (média e covariância da nuvem inteira, sem usar os rótulos) e sortear dela. O centro da figura mostra \(16\) dessas amostras decodificadas. A maioria parece um dígito, porque a Gaussiana concentra as amostras onde os códigos são densos. Algumas saem borradas ou ambíguas, e o problema está nas amostras que caem fora das regiões cobertas. Para medir, contamos quantas amostras caem longe de qualquer código de treino, a mais de dez vezes a distância típica entre vizinhos: 3,5% das amostras da Gaussiana ajustada ao AE, contra 0,65% das amostras da priori do VAE que treinaremos adiante. Nessas regiões o decoder nunca recebeu sinal de treino. A interpolação linear entre o código de um “1” e o de um “7” (embaixo) atravessa a região de outro dígito: no meio do caminho aparece algo parecido com um “9”. A reta entre dois códigos não precisa passar por regiões que representem uma transição entre eles.
4.2 O Diagnóstico
O motivo está no próprio objetivo. \(E(\boldsymbol\phi,\mathbf{w})\) só avalia o decoder nos pontos \(\mathbf{f}(\mathbf{x}_n,\boldsymbol\phi)\), os códigos de treino. Fora deles, nenhum termo da perda diz o que \(\mathbf{g}\) deve produzir. Além disso, o objetivo é invariante por reparametrização do espaço latente. Se \(\mathbf{h}:\mathbb{R}^M\to\mathbb{R}^M\) é invertível e as redes conseguem representar \(\mathbf{h}\circ\mathbf{f}\) e \(\mathbf{g}\circ\mathbf{h}^{-1}\), então
\[ \mathbf{g}\circ\mathbf{h}^{-1}\big(\mathbf{h}\circ\mathbf{f}(\mathbf{x})\big)=\mathbf{g}(\mathbf{f}(\mathbf{x})) \quad\text{para todo }\mathbf{x}, \]
e as duas soluções têm exatamente o mesmo erro. É a versão não linear da invariância por \(\mathbf{G}\) da Aula 6. Lá, os dados fixavam o plano mas não os eixos. Aqui, os dados fixam a superfície \(\mathbf{g}(\cdot)\) mas não a coordenatização do espaço latente. Escala, forma e densidade dos códigos são acidentes do treino.
O DLFC (§19.1, p. 564, tradução livre) resume: “autoencoders simples raramente são usados diretamente em deep learning moderno, pois não fornecem representações semanticamente significativas no espaço latente e não são capazes de gerar diretamente novos exemplos da distribuição dos dados”.
Falta ao AE o que a PPCA tinha: uma distribuição \(p(\mathbf{z})\) fixada de antemão e uma \(p(\mathbf{x}\mid\mathbf{z})\), isto é, um modelo gerador. O bloco seguinte constrói esse modelo.
4.3 Pausa — Corrigir o Espaço Latente Depois
Pense no que essa distribuição ajustada consegue corrigir e no que fica igual: o decoder foi treinado olhando para quais pontos de \(\mathbf{z}\)?
- □ Padronizar cada coordenada dos códigos do AE (média zero, variância um) faz com que eles passem a seguir uma \(\mathcal{N}(\mathbf{0},\mathbf{I})\).
- □ Se um autoencoder reconstrói bem todas as imagens de treino, então o decoder produz imagens plausíveis para qualquer \(\mathbf{z}\) dentro da caixa que contém os códigos de treino.
- □ Um GMM ajustado aos códigos 2D de um AE, seguido do decoder, define um modelo cuja verossimilhança \(p(\mathbf{x})\) dos dados pode ser calculada em forma fechada.
- □ No autoencoder linear da Aula 6, a invariância por uma matriz invertível \(\mathbf{G}\) é um caso particular da invariância do objetivo do AE por qualquer reparametrização invertível do espaço latente.
5 Bloco 3: O VAE como PPCA Não Linear
5.1 O Modelo Gerador
Voltamos ao modelo que a PPCA já tinha e trocamos uma única peça.
Com \(\mathbf{g}(\mathbf{z},\mathbf{w})=\mathbf{W}\mathbf{z}+\boldsymbol\mu\), o modelo é a PPCA. O VAE é, portanto, a PPCA com a reta trocada por uma rede. O ruído \(\sigma^2\) não é detalhe. O DLFC (§16.4.1, p. 523, tradução livre) explica que, sem ele, o modelo “atribui densidade zero a todo vetor de dados que não esteja exatamente sobre a variedade”. A verossimilhança seria zero em quase todo ponto real, e o gradiente não teria por onde guiar o treino.
Atenção à notação. \(\sigma^2\), sem índice, é a variância do ruído do decoder, como na PPCA. Mais adiante, o encoder terá desvios-padrão \(\sigma_{nj}\), um por ponto \(n\) e por coordenada latente \(j\). São quantidades diferentes.
5.2 O Que Deixa de Ter Forma Fechada
A verossimilhança marginal de um ponto é
\[ p(\mathbf{x}\mid\mathbf{w})=\int p(\mathbf{x}\mid\mathbf{z},\mathbf{w})\,p(\mathbf{z})\,\mathrm{d}\mathbf{z} \qquad\text{(DLFC 19.4).} \]
Na PPCA, o integrando é Gaussiano em \((\mathbf{x},\mathbf{z})\) conjuntamente (média linear em \(\mathbf{z}\)), e a integral dá \(\mathcal{N}(\boldsymbol\mu,\mathbf{C})\). Com \(\mathbf{g}\) não linear, \(\mathbf{z}\) entra na média por uma rede, e a integral não tem forma fechada. Pelo mesmo motivo, a posterior
\[ p(\mathbf{z}\mid\mathbf{x},\mathbf{w})=\frac{p(\mathbf{x}\mid\mathbf{z},\mathbf{w})\,p(\mathbf{z})}{p(\mathbf{x}\mid\mathbf{w})} \qquad\text{(DLFC 19.12)} \]
também não. O DLFC (§19.2, p. 571, tradução livre) aponta onde: “o numerador é fácil de avaliar para o nosso modelo gerador profundo. Porém, o denominador é dada pela função de verossimilhança, que, como já notamos, é intratável”. Além de não ter fórmula, essa posterior pode ter forma bem diferente de uma Gaussiana. O DLFC (Fig. 19.7) mostra um exemplo em que a priori é unimodal e a posterior de um ponto é bimodal.
5.3 Inferência Amortizada
Sem a posterior exata, o passo E do EM precisa de uma aproximação. A decomposição da Aula 5 vale para qualquer \(q\), então uma opção seria otimizar uma \(q_n(\mathbf{z}_n)\) separada para cada ponto. Isso exige \(N\) otimizações, e todas teriam de ser refeitas a cada atualização de \(\mathbf{w}\). O VAE usa outra estratégia, a inferência amortizada (DLFC §19.2.1, p. 572, tradução livre): “em vez de tentar avaliar uma posterior separada \(p(\mathbf{z}_n\mid\mathbf{x}_n,\mathbf{w})\) para cada ponto individualmente, treinamos uma única rede neural, chamada rede encoder, para aproximar todas essas distribuições”.
O que muda em relação ao AE. O encoder do AE devolvia um ponto, \(\mathbf{z}_n=\mathbf{f}(\mathbf{x}_n,\boldsymbol\phi)\). O encoder do VAE devolve os parâmetros de uma distribuição: para cada coordenada latente, uma média \(\mu_j\) e uma log-variância \(\ln\sigma_j^2\) (painel (a) da figura ao fim desta seção). Cada dado deixa de ser representado por um código e passa a ser representado por uma nuvem de códigos compatíveis com ele, centrada em \(\boldsymbol\mu(\mathbf{x}_n,\boldsymbol\phi)\) e com largura \(\boldsymbol\sigma(\mathbf{x}_n,\boldsymbol\phi)\). Passada pelo decoder, essa nuvem corresponde a uma família de dados parecidos com \(\mathbf{x}_n\), e não a uma única reconstrução. No modelo probabilístico (painel (b)), \(q\) é a seta tracejada de \(\mathbf{x}_n\) para \(\mathbf{z}_n\): a aproximação da posterior, no sentido inverso ao da geração.
O “custo amortizado” é este: treina-se uma rede uma vez, e depois inferir \(\mathbf{z}\) para um ponto novo custa uma passagem pelo encoder, sem otimização.
O DLFC (§19.2, pp. 569–570, tradução livre) resume o VAE em três ideias: “(i) usar o ELBO para aproximar a verossimilhança, o que leva a uma relação próxima com o algoritmo EM, (ii) inferência amortizada, em que um segundo modelo, a rede encoder, aproxima as posteriores das variáveis latentes no passo E, e (iii) tornar tratável o treino do encoder por meio do truque de reparametrização”. A ideia (ii) está acima. A (i) é o Bloco 4, e a (iii) é o Bloco 5.
5.4 PPCA e VAE Lado a Lado
| PPCA (Aula 6) | VAE | |
|---|---|---|
| priori | \(\mathcal{N}(\mathbf{0},\mathbf{I})\) | \(\mathcal{N}(\mathbf{0},\mathbf{I})\) |
| \(p(\mathbf{x}\mid\mathbf{z})\) | \(\mathcal{N}(\mathbf{W}\mathbf{z}+\boldsymbol\mu,\sigma^2\mathbf{I})\) | \(\mathcal{N}(\mathbf{g}(\mathbf{z},\mathbf{w}),\sigma^2\mathbf{I})\) |
| \(p(\mathbf{x})\) | \(\mathcal{N}(\boldsymbol\mu,\mathbf{W}\mathbf{W}^T+\sigma^2\mathbf{I})\) | integral sem forma fechada |
| “encoder” | posterior exata, média \(\mathbf{B}^{-1}\mathbf{W}^T(\mathbf{x}-\boldsymbol\mu)\) | \(q(\mathbf{z}\mid\mathbf{x},\boldsymbol\phi)\), rede treinada |
| incerteza de \(\mathbf{z}\) | \(\sigma^2\mathbf{B}^{-1}\), igual para todo \(\mathbf{x}\) | \(\sigma_j^2(\mathbf{x},\boldsymbol\phi)\), depende de \(\mathbf{x}\) |
| folga do ELBO | zero (passo E exato) | positiva em geral |
| ajuste | forma fechada ou EM | gradiente estocástico no ELBO |
A última linha distingue o VAE do EM. No EM, o passo E zera a folga \(\mathrm{KL}(q\|p(\mathbf{z}\mid\mathbf{x}))\). No VAE, ela não zera. O DLFC (§19.2.1, p. 573, tradução livre) explica: “otimizar os parâmetros \(\boldsymbol\phi\) do encoder não reduz, em geral, a divergência de Kullback-Leibler a zero, porque a rede encoder não é um preditor perfeito da posterior das variáveis latentes”. Ou a posterior verdadeira não é Gaussiana fatorada, ou a rede tem flexibilidade limitada, ou a otimização é aproximada. No Bloco 4 mediremos essa folga.
5.5 Pausa — Um Encoder para Todos
Compare as duas opções em custo para um ponto novo e em quão perto cada uma consegue chegar da posterior de cada ponto.
- □ Se o decoder de um VAE fosse afim, \(\mathbf{g}(\mathbf{z})=\mathbf{W}\mathbf{z}+\boldsymbol\mu\), o modelo gerador seria a PPCA e a posterior exata de \(\mathbf{z}\) seria Gaussiana.
- □ No caso afim acima, um encoder Gaussiano diagonal sempre consegue representar a posterior exata, porque ela é Gaussiana.
- □ Com inferência amortizada, obter a distribuição aproximada de \(\mathbf{z}\) para um ponto novo exige apenas uma passagem pelo encoder, sem otimização.
- □ Como o encoder é uma rede neural flexível, o ELBO maximizado de um VAE coincide com \(\ln p(\mathbf{x}\mid\mathbf{w})\).
6 Bloco 4: O ELBO do VAE
6.1 Da Decomposição da Aula 5 à Perda do VAE
Este é o resultado central da aula. Partimos da identidade da Aula 5 e chegamos, passo a passo, à função que se minimiza no treino. As premissas são as do Bloco 3: priori \(p(\mathbf{z})=\mathcal{N}(\mathbf{0},\mathbf{I})\), decoder Gaussiano com variância \(\sigma^2\) fixa, encoder Gaussiano diagonal, pontos independentes.
Passo 1 — decomposição da Aula 5, com \(\mathbf{H}=\mathbf{z}_n\), \(\mathbf{X}=\mathbf{x}_n\) e \(q=q(\mathbf{z}_n\mid\mathbf{x}_n,\boldsymbol\phi)\):
\[ \ln p(\mathbf{x}_n\mid\mathbf{w})=\mathcal{L}_n(\mathbf{w},\boldsymbol\phi)+\mathrm{KL}\big(q(\mathbf{z}_n\mid\mathbf{x}_n,\boldsymbol\phi)\,\|\,p(\mathbf{z}_n\mid\mathbf{x}_n,\mathbf{w})\big). \]
Passo 2 — definição do ELBO, com \(p(\mathbf{x}_n,\mathbf{z}_n\mid\mathbf{w})=p(\mathbf{x}_n\mid\mathbf{z}_n,\mathbf{w})\,p(\mathbf{z}_n)\):
\[ \mathcal{L}_n(\mathbf{w},\boldsymbol\phi)=\int q(\mathbf{z}_n\mid\mathbf{x}_n,\boldsymbol\phi)\,\ln\frac{p(\mathbf{x}_n\mid\mathbf{z}_n,\mathbf{w})\,p(\mathbf{z}_n)}{q(\mathbf{z}_n\mid\mathbf{x}_n,\boldsymbol\phi)}\,\mathrm{d}\mathbf{z}_n . \]
Passo 3 — logaritmo de produto é soma de logaritmos, e linearidade da integral:
\[ \mathcal{L}_n=\int q(\mathbf{z}_n\mid\mathbf{x}_n,\boldsymbol\phi)\,\ln p(\mathbf{x}_n\mid\mathbf{z}_n,\mathbf{w})\,\mathrm{d}\mathbf{z}_n +\int q(\mathbf{z}_n\mid\mathbf{x}_n,\boldsymbol\phi)\,\ln\frac{p(\mathbf{z}_n)}{q(\mathbf{z}_n\mid\mathbf{x}_n,\boldsymbol\phi)}\,\mathrm{d}\mathbf{z}_n . \]
Passo 4 — definição de KL da Aula 5, \(\mathrm{KL}(q\|p)=-\int q\ln\{p/q\}\), aplicada ao segundo termo:
\[ \boxed{\;\mathcal{L}_n(\mathbf{w},\boldsymbol\phi)=\mathbb{E}_{q(\mathbf{z}_n\mid\mathbf{x}_n,\boldsymbol\phi)}\big[\ln p(\mathbf{x}_n\mid\mathbf{z}_n,\mathbf{w})\big]-\mathrm{KL}\big(q(\mathbf{z}_n\mid\mathbf{x}_n,\boldsymbol\phi)\,\|\,p(\mathbf{z}_n)\big)\;} \qquad\text{(DLFC 19.14).} \]
Passo 5 — independência entre pontos: \(\ln p(\mathcal{D}\mid\mathbf{w})=\sum_n\ln p(\mathbf{x}_n\mid\mathbf{w})=\sum_n\mathcal{L}_n+\sum_n\mathrm{KL}(\cdot)\ge\sum_n\mathcal{L}_n\) (DLFC 19.10), porque cada KL é \(\ge0\).
Há duas divergências KL diferentes nesta derivação, e confundi-las é o erro mais comum. A do Passo 1 compara \(q\) com a posterior \(p(\mathbf{z}_n\mid\mathbf{x}_n,\mathbf{w})\). Ela não é calculável (depende de \(p(\mathbf{x}_n\mid\mathbf{w})\)) e é a folga que gostaríamos de zerar. A do Passo 4 compara \(q\) com a priori \(p(\mathbf{z}_n)\). Ela é calculável e é um termo da função objetivo. Só esta segunda KL aparece em \(\mathcal{L}_n\), mas a primeira também é controlada: com \(\mathbf{w}\) fixo, \(\ln p(\mathbf{x}_n\mid\mathbf{w})\) não depende de \(\boldsymbol\phi\), e pelo Passo 1 maximizar \(\mathcal{L}_n\) em \(\boldsymbol\phi\) equivale a reduzir a folga, sem nunca calculá-la.
Leitura dos dois termos. O primeiro é um erro de reconstrução esperado: codificar \(\mathbf{x}_n\), sortear \(\mathbf{z}_n\) de \(q\), decodificar e medir a verossimilhança do dado original. O segundo puxa cada \(q(\mathbf{z}\mid\mathbf{x}_n)\) para a priori. Esse termo regulariza o espaço latente e é exatamente o que faltava ao AE.
6.2 A Verossimilhança Gaussiana Vira Erro Quadrático
Passo 6 — log da Gaussiana isotrópica:
\[ \ln\mathcal{N}\big(\mathbf{x}\mid\mathbf{g},\sigma^2\mathbf{I}_D\big) =-\frac D2\ln(2\pi\sigma^2)-\frac{1}{2\sigma^2}\|\mathbf{x}-\mathbf{g}\|^2 . \]
Passo 7 — substituindo no ELBO e trocando o sinal, obtém-se a perda por ponto:
\[ -\mathcal{L}_n=\frac{1}{2\sigma^2}\,\mathbb{E}_{q}\big\|\mathbf{x}_n-\mathbf{g}(\mathbf{z}_n,\mathbf{w})\big\|^2 +\mathrm{KL}\big(q(\mathbf{z}_n\mid\mathbf{x}_n,\boldsymbol\phi)\,\|\,p(\mathbf{z}_n)\big) +\frac D2\ln(2\pi\sigma^2). \]
O último termo não depende de \((\mathbf{w},\boldsymbol\phi)\). Maximizar o ELBO equivale, portanto, a minimizar “erro quadrático\(/(2\sigma^2)\) + KL até a priori”. O erro quadrático do autoencoder reaparece como log-verossimilhança Gaussiana, e não como escolha arbitrária. Para dados binários, uma Bernoulli em \(p(\mathbf{x}\mid\mathbf{z})\) trocaria o erro quadrático pela entropia cruzada e deixaria o termo KL intacto.
6.3 A KL Gaussiana em Forma Fechada
Demonstração. (a) Redução a uma dimensão. As duas densidades fatoram por coordenada: \(q=\prod_jq_j(z_j)\) e \(p=\prod_jp_j(z_j)\) com \(p_j=\mathcal{N}(0,1)\). Logo \(\ln\{q(\mathbf{z})/p(\mathbf{z})\}=\sum_j\ln\{q_j(z_j)/p_j(z_j)\}\), e
\[ \mathrm{KL}(q\|p)=\mathbb{E}_q\Big[\sum_j\ln\frac{q_j(z_j)}{p_j(z_j)}\Big]=\sum_j\mathbb{E}_{q_j}\Big[\ln\frac{q_j(z_j)}{p_j(z_j)}\Big]=\sum_j\mathrm{KL}(q_j\|p_j), \]
porque cada parcela depende só de \(z_j\), cuja marginal sob \(q\) é \(q_j\).
(b) Caso escalar. Com \(q_j=\mathcal{N}(\mu,s^2)\) e \(p_j=\mathcal{N}(0,1)\):
\[ \ln q_j(z)=-\tfrac12\ln(2\pi s^2)-\frac{(z-\mu)^2}{2s^2}, \qquad \ln p_j(z)=-\tfrac12\ln(2\pi)-\frac{z^2}{2}. \]
Sob \(q_j\), \(\mathbb{E}[(z-\mu)^2]=s^2\) e \(\mathbb{E}[z^2]=\mathrm{Var}[z]+(\mathbb{E}[z])^2=s^2+\mu^2\). Então
\[ \mathbb{E}_{q_j}[\ln q_j]=-\tfrac12\ln(2\pi s^2)-\tfrac12, \qquad \mathbb{E}_{q_j}[\ln p_j]=-\tfrac12\ln(2\pi)-\tfrac12(s^2+\mu^2), \]
\[ \mathrm{KL}(q_j\|p_j)=\mathbb{E}_{q_j}[\ln q_j]-\mathbb{E}_{q_j}[\ln p_j] =-\tfrac12\ln s^2-\tfrac12+\tfrac12(s^2+\mu^2) =\tfrac12\big(\mu^2+s^2-1-\ln s^2\big). \]
Somar em \(j\) com \((\mu,s)=(\mu_j,\sigma_j)\) conclui. \(\blacksquare\)
Nota de leitura: o DLFC escreve (19.15) com o sinal trocado, \(\tfrac12\sum_j(1+\ln\sigma_j^2-\mu_j^2-\sigma_j^2)\), que é \(-\mathrm{KL}\), a parcela que entra somada no ELBO.
O que cada parcela faz. A figura mostra \(k(\mu,\sigma)=\tfrac12(\mu^2+\sigma^2-1-\ln\sigma^2)\) para uma coordenada. O mínimo, zero, está em \((\mu,\sigma)=(0,1)\), isto é, \(q_j=p_j\).
- \(\tfrac12\mu^2\) puxa a média de cada ponto para a origem. Isso centra o espaço latente e fixa sua escala, coisa que o AE não tinha.
- \(\tfrac12(\sigma^2-1-\ln\sigma^2)\ge0\), com igualdade só em \(\sigma^2=1\) (porque \(\ln t\le t-1\)). Quando \(\sigma\to0\), o termo \(-\ln\sigma^2\to+\infty\). A KL proíbe que \(q\) degenere num ponto, que é justamente o que o AE faz. Cada dado passa a ocupar uma pequena nuvem, e o decoder é treinado na vizinhança de cada código, não só no código.
6.4 O Peso da Regularização: \(\beta\) e \(\sigma^2\)
O DLFC (§19.2.2, p. 577) apresenta o coeficiente \(\beta\) (Higgins et al., 2017) multiplicando o termo KL. O objetivo passa a ser \(\mathbb{E}_q[\ln p(\mathbf{x}_n\mid\mathbf{z}_n)]-\beta\,\mathrm{KL}(q\|p(\mathbf{z}_n))\), e \(\beta=1\) recupera o ELBO. (O DLFC diz “o primeiro termo de (19.14)”, mas o coeficiente multiplica o termo KL, que é o segundo.) O resultado abaixo, derivado por nós, mostra que \(\beta\) e \(\sigma^2\) não são dois botões independentes.
Demonstração. Multiplicar uma função por uma constante positiva não altera seus minimizadores. Multiplicando por \(2\sigma^2>0\), o objetivo fica \(\sum_n\mathbb{E}_q\|\mathbf{x}_n-\mathbf{g}\|^2+2\beta\sigma^2\sum_n\mathrm{KL}(\cdot)\), que depende dos dois só por \(\beta\sigma^2\). \(\blacksquare\)
Fixar a variância do ruído do decoder é, portanto, escolher a força da regularização. Um \(\sigma^2\) pequeno afirma que os dados ficam muito perto da variedade, então a reconstrução domina. Um \(\sigma^2\) grande afirma o contrário, e a priori domina. No MNIST usamos \(\sigma^2=0{,}1\).
Experimento. Treinamos o mesmo VAE (\(784\)-\(512\)-\(256\)-\(2\) no encoder, espelhado no decoder, \(M=2\)) com \(\beta\in\{0,1,20\}\). A tabela mede, nas imagens de teste, o erro de reconstrução por pixel decodificando \(\boldsymbol\mu\), a KL média até a priori, o desvio-padrão médio \(\sigma_{nj}\) do encoder e o espalhamento (desvio-padrão) das médias \(\mu_{nj}\).
| \(\beta\) | erro por pixel | KL média | \(\sigma_{nj}\) médio | desvio-padrão de \(\mu_{nj}\) |
|---|---|---|---|---|
| \(0\) | 0,0377 | 39,5 | 0,0010 | 3,87 |
| \(1\) | 0,0375 | 7,3 | 0,0373 | 1,18 |
| \(20\) | 0,0443 | 2,2 | 0,3446 | 0,94 |
- \(\beta=0\) (sem KL): nada impede \(\sigma\to0\), e é o que acontece (\(\sigma_{nj}\approx0{,}001\)). O ruído da amostragem só atrapalha a reconstrução, então o encoder o elimina, e o modelo volta a ser um AE determinístico, com escala latente arbitrária.
- \(\beta=1\) (ELBO): médias centradas, espalhamento perto de \(1\), reconstrução praticamente igual à do AE.
- \(\beta=20\): a KL cai, os \(\sigma_{nj}\) crescem e a reconstrução piora. Levado ao extremo, é o posterior collapse descrito pelo DLFC (§19.2.2, pp. 576–577, tradução livre): “a distribuição variacional \(q(\mathbf{z}\mid\mathbf{x},\boldsymbol\phi)\) converge para a priori \(p(\mathbf{z})\) e, portanto, torna-se não informativa, porque deixa de depender de \(\mathbf{x}\). Na prática, o código latente é ignorado”. O decoder passa a receber ruído independente da entrada e só pode produzir algo próximo de uma imagem média.
6.5 Quanto Falta Para a Verossimilhança
A folga \(\ln p(\mathbf{x})-\mathcal{L}=\mathrm{KL}(q\|p(\mathbf{z}\mid\mathbf{x}))\) não é calculável diretamente, mas pode ser estimada. Para qualquer \(q\) positiva onde \(p(\mathbf{x},\mathbf{z})\) é positiva,
\[ p(\mathbf{x})=\int p(\mathbf{x},\mathbf{z})\,\mathrm{d}\mathbf{z} =\int q(\mathbf{z}\mid\mathbf{x})\,\frac{p(\mathbf{x},\mathbf{z})}{q(\mathbf{z}\mid\mathbf{x})}\,\mathrm{d}\mathbf{z} =\mathbb{E}_{q}\!\left[\frac{p(\mathbf{x},\mathbf{z})}{q(\mathbf{z}\mid\mathbf{x})}\right], \]
o que sugere estimar \(\ln p(\mathbf{x})\) por \(\ln\big(\tfrac1K\sum_k p(\mathbf{x},\mathbf{z}^{(k)})/q(\mathbf{z}^{(k)}\mid\mathbf{x})\big)\), com \(\mathbf{z}^{(k)}\sim q\) (amostragem por importância). Pela desigualdade de Jensen (\(\ln\) é côncava), a esperança desse estimador é \(\le\ln p(\mathbf{x})\), de modo que a folga estimada é ela própria uma cota inferior da folga real.
Com \(K=1.000\) amostras, em 300 imagens de teste, o ELBO médio é 38,54, e a estimativa de \(\ln p(\mathbf{x})\) é 44,24. A folga média é de pelo menos 5,70 nats por imagem. Os valores são positivos porque \(p(\mathbf{x})\) é uma densidade em \(784\) dimensões com \(\sigma^2=0{,}1\), e densidades podem passar de \(1\). É a ilustração numérica do DLFC (Fig. 19.8): o ELBO fica sempre um pouco abaixo da log-verossimilhança, porque o encoder não reproduz a posterior exata.
6.6 Pausa — O Termo Que Organiza o Espaço
Olhe para cada termo da perda separadamente: como o primeiro reage a \(\sigma_{nj}\) grande, e como o segundo reage a \(\sigma_{nj}\to0\)?
- □ Num VAE com decoder Gaussiano, dobrar a variância \(\sigma^2\) do ruído do decoder leva aos mesmos parâmetros ótimos que dobrar o peso \(\beta\) do termo KL.
- □ A parcela \(\tfrac12(\mu_j^2+\sigma_j^2-1-\ln\sigma_j^2)\) é mínima em \(\sigma_j=0\), o que empurra o VAE de volta para um autoencoder determinístico.
- □ Se a KL média até a priori for praticamente zero para todos os pontos, o decoder recebe códigos que não dependem da entrada e só pode produzir algo próximo de uma imagem média.
- □ Num VAE para o MNIST binarizado, trocar a Gaussiana por uma Bernoulli em \(p(\mathbf{x}\mid\mathbf{z})\) muda o termo KL do objetivo.
7 Bloco 5: O Reparameterization Trick e o VAE Treinado
7.1 O Problema: Derivar Uma Esperança
O termo KL tem forma fechada e se deriva sem dificuldade. O de reconstrução, \(\mathbb{E}_{q(\mathbf{z}\mid\mathbf{x},\boldsymbol\phi)}[\ln p(\mathbf{x}\mid\mathbf{z},\mathbf{w})]\), é uma integral contra uma rede e precisa ser estimado por Monte Carlo (DLFC 19.16): sorteiam-se \(\mathbf{z}^{(l)}\sim q\) e faz-se a média de \(\ln p(\mathbf{x}\mid\mathbf{z}^{(l)},\mathbf{w})\). Derivar essa estimativa em \(\mathbf{w}\) é fácil. Em \(\boldsymbol\phi\), não. O DLFC (§19.2.2, p. 575, tradução livre) explica: “o gradiente em relação a \(\boldsymbol\phi\) é problemático, porque mudanças em \(\boldsymbol\phi\) mudam a distribuição \(q(\mathbf{z}_n\mid\mathbf{x}_n,\boldsymbol\phi)\) da qual as amostras são tiradas, e no entanto essas amostras são valores fixos, de modo que não temos como obter suas derivadas em relação a \(\boldsymbol\phi\)”.
O problema geral é calcular \(\nabla_{\boldsymbol\phi}\mathbb{E}_{q(\mathbf{z}\mid\boldsymbol\phi)}[f(\mathbf{z})]\) quando \(\boldsymbol\phi\) está na distribuição e não no integrando. Há dois estimadores.
7.2 Estimador 1: Score Function
Demonstração. Trocando derivada e integral, \(\nabla_{\boldsymbol\phi}\int qf\,\mathrm{d}\mathbf{z}=\int f\,\nabla_{\boldsymbol\phi}q\,\mathrm{d}\mathbf{z}\). Pela regra da cadeia, \(\nabla_{\boldsymbol\phi}\ln q=\nabla_{\boldsymbol\phi}q/q\), logo \(\nabla_{\boldsymbol\phi}q=q\,\nabla_{\boldsymbol\phi}\ln q\), e \(\int f\,q\,\nabla_{\boldsymbol\phi}\ln q\,\mathrm{d}\mathbf{z}=\mathbb{E}_q[f\,\nabla_{\boldsymbol\phi}\ln q]\). A média de \(L\) amostras independentes tem essa esperança. \(\blacksquare\)
O estimador só usa valores de \(f\), nunca a derivada de \(f\), e serve até para \(\mathbf{z}\) discreta. A limitação é a variância. \(f\) entra multiplicando, então se \(f\) é grande (como \(\ln p(\mathbf{x}\mid\mathbf{z})\), uma soma sobre \(784\) pixels), o estimador oscila muito. O DLFC (p. 575) atribui a técnica a Williams (1992) e observa que “esses estimadores têm variância alta”.
7.3 Estimador 2: Reparametrização (Pathwise)
Demonstração. Para todo \(t\), \(P(z\le t)=P(\mu+\sigma\epsilon\le t)=P\big(\epsilon\le\tfrac{t-\mu}{\sigma}\big)=\Phi\big(\tfrac{t-\mu}{\sigma}\big)\), usando \(\sigma>0\) na segunda igualdade. Essa é a função de distribuição de \(\mathcal{N}(\mu,\sigma^2)\). No caso vetorial, cada \(z_j\) depende só de \(\epsilon_j\), e os \(\epsilon_j\) são independentes, logo os \(z_j\) também são, cada um com a marginal acima. \(\blacksquare\)
Consequência. Como \(\mathbf{z}\) e \(\boldsymbol\mu+\boldsymbol\sigma\odot\boldsymbol\epsilon\) têm a mesma distribuição, as esperanças coincidem:
\[ \mathbb{E}_{q(\mathbf{z}\mid\mathbf{x},\boldsymbol\phi)}[f(\mathbf{z})] =\mathbb{E}_{\boldsymbol\epsilon\sim\mathcal{N}(\mathbf{0},\mathbf{I})}\big[f\big(\boldsymbol\mu(\mathbf{x},\boldsymbol\phi)+\boldsymbol\sigma(\mathbf{x},\boldsymbol\phi)\odot\boldsymbol\epsilon\big)\big]. \]
A distribuição de \(\boldsymbol\epsilon\) não depende de \(\boldsymbol\phi\). O parâmetro saiu da distribuição e foi para o integrando, então a derivada entra na esperança:
\[ \nabla_{\boldsymbol\phi}\mathbb{E}_q[f(\mathbf{z})] =\mathbb{E}_{\boldsymbol\epsilon}\big[\nabla_{\boldsymbol\phi}f(\boldsymbol\mu+\boldsymbol\sigma\odot\boldsymbol\epsilon)\big] =\mathbb{E}_{\boldsymbol\epsilon}\Big[\Big(\frac{\partial\mathbf{z}}{\partial\boldsymbol\phi}\Big)^T\nabla_{\mathbf{z}}f(\mathbf{z})\Big], \]
e o termo dentro da esperança é calculado por backpropagation através do decoder (\(\nabla_{\mathbf{z}}f\)) e do encoder (\(\partial\mathbf{z}/\partial\boldsymbol\phi\), via \(\boldsymbol\mu\) e \(\boldsymbol\sigma\)). Diferentemente do score function, esse estimador usa a derivada de \(f\): sabe em que direção mudar \(\mathbf{z}\) para melhorar a reconstrução.
O DLFC (p. 575) registra o limite: o truque “pode ser estendido a outras distribuições, mas é limitado a variáveis contínuas”. Por isso ele não se aplica diretamente a uma latente categórica como a do GMM.
Nota de leitura: a eq. (19.18) e o Algoritmo 19.1 do DLFC estão impressos como \(z_{nj}=\mu_j\epsilon_{nj}+\sigma_j^2\). A forma correta é \(z_{nj}=\mu_j+\sigma_j\epsilon_{nj}\), consistente com (19.17) e com o texto depois de (19.19).
7.4 A Variância, Medida
Tomamos uma imagem de teste e o VAE treinado (\(\beta=1\)) e estimamos 10.000 vezes, com uma única amostra (\(L=1\)), a derivada de \(\mathbb{E}_q[\ln p(\mathbf{x}\mid\mathbf{z})]\) em relação à primeira coordenada de \(\boldsymbol\mu\) pelos dois estimadores.
- Pathwise: média -31,5 (erro-padrão 0,3), desvio-padrão 27,1.
- Score function: média -44,8 (erro-padrão 8,8), desvio-padrão 875,1.
As médias diferem em 1,51 erros-padrão combinados, compatível com o fato de os dois estimadores serem não enviesados: o score function acerta na média, mas cada estimativa isolada oscila muito. O desvio-padrão do score function é cerca de 32 vezes maior, então para a mesma precisão ele precisaria de cerca de 1.044 vezes mais amostras. O DLFC (p. 575) conclui que a reparametrização “pode ser vista também como uma técnica de redução de variância”. Na prática, \(L=1\) amostra por ponto basta (DLFC p. 576), porque o gradiente estocástico já é ruidoso pelo minilote.
7.5 O Algoritmo e o Que o VAE Aprendeu
Juntando os Blocos 3 a 5, o treino do VAE (adaptado do Algoritmo 19.1 do DLFC, com a reparametrização corrigida e em minilotes) é:
- Sortear um minilote \(\{\mathbf{x}_n\}\).
- Encoder: calcular \(\boldsymbol\mu_n=\boldsymbol\mu(\mathbf{x}_n,\boldsymbol\phi)\) e \(\ln\boldsymbol\sigma_n^2\).
- Reparametrização: sortear \(\boldsymbol\epsilon_n\sim\mathcal{N}(\mathbf{0},\mathbf{I})\) e fazer \(\mathbf{z}_n=\boldsymbol\mu_n+\boldsymbol\sigma_n\odot\boldsymbol\epsilon_n\).
- Perda: \(\sum_n\Big[\frac{1}{2\sigma^2}\|\mathbf{x}_n-\mathbf{g}(\mathbf{z}_n,\mathbf{w})\|^2+\beta\cdot\tfrac12\sum_j\big(\mu_{nj}^2+\sigma_{nj}^2-1-\ln\sigma_{nj}^2\big)\Big]\).
- Gradientes em \((\mathbf{w},\boldsymbol\phi)\) por backpropagation e um passo do otimizador (usamos Adam).
Para gerar, descarta-se o encoder: sorteia-se \(\mathbf{z}\sim\mathcal{N}(\mathbf{0},\mathbf{I})\) e calcula-se \(\mathbf{g}(\mathbf{z},\mathbf{w})\). A primeira figura abaixo mostra, à esquerda, o decoder avaliado numa grade de pontos espaçados pelos quantis da priori, de \(5\%\) a \(95\%\) em cada eixo. Cada célula ocupa a mesma massa de probabilidade. Os dígitos se transformam continuamente uns nos outros e não há regiões de lixo, porque o treino espalhou os códigos sobre a priori e ensinou o decoder a responder a toda a vizinhança de cada código. À direita estão \(16\) amostras de \(p(\mathbf{z})\), a mesma operação que falhou no AE do Bloco 2. A segunda figura repete a interpolação do “1” ao “7”: no VAE, as imagens intermediárias são formas plausíveis ao longo de todo o caminho.
As amostras são borradas, porém. O decoder Gaussiano devolve a média de \(p(\mathbf{x}\mid\mathbf{z})\). Quando um mesmo \(\mathbf{z}\) é compatível com várias formas (em \(M=2\), isso é inevitável), a média das formas é um borrão. Com \(M\) maior o borrão diminui, mas não desaparece. Melhorar isso é a motivação dos modelos que vêm depois do VAE.
7.6 Pausa — Quando Não Há Caminho Contínuo
Releia o que cada estimador precisa saber sobre \(f\) e sobre \(q(\mathbf{z}\mid\boldsymbol\phi)\); e pense em quantos valores uma latente com \(K\) categorias pode assumir.
- □ Como o estimador score function é não enviesado, com uma única amostra ele é tão útil para o treino quanto o estimador da reparametrização.
- □ Se \(\boldsymbol\epsilon\sim\mathcal{N}(\mathbf{0},\mathbf{I})\) e \(\mathbf{z}=\boldsymbol\mu+\boldsymbol\sigma\odot\boldsymbol\epsilon\) com \(\sigma_j>0\), então \(\mathbf{z}\) segue uma Gaussiana de média \(\boldsymbol\mu\) e covariância diagonal com entradas \(\sigma_j^2\).
- □ O truque da reparametrização elimina a aleatoriedade do treino: o gradiente do ELBO passa a ser calculado de forma exata.
- □ Fazer o encoder produzir \(\ln\sigma_j^2\) em vez de \(\sigma_j\) garante a positividade da variância sem mudar a família de distribuições representáveis por \(q\).
8 Fechamento
8.1 Retomando as Quatro Perguntas
- Onde a não linearidade precisa estar, e quando compensa? No caminho de \(\mathbf{z}\) até \(\hat{\mathbf{x}}\). Com decoder afim, as reconstruções ficam num subespaço afim de dimensão \(\le M\), por mais complicado que seja o encoder. Por isso o AE raso empata com a PCA. O AE profundo curva a superfície: no MNIST (\(20\,000\) imagens, variedade curva) reconstrói muito melhor; no Breast Cancer (\(455\) pacientes, estrutura quase linear) sobreajusta.
- Por que um bom compressor não é um bom gerador? Porque o objetivo do AE só avalia o decoder nos códigos de treino e é invariante a reparametrizações do espaço latente. A escala, a forma e a densidade dos códigos são acidentes do treino, e não há \(p(\mathbf{z})\) de onde sortear.
- Como o VAE estende a PPCA? Mesmo modelo gerador, com \(\mathbf{W}\mathbf{z}+\boldsymbol\mu\) trocado por uma rede. A posterior perde a forma fechada. Um encoder aproxima todas as posteriores de uma vez (inferência amortizada), e o ELBO da Aula 5 vira o objetivo: reconstrução esperada menos KL até a priori, com a KL em forma fechada. O passo E deixa de ser exato, e sobra uma folga mensurável.
- Como derivar uma esperança sob uma distribuição que depende dos parâmetros? Pelo estimador score function (geral, variância alta) ou pela reparametrização \(\mathbf{z}=\boldsymbol\mu+\boldsymbol\sigma\odot\boldsymbol\epsilon\), que tira \(\boldsymbol\phi\) da distribuição e o põe no integrando. Ela exige \(\mathbf{z}\) contínua e reduz a variância em ordens de grandeza.
8.2 O Que Fica em Aberto
- Borrão. O decoder Gaussiano devolve médias condicionais, e a média de várias formas é um borrão.
- Posterior agregada \(\ne\) priori. O termo KL age ponto a ponto. A distribuição de todos os códigos juntos não é forçada a ser exatamente \(\mathcal{N}(\mathbf{0},\mathbf{I})\) (com \(\beta=1\), o desvio-padrão das médias foi 1,18, não \(1\)), e podem sobrar regiões da priori pouco visitadas.
- Escolha de \(\beta\), \(\sigma^2\) e \(M\). O equilíbrio entre reconstrução e regularização é um hiperparâmetro. O posterior collapse é o extremo de um lado, e o AE disfarçado é o extremo do outro.
- Outros geradores. O DLFC (Cap. 20, p. 582, tradução livre) observa que “modelos de difusão podem ser vistos como uma forma de autoencoder variacional hierárquico em que a distribuição do encoder é fixa, definida pelo processo de ruído, e só a distribuição geradora é aprendida”. A mesma ideia de ELBO, levada a muitas camadas de latentes, está na base dos geradores de imagens atuais.
Os mapas 2D desta aula são subprodutos de um objetivo de reconstrução. No VAE, o termo KL ainda espreme todos os códigos num disco em torno da origem, e as classes do MNIST se encostam no centro. Se o objetivo for só visualizar a estrutura de vizinhança dos dados em duas dimensões, não há por que exigir um decoder: pode-se otimizar diretamente as posições dos pontos no plano para preservar distâncias (MDS) ou vizinhanças probabilísticas (t-SNE). A Aula 8 começa pelo obstáculo geométrico que aparece ao fazer isso, o crowding problem: não cabe no plano tudo o que é vizinho em alta dimensão.