O que é um codificador automático?
Explore o IBM® watsonx.ai
Representação abstrata do aprendizado de máquina

Publicado em 23 de novembro de 2023
Colaboradores: Dave Bergmann, Cole Stryker

O que é um codificador automático?

Um codificador automático é um tipo de arquitetura de rede neural projetada para compactar (codificar) dados de entrada com eficiência até seus recursos essenciais e, em seguida, reconstruir (decodificar) a entrada original dessa representação compactada.

Usando aprendizado de máquina não supervisionado, os codificadores automáticos são treinados para descobrir variáveis latentes dos dados de entrada: variáveis ocultas ou aleatórias que, apesar de não serem diretamente observáveis, fundamentalmente informam como os dados são distribuídos. Coletivamente, as variáveis latentes de um determinado conjunto de dados de entrada são chamadas de espaço latente. Durante o treinamento, o codificador automático aprende quais variáveis latentes podem ser utilizadas para reconstruir mais precisamente os dados originais: essa representação de espaço latente, portanto, representa somente as informações mais essenciais contidas na entrada original.

A maioria dos tipos de codificadores automáticos é utilizada para tarefas de inteligência artificial relacionadas à extração de feição, como compressão de dados, desnutrição de imagem, detecção de anomalias e reconhecimento facial. Certos tipos de autocodificadores, como autocodificadores variacionais (VAEs) e autocodificadores adversariais (AAEs), adaptam a arquitetura do autocodificador para uso em tarefas generativas, como geração de imagens ou geração de dados de séries temporais.

Faça um tour pelo IBM® watsonx.ai

Um estúdio empresarial de última geração para desenvolvedores de IA treinarem, validarem, ajustarem e implementarem modelos de IA. Experimente o IBM watsonx.ai gratuitamente.

Conteúdo relacionado

Assinar boletins informativos da IBM

Autocodificadores vs. codificadores-decodificadores

Embora todos os modelos de codificador automático incluam tanto um codificador quanto um decodificador, nem todos os modelos de codificador são codificadores automáticos.

As estruturas codificador-decodificador , em que uma rede de codificador extrai os principais recursos dos dados de entrada e uma rede de decodificador utiliza esses dados de recursos extraídos como entrada, são utilizadas em vários modelos de deep learning, como as arquiteturas de rede neural convolucional (CNN) utilizadas em tarefas de visão computacional, como segmentação de imagens, ou as arquiteturas de rede neural recorrente (RNN) utilizadas em tarefas de sequência-a-sequência (seq2seq).

Na maioria das aplicações de modelos de codificador-decodificador, a saída da rede neural é diferente da entrada. Por exemplo, em modelos de segmentação de imagens como U-Net, a rede do codificador extrai dados de recursos da imagem de entrada para determinar a classificação semântica de diversos pixels. Com esse mapa de recursos e essas classificações por pixel, a rede do decodificador constrói máscaras de segmentação para cada objeto ou região da imagem. O objetivo desses modelos codificadores-decodificadores é rotular com precisão os pixels de acordo com sua classe semântica: são treinados por meio de aprendizado supervisionado, otimizando as previsões do modelo em relação a um conjunto de dados de imagens "verdadeiras" rotuladas por especialistas humanos.

Os codificadores automáticos se referem a um subconjunto específico de arquiteturas de codificador-decodificador treinadas por meio de aprendizado não supervisionado para reconstruir seus próprios dados de entrada .

Como não dependem de dados de treinamento rotulados, os codificadores automáticos não são considerados um método de aprendizado supervisionado. Como todos os métodos de aprendizado não supervisionado, os codificadores automáticos são treinados para descobrir padrões ocultos em dados não rotulados, em vez de prever padrões conhecidos demonstrados em dados de treinamento rotulados. No entanto, como os modelos de aprendizado supervisionado e ao contrário da maioria dos exemplos de aprendizado não supervisionado, os codificadores automáticos têm uma verdade básica para medir sua saída: a entrada original em si (ou alguma versão modificada). Por esse motivo, são considerados “aprendizado autossupervisionado”, daí, codificador automático.

Como funcionam os codificadores automáticos?

