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.
Embora todos os modelos de autocodificador incluam um codificador e um decodificador, nem todos os modelos codificador-decodificador são autocodificadores.
Frameworks codificador-decodificador, nas quais uma rede codificadora extrai as principais funcionalidades dos dados de entrada e uma rede decodificadora utiliza essas funcionalidades extraídas, são aplicados em diversos modelos de deep learning, como as arquiteturas de redes neurais convolucionais (CNN) usadas em tarefas de computer vision, como segmentação de imagens, ou as arquiteturas de redes neurais recorrentes (RNN) aplicadas em tarefas de sequência para sequência (seq2seq).
Na maioria das aplicações dos modelos codificador-decodificador, a saída da rede neural é diferente do input. Por exemplo, nos modelos de segmentação de imagens como o U-Net, a rede codificadora extrai as funcionalidades da imagem de input para classificar semanticamente cada pixel. Com esse mapeamento de funcionalidades e as classificações individuais dos pixels, a rede decodificadora gera máscaras de segmentação para cada objeto ou região da imagem. O objetivo desses modelos codificador-decodificador é rotular os pixels corretamente de acordo com sua classe semântica. Eles são treinados por aprendizado supervisionado, ajustando suas previsões com base em um conjunto de dados de referência, no qual especialistas humanos rotularam as imagens.
autocodificadores são um subconjunto específico das arquiteturas codificador-decodificador, treinados por aprendizado não supervisionado para reconstruir seus próprios dados de input.
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.
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. Nesses casos, ele serve apenas para treinar o codificador, de forma semelhante ao papel do discriminador em uma rede adversarial generativa (GAN), que posteriormente é usada como componente de outra rede neural. Em muitos autocodificadores, o decodificador continua sendo útil após o treinamento. Nos VAEs, por exemplo, ele gera novas amostras de dados.
Uma das principais vantagens dos autocodificadores em relação a outras técnicas de redução de dimensionalidade, como a análise de componentes principais (PCA), é sua capacidade de capturar correlações não lineares mais complexas. As funções de ativação usadas em autocodificadores geralmente são não lineares, como a função sigmoide.
Diferentes tipos de autocodificadores fazem adaptações nessa estrutura para melhor atender a diferentes tarefas e tipos de dados. Além de selecionar o tipo adequado de rede neural (como uma arquitetura CNN, uma arquitetura RNN como a memória de longo prazo de curto prazo, uma arquitetura baseada em transformadores ou uma rede neural simples), a configuração de um autocodificadores envolve vários hiperparâmetros.
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.
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.
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.
A divergência de Kullback-Leibler (KL) mede a diferença entre duas distribuições de probabilidade. No contexto dos SAEs, a penalização aplicada à rede após cada lote de treinamento é proporcional à divergência KL entre a distribuição alvo dos valores de ativação (a esparsidade desejada) e a distribuição real dos valores de ativação. Como será discutido mais adiante neste artigo, a divergência KL também é utilizada para otimizar a precisão das distribuições de probabilidade aprendidas pelos autocodificadores variacionais (VAEs).
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:
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.
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 (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 seleciona um vetor latente aleatório (ε) dentro da distribuição Gaussiana unitária, ou seja, escolhe um ponto de partida aleatório 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, conhecido como truque de reparametrização,5 evita a amostragem direta da distribuição variacional: como o processo é aleatório, ele não possui derivada, o que elimina a necessidade de retropropagação na etapa 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.
Tanto os autocodificadores generativos quanto os determinísticos têm uma ampla variedade de casos de uso em diversos campos e tipos de dados.
Obtenha uma compreensão profunda das redes neurais, suas funções básicas e os fundamentos da construção de uma.
O IBM Granite é nossa família de modelos de IA abertos, de alto desempenho e confiáveis, personalizados para a empresa e otimizados para escalar suas aplicações de IA. Explore as opções de linguagem, código, séries temporais e proteções.
Entrevistamos duas mil organizações a respeito de suas iniciativas de IA para descobrir o que está funcionando, o que não está e como se preparar.
Saiba como incorporar com confiança a IA generativa e o aprendizado de máquina em sua empresa.
Saiba como selecionar o modelo de base de IA mais adequado para seu caso de uso.
Aprenda como os CEOs podem equilibrar o valor que a IA generativa pode criar com o investimento que ela exige e os riscos que ela introduz.
Quer ter mais retorno sobre seus investimentos em IA? Saiba como o dimensionamento da IA generativa em áreas importantes promove mudanças, ajudando suas melhores mentes a criar e oferecer soluções novas e inovadoras.
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.
Todos os links levam para fora do site ibm.com
1 "Contractive Auto-Encoders: Explicit Invariance During Feature Extraction," Proceedings of the 28th International Conference on Machine Learning, julho de 2011
2 "Frobenius Norm," Wolfram Mathworld
3 "Matrix Norms," UC Berkeley, fevereiro de 2021
4 "High-Resolution Image Synthesis With Latent Diffusion Models," Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), junho de 2022
5 "Auto-Encoding Variational Bayes," arXiv, dezembro de 2013 (última atualização 10 de dezembro de 2022)
6 "DALL-E: Creating Images from Text," OpenAI, 5 de janeiro de 2021
7 "Junction Tree Variational Autoencoder for Molecular Graph Generation," Proceedings of the 35th International Conference on Machine Learning, julho 2018