Os autocodificadores variacionais (VAEs) são modelos generativos usados no aprendizado de máquina (ML) para gerar novos dados na forma de variações dos dados de entrada nos quais foram treinados. Além disso, eles também executam tarefas comuns a outros autocodificadores, como a redução de ruído.
Como todos os autocodificadores, os autocodificadores variacionais são modelos de deep learning compostos por um codificador que aprende a isolar as variáveis latentes importantes dos dados de treinamento e um decodificador que, então, utiliza essas variáveis latentes para reconstruir os dados de entrada.
No entanto, enquanto a maioria das arquiteturas de autocodificadores codifica uma representação discreta e fixa de variáveis latentes, os VAEs codificam uma representação contínua e probabilística desse espaço latente. Isso permite que um VAE não apenas reconstrua com precisão a entrada original, mas também use inferência variacional para gerar novas amostras de dados que se assemelham aos dados de entrada originais.
A arquitetura de rede neural para o autocodificador variacional foi originalmente proposta em um artigo de 2013 de Diederik P. Kingma e Max Welling, intitulado Auto-Encoding Variational Bayes. Esse artigo também popularizou o que eles chamaram de truque de reparametrização, uma importante técnica de aprendizado de máquina que permite o uso da aleatoriedade como entrada do modelo sem comprometer a diferenciabilidade do modelo, ou seja, a capacidade de otimizar os parâmetros do modelo.
Embora os VAEs sejam frequentemente discutidos no contexto da geração de imagens, incluindo neste artigo, eles podem ser usados para uma ampla gama de aplicações de inteligência artificial (IA), desde a detecção de anomalias1 até a geração de novas moléculasde medicamentos2.
Essencial para entender VAEs ou qualquer outro tipo de autocodificadores é a noção de espaço latente, o nome dado às variáveis latentes coletivas de um conjunto específico de dados de entrada. Em suma, variáveis latentes são variáveis subjacentes de dados que informam a maneira como os dados são distribuídos, mas muitas vezes não são diretamente observáveis.
Para uma visualização útil do conceito de variáveis latentes, imagine uma ponte com um sensor que mede o peso de cada veículo que passa. Naturalmente, há diferentes tipos de veículos que usam a ponte, desde conversíveis pequenos e leves até caminhões enormes e pesados. Como não há câmera, não temos como detectar se um veículo específico é conversível, sedan, van ou caminhão. No entanto, sabemos que o tipo de veículo influencia significativamente seu peso.
Portanto, o exemplo envolve duas variáveis aleatórias, x e z, em que x é a variável diretamente observável do peso do veículo e z é a variável latente do tipo de veículo. O objetivo principal de treinamento de qualquer autocodificador é aprender a modelar com eficiência o espaço latente de um input específico.
Os autocodificadores modelam o espaço latente por meio da redução de dimensionalidade: a compressão de dados em um espaço de dimensão inferior, que captura as informações significativas contidas no input original.
Em um contexto de aprendizado de máquina (ML), as dimensões matemáticas não correspondem às dimensões espaciais conhecidas do mundo físico, mas às características dos dados. Por exemplo, uma imagem em preto e branco de 28x28 pixels de um dígito manuscrito do conjunto de dados MNIST pode ser representada como um vetor de 784 dimensões, no qual cada dimensão corresponde a um pixel individual cujo valor varia de 0 (para preto) a 1 (para branco). Essa mesma imagem em cores pode ser representada como um vetor de 2.352 dimensões, no qual cada um dos 784 pixels é representado em três dimensões correspondentes aos seus respectivos valores de vermelho, verde e azul (RGB).
No entanto, nem todas essas dimensões contêm informações úteis. O dígito real em si representa apenas uma pequena fração da imagem. Portanto, a maior parte do espaço de input é ruído de fundo. A compactação de dados apenas para as dimensões contendo informações relevantes (o espaço latente) pode melhorar a precisão, eficiência e eficácia de muitas tarefas e algoritmos de ML.
VAEs são um subconjunto da categoria maior de autocodificadores, uma arquitetura de rede neural normalmente usada no deep learning para tarefas como compactação de dados, remoção de ruído de imagens, detecção de anomalias e reconhecimento facial.
Os autoencodificadores são sistemas autossupervisionados cujo objetivo de treinamento é compactar (ou codificar) os dados de input por meio da redução de dimensionalidade e, em seguida, reconstruir (ou decodificar)com precisão o input original usando essa representação compactada.
Em um nível fundamental, a função de um autocodificador é extrair efetivamente as informações mais salientes dos dados (suas variáveis latentes) e descartar o ruído irrelevante. O que distingue diferentes tipos de autocodificadores uns dos outros é a estratégia específica que empregam para extrair essas informações e os casos de uso aos quais suas respectivas estratégias são mais adequadas.
No treinamento, a rede do codificador passa os dados de entrada do conjunto de dados de treinamento por um "gargalo" antes de chegar ao decodificador. A rede do decodificador, por sua vez, é responsável por reconstruir a entrada original usando apenas o vetor de variáveis latentes.
Após cada época de treinamento, algoritmos de otimização, como gradiente descendente, são usados para ajustar os pesos do modelo de forma a minimizar a diferença entre a entrada de dados original e a saída do decodificador. Eventualmente, o codificador aprende a permitir a passagem das informações mais propícias à reconstrução precisa, e o decodificador aprende a reconstruí-la efetivamente.
Embora isso se preste de forma mais intuitiva a tarefas simples de compactação de dados, a capacidade de codificar com eficiência representações latentes precisas de dados não rotulados oferece aos autocodificadores uma ampla variedade de aplicações. Por exemplo, os autocodificadores podem ser usados para restaurar arquivos de áudio corrompidos, colorir imagens em tons de cinza ou detectar anomalias (como as resultantes de fraudes) que, de outra forma, seriam invisíveis a olho nu.
Embora diferentes tipos de autocodificadores adicionem ou alterem certos aspectos de sua arquitetura para se adequarem melhor a objetivos e tipos de dados específicos, todos os autocodificadores compartilham três elementos estruturais importantes:
O codificador extrai variáveis latentes de dados de entrada x e as exibe na forma de um vetor representando o espaço latente z. Em um autocodificador "comum" típico, cada camada subsequente do codificador contém progressivamente menos nós do que a camada anterior; à medida que os dados atravessam cada camada do codificador, eles são comprimidos pelo processo de "espremer" a si mesmos em menos dimensões.
Em vez disso, outras variantes de autocodificadores utilizam termos de regularização, como uma função que impõe dispersão ao penalizar o número de nós ativados em cada camada, para alcançar essa redução da dimensionalidade.
O gargalo, ou "código", é a camada de saída da rede do codificador e a camada de entrada da rede do decodificador. Ele contém o espaço latente: a incorporação totalmente comprimida e de dimensão mais baixa dos dados de entrada. É necessário um gargalo suficiente para ajudar a garantir que o decodificador não possa simplesmente copiar ou memorizar os dados de entrada, o que nominalmente satisfazeria sua tarefa de treinamento, mas impediria que o autocodificador aprendesse.
O decodificador usa essa representação latente para reconstruir a entrada original, essencialmente invertendo o codificador: em uma arquitetura típica de decodificador, cada camada subsequente contém um número progressivamente maior de nós ativos.
Embora as redes do codificador e do decodificador de muitos autocodificadores sejam criadas a partir de perceptrons multicamadas (MLPs) padrão, os autocodificadores não estão confinados a nenhum tipo específico de rede neural.
Os autocodificadores usados em tarefas de computer vision costumam ser redes neurais convolucionais (CNNs) e, por isso, são chamados de autocodificadores convolucionais. Os autocodificadores criados com base na arquitetura de transformação têm sido usados em várias áreas, inclusive computer vision3 e música.4
Um benefício-chave dos autocodificadores em relação a outros algoritmos de redução de dimensionalidade, como a análise de componentes principais (PCA), é que os autocodificadores podem modelar relacionamentos não lineares entre diferentes variáveis. Por esse motivo, os nós das redes neurais dos autocodificadores normalmente usam funções de ativação não lineares.
Em muitas aplicações de autocodificadores, o decodificador serve apenas para auxiliar na otimização do codificador e, portanto, é descartado após o treinamento. Em autocodificadores variacionais, o decodificador é retido e usado para gerar novos pontos de dados.
O que distingue os VAEs de outros autocodificadores é a maneira única como eles codificam o espaço latente e os diferentes casos de uso aos quais sua codificação probabilística pode ser aplicada.
Diferentemente da maioria dos autocodificadores, que são modelos determinísticos que codificam um único vetor de variáveis latentes discretas, os VAES são modelos probabilísticos. Os VAEs codificam variáveis latentes de dados de treinamento não como um valor fixo discreto z, mas como uma faixa contínua de possibilidades expressas como uma distribuição de probabilidades p(z).
Na estatística Bayesiana, esse intervalo aprendido de possibilidades para a variável latente é chamado de distribuição prévia. Na inferência variacional, o processo generativo de sintetizar novos pontos de dados, essa distribuição anterior é usada para calcular a distribuição posterior, p(z|x). Em outras palavras, o valor das variáveis observáveis x, dado um valor para a variável latente z.
Para cada atributo latente dos dados de treinamento, os VAEs codificam dois vetores latentes diferentes: um vetor de médias, “μ,” e um vetor de desvios padrão, “σ”. Em essência, esses dois vetores representam o intervalo de possibilidades para cada variável latente e a variância esperada dentro de cada intervalo de possibilidades.
Por amostragem aleatória dentro dessa gama de possibilidades codificadas, os VAEs podem sintetizar novas amostras de dados que, embora únicas e originais em si mesmas, se assemelham aos dados de treinamento originais. Embora seja relativamente intuitiva em princípio, essa metodologia exige adaptações adicionais à metodologia dos autocodificadores padrão para ser colocada em prática.
Para explicar essa capacidade dos VAEs, avaliaremos os seguintes conceitos:
Como todos os autocodificadores, os VAEs usam a perda de reconstrução, também chamada de erro de reconstrução, como uma função de perda primária no treinamento. O erro de reconstrução mede a diferença (ou "perda") entre os dados de entrada originais e a versão reconstruída desses dados de saída pelo decodificador. Vários algoritmos, incluindo perda de entropia cruzada ou erro quadrático médio (MSE), podem ser usados como função de perda de reconstrução.
Conforme explicado anteriormente, a arquitetura dos autocodificadores cria um gargalo que permite que apenas um subconjunto dos dados de entrada originais passe para o decodificador. No início do treinamento, que normalmente começa com uma inicialização aleatória dos parâmetros do modelo, o codificador ainda não aprendeu quais partes dos dados têm mais peso. Como resultado, ele inicialmente produzirá uma representação latente abaixo do ideal, e o decodificador produzirá uma reconstrução bastante imprecisa ou incompleta da entrada original.
Ao minimizar o erro de reconstrução por meio de alguma forma de gradiente descendente sobre os parâmetros da rede do codificador e da rede do decodificador, os pesos do modelo do autocodificador serão ajustados de forma a produzir uma codificação mais útil do espaço latente (e, portanto, uma reconstrução mais precisa). Matematicamente, o objetivo da função de perda de reconstrução é otimizar pθ(z|x), em que θ representa os parâmetros do modelo que impõem a reconstrução precisa da entrada x, dada a variável latente z.
A perda de reconstrução por si só é suficiente para otimizar a maioria dos autocodificadores, cujo único objetivo é uma representação compactada de aprendizagem de dados de entrada que conduza a uma reconstrução precisa.
No entanto, o objetivo de um autocodificador variacional não é reconstruir a entrada original; é gerar novas amostras que se assemelhem à entrada original. Por esse motivo, é necessário um termo de otimização adicional.
Para fins de inferência variacional (a geração de novas amostras por um modelo treinado), a perda de reconstrução por si só pode resultar em uma codificação irregular do espaço latente que superajusta os dados de treinamento e não se generaliza bem para novas amostras. Portanto, as VAEs incorporam outro termo de regularização: divergência de Kullback-Leibler ou divergência de KL.
Para gerar imagens, o decodificador coleta amostras do espaço latente. A amostragem a partir dos pontos específicos no espaço latente que representam as entradas originais nos dados de treinamento replicaria essas entradas originais. Para gerar novas imagens, o VAE deve ser capaz de coletar amostras de qualquer lugar no espaço latente entre os pontos de dados originais. Para que isso seja possível, o espaço latente deve exibir dois tipos de regularidade:
Uma maneira simples de implementar a continuidade e a completude no espaço latente é ajudar a garantir que ele siga uma distribuição normal padrão, chamada de distribuição gaussiana. Mas minimizar apenas a perda de reconstrução não incentiva o modelo a organizar o espaço latente de nenhuma maneira específica, porque o espaço "intermediário" não é relevante para a reconstrução precisa dos pontos de dados originais. É aqui que o termo de regularização da divergência de KL entra em ação.
A divergência de KL é uma métrica usada para comparar duas distribuições de probabilidades. Minimizar a divergência de KL entre a distribuição aprendida de variáveis latentes e uma distribuição gaussiana simples cujos valores variam de 0 a 1 força a codificação aprendida de variáveis latentes a seguir uma distribuição normal. Isso permite a interpolação suave de qualquer ponto no espaço latente e, assim, a geração de novas imagens.
Um obstáculo ao uso da divergência de KL para inferência variacional é que o denominador da equação é intratável, o que significa que levaria um tempo teoricamente infinito para ser computado diretamente. Para contornar esse problema e integrar ambas as funções de perda principais, os VAEs aproximam a minimização da divergência de KL ao, em vez disso, maximizar o limite inferior da evidência (ELBO).
Em terminologia estatística, as “evidências” em “limite inferior das evidências” referem-se a p(x), os dados de input observáveis pelos quais o VAE é ostensivamente responsável pela reconstrução. Essas variáveis observáveis nos dados de input são as “evidências” das variáveis latentes descobertas pelo autocodificador. O “limite inferior” refere-se à estimativa do pior cenário para a razão de verossimilhança logarítmica de uma determinada distribuição. A razão de verossimilhança logarítmica real pode ser maior do que o ELBO.
No contexto dos VAEs, o limite inferior de evidências refere-se à estimativa de pior cenário da probabilidade de uma distribuição posterior específica — em outras palavras, uma saída específica do autocodificador, condicionada tanto pelo termo de perda de divergência KL quanto pelo termo de perda de reconstrução — se ajusta à "evidência" dos dados de treinamento. Portanto, o treinamento de um modelo para inferência variacional pode ser chamado de maximização do ELBO.
Conforme discutido, o objetivo da inferência variacional é gerar novos dados na forma de variações aleatórias dos dados de treinamento x. À primeira vista, isso é relativamente simples: use uma função ƒ que seleciona um valor aleatório para a variável latente z, que o decodificador pode, então, usar para gerar uma reconstrução aproximada de x.
No entanto, uma propriedade inerente da aleatoriedade é que ela não pode ser otimizada. Não existe um “melhor” aleatório; um vetor de valores aleatórios, por definição, não tem derivada (ou seja, nenhum gradiente expressa qualquer padrão nas saídas do modelo resultante) e, portanto, não pode ser otimizado por meio de retropropagação usando qualquer forma de gradiente descendente. Isso significaria que uma rede neural que usa o processo de amostragem aleatória anterior não pode aprender os parâmetros ideais para realizar sua tarefa.
Para contornar esse obstáculo, os VAEs usam o truque de reparametrização. O truque de reparametrização introduz um novo parâmetro, ε, que é um valor aleatório selecionado da distribuição normal entre 0 e 1.
Em seguida, reparametriza a variável latente z como z = μx + εσx. Em termos mais simples, escolhe um valor para a variável latente z começando com a média dessa variável (representada por μ) e deslocando-a por um múltiplo aleatório (representado por ε) de um desvio padrão (σ). Condicionado por esse valor específico de z, o decodificador gera uma nova amostra.
Como o valor aleatório ε não é derivado e não tem relação com os parâmetros do modelo do autocodificador, ele pode ser ignorado durante a retropropagação. O modelo é atualizado por meio de alguma forma de gradiente descendente, geralmente por meio de Adam, um algoritmo de otimização baseado em gradiente também desenvolvido por Kingma, para maximizar o ELBO.
Uma deficiência dos VAEs “comuns” convencionais é que o usuário não tem controle sobre as saídas específicas geradas pelo autocodificador. Por exemplo, um VAE convencional treinado no conjunto de dados MNIST mencionado anteriormente gerará novas amostras de dígitos manuscritos de 0 a 9, mas não pode ser restrito à produção apenas de 4s e 7s.
Como o nome sugere, os VAEs condicionais (CVAEs) permitem saídas condicionadas por entradas específicas, em vez de gerar apenas variações de dados de treinamento aleatoriamente. Isso é alcançado incorporando elementos de aprendizado supervisionado (ou aprendizado semissupervisionado) ao lado dos objetivos de treinamento tradicionalmente não supervisionados de autocodificadores convencionais.
Ao treinar ainda mais o modelo em exemplos rotulados de variáveis específicas, essas variáveis podem ser usadas para condicionar a saída do decodificador. Por exemplo, um CVAE pode ser treinado primeiro em um grande conjunto de dados de imagens faciais e, em seguida, treinado usando aprendizado supervisionado para aprender uma codificação latente para "barbas", de modo que possa produzir novas imagens de rostos com barba.
Boletim informativo do setor
Receba insights selecionados sobre as notícias mais importantes (e intrigantes) sobre IA. Inscreva-se no nosso boletim informativo semanal Think. Consulte a Declaração de privacidade da IBM.
Sua assinatura será entregue em inglês. Você encontrará um link para cancelar a assinatura em cada boletim informativo. Você pode gerenciar suas assinaturas ou cancelar a assinatura aqui. Consulte nossa Declaração de privacidade da IBM para obter mais informações.
Os VAEs são frequentemente comparados com redes adversárias generativas (GANs), outra arquitetura de modelo usada para gerar amostras que se assemelham a dados de treinamento, especialmente para imagens.
Assim como os VAEs, as GANs são uma arquitetura conjunta que combina duas redes neurais: uma rede geradora, responsável por produzir amostras de imagens que se assemelham às imagens do conjunto de dados de treinamento, e uma rede discriminadora, responsável por determinar se uma imagem específica é uma imagem "real" dos dados de treinamento ou uma imagem "falsa" da rede geradora.
As duas redes são treinadas adversariamente em um jogo de zona zero: o feedback do discriminador é usado para aprimorar a saída do gerador até que o discriminador não consiga mais discernir entre amostras reais e falsas.
Para a síntese de imagens, ambos têm vantagens e desvantagens: as GANs produzem imagens mais nítidas, mas, devido às compensações contraditórias entre os dois modelos compostos, são instáveis no treinamento. VAEs são mais fáceis de treinar, mas, devido à natureza da produção de imagens com base nas características “médias” dos dados de treinamento, tendem a produzir imagens mais desfocadas.
Um VAE-GAN é, como o próprio nome sugere, um híbrido entre um autocodificador variacional (VAE) e uma rede adversária generativa (GAN). Ele reduz a imprecisão das imagens geradas pelo VAE, substituindo o termo de perda de reconstrução do modelo VAE por uma rede discriminadora.
Treine, valide, ajuste e implemente recursos de IA generativa, modelos de base e recursos de aprendizado de máquina com o IBM watsonx.ai, um estúdio empresarial de última geração para construtores de IA. Crie aplicações de IA em uma fração do tempo com uma fração dos dados.
Use a IA a serviço de sua empresa com a experiência e o portfólio de soluções líder do setor da IBM à sua disposição.
Reinvente os fluxos de trabalho e operações críticos adicionando IA para maximizar experiências, tomadas de decisão em tempo real e valor de negócios.
1 “Novel Applications for VAE-based Anomaly Detection Systems”, arXiv, 26 de abril de 2022.
2 “Variational autoencoder-based chemical latent space for large molecular structures with 3D complexity”, Nature, 16 de novembro de 2023.
3 “Masked Autoencoders Are Scalable Vision Learners”, arXiv, 11 de november de 2021.
4 “Encoding Musical Style with Transformer Autoencoders”, arXiv, 10 de dezembro de 2019.
IBM web domains
ibm.com, ibm.org, ibm-zcouncil.com, insights-on-business.com, jazz.net, mobilebusinessinsights.com, promontory.com, proveit.com, ptech.org, s81c.com, securityintelligence.com, skillsbuild.org, softlayer.com, storagecommunity.org, think-exchange.com, thoughtsoncloud.com, alphaevents.webcasts.com, ibm-cloud.github.io, ibmbigdatahub.com, bluemix.net, mybluemix.net, ibm.net, ibmcloud.com, galasa.dev, blueworkslive.com, swiss-quantum.ch, blueworkslive.com, cloudant.com, ibm.ie, ibm.fr, ibm.com.br, ibm.co, ibm.ca, community.watsonanalytics.com, datapower.com, skills.yourlearning.ibm.com, bluewolf.com, carbondesignsystem.com, openliberty.io