Os codificadores automáticos descobrem variáveis latentes passando os dados de entrada por um “gargalo” antes de chegarem ao decodificador. Isso força o codificador a aprender a extrair e transmitir somente as informações mais propícias à reconstrução precisa da entrada original.

Embora diferentes variantes de autocodificadores alterem determinados elementos de sua rede neural artificial para melhor atenderem a objetivos e tipos de dados específicos, todos os autocodificadores compartilham elementos estruturais importantes:

O codificador é composto por camadas que codificam uma representação compactada dos dados de entrada por meio da redução de dimensão. Em um autocodificador típico, as camadas ocultas da rede neural contêm um número progressivamente menor de nós do que a camada de entrada: à medida que os dados atravessam as camadas do codificador, ele é comprimido pelo processo de "espremer" a si mesmo em dimensões menores.

O gargalo (ou "código") contém a representação mais comprimida da entrada: é a camada de saída da rede do codificador e a camada de entrada da rede do decodificador". Um objetivo fundamental do design e do treinamento de um autocodificador é descobrir o número mínimo de feições importantes (ou dimensões) necessárias para a reconstrução eficaz dos dados de entrada. A representação do espaço latente, ou seja, o código, que emerge dessa camada é então alimentada no decodificador.

O decodificador compreende camadas ocultas com um número progressivamente maior de nós que descompactam (ou decodificam) a representação codificada dos dados, reconstruindo os dados de volta para seu formulário de pré-codificação original. Essa saída reconstruída é então comparada com a "verdade fundamental" que na maioria dos casos é simplesmente a entrada original para avaliar a eficácia do autocodificador. A diferença entre a saída e a verdade fundamental é chamada de erro de reconstrução.

Em algumas aplicações de autocodificadores, o decodificador pode ser descartado após o treinamento: em tais casos, o único objetivo do decodificador é treinar o codificador, semelhante ao papel do discriminador em uma rede adversarial generativa (GAN), que é então utilizado como um componente de outra rede neural. Em muitos autocodificadores, o decodificador continua servindo uma finalidade pós-treino: por exemplo, em VAEs, o decodificador produz novas amostras de dados.

Uma das principais vantagens de usar codificadores automáticos em outras técnicas de dimensionamento, como análise de componentes principais (PCA), é que os codificadores automáticos podem capturar correlações não lineares complexas. Assim, as funções de ativação utilizadas em codificadores automáticos são normalmente funções não lineares como a função sigmoide.

Diversos tipos de codificadores automáticos fazem adaptações a essa estrutura para melhor se adequar a diferentes tarefas e tipos de dados. Além de selecionar o tipo apropriado de rede neural, por exemplo, uma arquitetura baseada em CNN, uma arquitetura baseada em RNN, como memória de curto prazo, uma arquitetura de transformador ou uma rede neural simplificada direta, o projeto de um autocodificador envolve vários hiperparâmetros:

  • Tamanho do código: o tamanho do gargalo determina o quanto os dados devem ser comprimidos. O tamanho do código também pode ser utilizado como termo de regularização: os ajustes no tamanho do código são uma maneira de contornar overfitting ou underfitting.
  • Número de camadas: A profundidade do autoencoder é medida pelo número de camadas do codificador e do decodificador. Profundidade maior proporciona maior complexidade, enquanto profundidade menor proporciona maior velocidade de processamento.
  • Número de nós por camada: geralmente, o número de nós (ou “neurônios”) diminui com cada camada codificadora, atinge um mínimo no gargalo e aumenta com cada camada da camada decodificadora, embora em certas variantes, como codificadores automáticos esparsos, isso não seja sempre assim. O número de neurônios também pode variar de acordo com a natureza dos dados de entrada: por exemplo, um autoencoder que lida com imagens grandes exigiria mais neurônios do que um que lida com imagens menores.
  • Função de perda: ao treinar um codificador automático, a função de perda, que mede a perda de reconstrução entre a saída e a entrada, é utilizada para otimizar os pesos do modelo por meio da gradiente descendente durante a propagação retroativa. Os algoritmos ideais para a função de perda dependem da tarefa para a qual o codificador automático será utilizado.
Autocodificadores incompletos

Autocodificadores incompletos são uma estrutura de autoencoder simples utilizada principalmente para redução de dimensões. Suas camadas ocultas contêm menos nós do que suas camadas de entrada e saída, e a capacidade de seu gargalo é fixa.

