Autoencoders Flashcards
O que é um autoencoder?
É uma rede neural não supervisionada que é treinada com o objetivo de copiar sua entrada na sua saída. Essa é composta por um encoder e decoder.
Essa codifica os dados de entrada em um espaço de representação, ou espaço de variáveis latentes, geralmente com redução de dimensão e empregar este código para reconstruir a entrada na saída da rede neural.
Em geral, existe utilidade em um autoencoder que tenha sucesso em aprender g(f(x)) = x (onde f é o encoder e g é o decoder) perfeitamente em todo lugar??
Em geral, não
autoencoder não são projetados pra aprender a copiar a entrada perfeitamente. Usualmente, eles são restritos a aprender uma cópia aproximada. Dessa forma, o modelo é forçado a priorizar quais aspectos da entrada devem ser copiados (aprender propriedades úteis dos dados).
O que são autoencoders incompletos
(undercomplete autoencoders)?
Um autoencoder que a dimensão de codificação é menor que a dimensão de entrada.
Sendo h=f(x) (encoder) h é restrito a ter dimensão menor que x obtendo características úteis (mais relevantes).
minimiza-se a função perda L
L(x, g(f(x)))
O que são denoising autoencoders? Onde são usados e qual finalidade?
Denoising autoencoder são uma variação de um autoencoder padrão, geralmente do tipo undercomplete.
Na sua entrada é adicionada um ruído e na sua saída (target) se mantem a entrada sem ruído
assim sendo sendo x~(entrada + ruído) L a função de perda
L = -logp_{decoder}(x|h = f(x~))
O objetivo é gerar uma representação mais robusta que captura a essência nos dados de entrada.
O que é variational autoencoder?
VAE é um tipo especial de autoencoder.
Em vez de seu código (saída do encoder) tratar valores singulares como autoencoders padrões. O encoder tem como saída uma distribuição de probabilidade com média e desvio padrão para cada variável do código.
Como é o treinamento de um VAE?
O objetivo do treinamento de um VAE é similar a um autoencoder padrão a qual busca-se minimizar a diferença entre a entrada x e sua reconstrução \hat{x} por exemplo
min ||x - \hat{x}||
No entanto, como a saída do encoder é uma distribuição de probabilidade essa deve ser amostrada (sample) aleatoriamente . Assim, precisa ser garantido que pra qualquer amostragem aleatória as reconstruções sejam acuradas. Isso é obtido com
min KL(q(z|x), p(x|z))
onde KL é divergente de Kullback Leibher
p é a distribuição intratável (verdadeira) que faz z -> x
q é uma distribuição tratável que faz x -> z
A função de perda é
L(theta, phi, x,z) = E_{q_phi(z|x)}{log[p_theta(x|z)]} - D_{KL}[q_phi(z|x)||p(z)]
ou
L(x, \hat{x}) + \sum_{j}KL(q_j(z|x)||p(z))
onde assume-se que p(z) segue uma distribuição gaussiana unitária.
Explique o disentangled (desembaraçado) VAE.
Em um disentangled VAE é dado um peso maior para o divergente de KL. Dessa forma, a rede aprende distribuições mais largas e as dimensões latentes se tornam mais não-correlacionadas.
L(theta, phi, x,z) = E_{q_phi(z|x)}{log[p_theta(x|z)]} - beta*D_{KL}[q_phi(z|x)||p(z)]
ou
L(x, \hat{x}) + beta*\sum_{j}KL(q_j(z|x)||N(0,1))
onde beta > 1
Em um VAE (padrão) beta = 1
Na implementação do treinamento de VAE explique o truque de reparametrização,
No treinamento de um VAE é necessário se calcular a relação entre a função perda de saída e cada parâmetro através do backpropagation. No entanto, isso não é possível em um processo de amostragem aleatório. Assim, é usado o truque de reparametrização que sugere dado uma amostragem aleatória epsilon, de uma gaussiana unitária, deslocamos epsilon por uma média mu e escalamos pela variância sigma
z = mu + sigma* epsilon
onde epsilon ~ N(0,1)
Como essa reparametrização mantem-se a optimização de parâmetros enquanto se mantem a habilidade de se amostrar aleatoriamente.
O que significa aprendizado da representação?
Significa aprender representações dos dados que facilitam a extração de informações uteis quando se constroem classificadores e preditores.
No caso de modelos probabilísticos, uma boa representação é frequentemente aquela que capta a distribuição posterior do fatores explicativos para a entrada observada.
Deep learning geralmente envolve uma cascata de transformações não-lineares, ao longo das muitas camadas da rede neural. O que isto tem a ver com o aprendizado da representação?
Cada camada (transformação não linear) atua como uma extratora de atributos (feature extractor) fazendo assim um aprendizado da representação. Essas transformações tem o proposito de produzir representações dos dados que sejam mais abstratas e úteis para a execução da tarefa.