O objetivo desse gargalo é evitar que o autoencoder se ajuste demais aos seus dados de treinamento. Sem limitar suficientemente a capacidade do gargalo, a rede tende a aprender a função de identidade entre a entrada e a saída: em outras palavras, pode aprender a minimizar a perda de reconstrução simplesmente copiando diretamente a entrada. Ao forçar a compressão significativa dos dados, a rede neural deve aprender a reter apenas os recursos mais essenciais para a reconstrução.

Mas se o codificador e o decodificador tiverem capacidade alta o suficiente, ou seja, se estiverem processando entradas de dados grandes ou complexas, o codificador automático (mesmo com um gargalo) ainda poderá aprender a função de identidade de qualquer forma, tornando-a inútil. Isso torna os codificadores automáticos incompletos inflexíveis e limita sua capacidade.

Codificadores automáticos regulares

Os codificadores automáticos regulares abordam as deficiências dos codificadores automáticos não concluídos introduzindo regularização: técnicas que restringem ou modificam a forma como o modelo calcula o erro de reconstrução. Esses termos de regularização não só reduzem o sobreajuste, como também permitem que o codificador automático aprenda recursos ou funções úteis.

Autocodificadores esparsos

Os SAEs impõem uma restrição de escassez : em vez de criarem um gargalo de informações reduzindo o número de nós em cada camada oculta, os SAEs criam um gargalo reduzindo o número de nós que podem ser ativados ao mesmo tempo.

Considerando que um autocodificador incompleto padrão usará toda a rede neural para cada observação, os autocodificadores com uma função de escassez são penalizados para cada neurônio ativado além de um determinado limite. Isso permite que o codificador e o decodificador tenham uma capacidade maior sem um risco correspondente de sobreajuste para dados de treinamento (porque nem todos os neurônios serão ativados). Permite também que camadas ocultas contenham nós dedicados à descoberta de recursos específicos: a função de escassez garante que só "vale a pena" ativar esses nós se esses recursos estiverem presentes.

Embora o cálculo do erro de reconstrução e a subsequente otimização dos pesos de parâmetros através da backpropagation ocorram em separado, esta otimização é regularizada por essa função de escassez. O codificador automático é, portanto, forçado a aprender a representação de espaço latente mais eficaz dentro das restrições de escassez fornecidas.

As funções utilizadas para impor uma restrição de escassez são normalmente regularização L1 ou divergência KL.

Divergência KL
A divergência de Kullback-Leibler (KL) mede a diferença entre duas distribuições de probabilidade. Quando utilizado no contexto de SAEs, a penalidade dada à rede após cada lote de treinamento é proporcional à divergência KL entre a distribuição alvo dos valores de ativação, a dispersão desejada, e a distribuição real dos valores de ativação. Como será discutido posteriormente neste artigo, a divergência KL também é utilizada para otimizar a precisão das distribuições de probabilidade aprendidas por autocodificadores variacionais (VAEs).

Autocodificadores contráteis

Introduzida pela primeira vez em 2011 por pesquisadores da Université de Montréal,1 autocodificadores contráteis são projetados para serem insensíveis a pequenas variações (ou "ruído") em dados de entrada, a fim de reduzir o sobreajuste e capturar informações essenciais de forma mais eficaz.

Isso é alcançado pela adição de um termo de regularização no treinamento, penalizando a rede para alterar o resultado em resposta a mudanças insuficientemente grandes na entrada. Este termo de penalidade é calculado com dois conceitos matemáticos:

  • A matriz Jacobiana contém todas as derivadas de primeira ordem de uma função que pode ser utilizada para retropropagação. Representa como os gradientes da rede mudam à medida que a entrada é alterada.
  • A norma de Frobenius é calculada como "a raiz quadrada da soma dos quadrados absolutos de seus elementos."2 Mede o ganho médio da matriz sobre cada direção ortogonal no espaço.3

Especificamente, o termo de penalidade é a norma de Frobenius da matriz jacobiana de ativações de neurônios na rede do codificador em relação à entrada. Esse termo de penalidade e o algoritmo da função de perda utilizado para reduzir o erro de reconstrução são adversários: a função de perda de reconstrução tende a observar variações nos dados de entrada, enquanto o termo de penalidade tende a ignorá-los. Ao combinar ambos os termos, a rede é forçada a aprender uma representação comprimida da entrada que contém somente as variáveis mais consequentes.

Autocodificadores de redução de ruído

Os autocodificadores de redução de ruído recebem dados de entrada parcialmente corrompidos e são treinados para restaurar a entrada original, removendo informações inúteis por meio da redução de dimensão.

Ao contrário da maioria dos codificadores automáticos, os codificadores automáticos de eliminação de ruído não têm os dados reais como entrada. Em vez disso, o ruído gaussiano é adicionado aos dados originais. Por exemplo, adicionando estática aleatória a uma imagem, e o autoencoder de eliminação de ruído (DAE) aprende a filtrá-lo. Durante o treinamento do modelo, o erro de reconstrução da saída sem ruído não é medido em relação aos dados de entrada corrompidos, mas em relação à imagem original.

Além de evitar o overfitting, essa técnica de treinamento também torna os autocodificadores de redução de ruído muito úteis para limpar arquivos de imagem e áudio ruidosos ou corrompidos. Os autocodificadores com redução de ruído também serviram como paradigmas de treinamento fundamentais para modelos de geração de imagem de última geração, como o Stable Diffusion.4

Autocodificadores variacionais

Autocodificadores variacionais (VAEs) são modelos generativos que aprendem representações comprimidas de seus dados de treinamento como distribuições de probabilidade, utilizadas para gerar novos dados de amostra criando variações dessas representações aprendidas.

A diferença fundamental entre VAEs e outros tipos de autocodificadores é que, embora a maioria dos autocodificadores aprenda modelos de espaço latente discretos, os VAEs aprendem modelos variáveis contínuos latentes. Em vez de um único vetor de codificação para o espaço latente, os VAEs modelam dois vetores diferentes: um vetor de médias, "μ", e um vetor de desvios padrão, "σ". Como esses vetores capturam atributos latentes como uma distribuição de probabilidade, ou seja, aprendem uma codificação estocástica em vez de uma codificação determinística , os VAEs permitem interpolação e amostragem aleatórias, expandindo muito seus recursos e casos de uso. Isso significa que VAEs são modelos de IA generativos.

Em termos mais simples, os VAEs aprendem a codificar aprendizados de recursos importantes a partir das entradas nos conjuntos de dados nos quais são treinados de uma maneira flexível e aproximada, que lhes permite gerar novas amostras que se assemelham aos dados de treinamento originais. A função de perda utilizada para minimizar o erro de reconstrução é regularizada pela divergência de KL entre a distribuição de probabilidade de dados de treinamento (a distribuição anterior) e a distribuição de variáveis latentes aprendidas pelo VAE (a distribuição posterior). Essa função de perda regularizada permite que os VAEs gerem novas amostras que se assemelham aos dados em que foram treinados, evitando sobreajuste, o que, neste caso, significaria gerar novas amostras muito idênticas aos dados originais.

Para gerar uma nova amostra, o VAE recolhe amostras de um vetor latente aleatório (ε) de dentro da unidade Gaussiana (link fora do ibm.com). Em outras palavras, seleciona um ponto de partida aleatório de dentro da distribuição normal, desloca-o pela média da distribuição latente (μ) e o dimensiona pela variância da distribuição latente (σ). Esse processo, denominado truque de reparametrização,5 evita amostragem direta da distribuição variacional: como o processo é aleatório, não tem derivativo, o que elimina a necessidade de retropropagação sobre o processo de amostragem.

Quando um VAE está sendo utilizado para tarefas generativas, o codificador geralmente pode ser descartado após o treinamento. Evoluções mais avançadas dos VAEs, como os VAEs condicionais, dão ao usuário maior controle sobre as amostras geradas, apresentando entradas condicionais que modificam a saída do codificador.

Casos de uso do codificador automático

Tanto os autocodificadores generativos quanto os determinísticos têm uma ampla variedade de casos de uso em diversos campos e tipos de dados.

  • Compactação de dados: os codificadores automáticos aprendem naturalmente uma representação comprimida dos dados de entrada.
  • Redução de dimensão: as codificações aprendidas pelos codificadores automáticos podem ser utilizadas como entrada para redes neurais maiores e compostas. A redução da dimensão dos dados complexos pode extrair recursos relevantes para outras tarefas, bem como aumentar a velocidade e a eficiência computacional.
  • Detecção de anomalias e reconhecimento facial: as codificadoras automáticas podem detectar anomalias, fraudes ou outros defeitos e, por outro lado, confirmar uma combinação genuína, determinando a perda de reconstrução de dados examinados em relação ao exemplo "normal" ou "genuíno" com que é comparado.
  • Eliminação de ruído de imagem e áudio: os autocodificadores de eliminação de ruídos removem artefatos estranhos ou corrupções que não correspondem à representação de espaço latente aprendida pela rede.
  • Reconstrução da imagem: pela inversão de técnicas aprendidas para eliminação de ruído, os autocodificadores podem preencher elementos ausentes de uma imagem. Podem ser igualmente utilizados para colorir imagens.
  • Tarefas generativas: os VAEs e os autocodificadores adversariais (AAEs), que aprendem distribuições probabilísticas semelhantes àquelas aprendidas pelos VAEs, mas que utilizam uma rede de discriminadores adversariais (semelhante às redes adversariais generativas) em vez da divergência de KL, vem sendo utilizados com grande sucesso em tarefas generativas. As aplicações generativas proeminentes de autocodificadores incluem o modelo original dl Dall-E da OpenAI para geração de imagens6 e até a geração de estruturas moleculares utilizadas em medicamentos.7
Soluções relacionadas
watsonx.ai

Treine, valide, ajuste e implemente IA generativa, modelos de base e recursos de aprendizado de máquina com facilidade, além de criar aplicativos de IA em uma fração do tempo com uma fração dos dados.

Explore o watsonx.ai

Recursos do codificador automático Aprendizado supervisionado versus não supervisionado: qual é a diferença?

Este artigo explora os fundamentos de duas abordagens de ciência de dados: aprendizado supervisionado e não supervisionado. Saiba qual abordagem é adequada para a sua situação.

Deep learning e aprendizado de reforço

Uma introdução a duas das disciplinas mais procuradas em aprendizado de máquina. Primeiro, aprenda sobre a teoria por trás das redes neurais e de várias arquiteturas modernas de deep learning. Depois de desenvolver alguns modelos de deep learning, o curso se concentrará no aprendizado de reforço.

Novo modelo de base geoespacial da IBM

Criado pelo trabalho conjunto da IBM com a NASA, o modelo watsonx.ai foi concebido para converter dados de satélites em mapas de alta resolução de inundações, incêndios e outras mudanças na paisagem para revelar o passado do nosso planeta e sugerir seu futuro. A IBM criou o modelo com base em um codificador automático mascarado para o processamento de vídeo e o adaptou às imagens de satélite.

Dê o próximo passo

Treine, valide, ajuste e implemente recursos generativos de IA, modelos de fundação e machine learning com facilidade e desenvolva aplicativos de IA em uma fração do tempo, com uma fração dos dados com IBM watsonx.ai, a nova geração de estúdio empresarial para construtores de IA.

Inicie sua avaliação sem custo Agende uma demonstração em tempo real
Notas de rodapé

1 "Contractive Auto-Encoders: Explicit Invariance During Feature Extraction", Procedimentos da28.ª Conferência Internacional sobre Machine Learning, julho de 2011
2 "Norma de Frobenius", Wolfram Mathworld
3 "Matrix Norms", UC Berkeley, fevereiro de 2021
4 "High-Resolution Image Synthesis With Latent Diffusion Models", Procedimentos da Conferência IEEE/CVF sobre Visão Computacional e Reconhecimento de Padrões (CVPR), junho de 2022
5 "Auto-Encoding Variational Bayes," arXiv, dezembro de 2013 (última atualização em 10 de dezembro de 2022)
6 "DALL-E: Criação de imagens a partir de texto", OpenAI, 5 Jan 2021
7 "Junction Tree Variational Autoencoder for Molecular Graph Generation", Procedimentos da35.ª Conferência Internacional sobre aprendizado de máquina, julho de 2018