Um autoencoder é um tipo de rede neural artificial (RNA) utilizado principalmente para tarefas de aprendizagem não supervisionada. O seu principal objetivo é aprender representações eficientes (codificações) dos dados de entrada, normalmente para redução da dimensionalidade ou extração de caraterísticas, treinando a rede para reconstruir as suas próprias entradas. Para tal, comprime a entrada num espaço latente de dimensão inferior e reconstrói a saída a partir desta representação comprimida.
Como funcionam os codificadores automáticos
Um Autoencoder é composto por duas partes principais: um codificador e um descodificador.
- Codificador: Esta parte pega nos dados de entrada e mapeia-os para uma representação de dimensão inferior denominada espaço latente ou gargalo. O codificador aprende a captar as caraterísticas mais significativas dos dados, ao mesmo tempo que elimina o ruído ou a informação redundante. Este processo é semelhante à compressão de dados.
- Descodificador: Esta parte pega na representação codificada do espaço latente e tenta reconstruir os dados de entrada originais com a maior precisão possível.
A rede é treinada minimizando a diferença entre a entrada original e a saída reconstruída, geralmente medida por uma função de perda como o erro quadrático médio (MSE). A camada de gargalo força a rede a aprender uma representação compacta e significativa, pois ela deve reter informações suficientes para reconstruir a entrada de forma eficaz.
Tipos de Autoencoders
Existem diversas variações de Autoencoders, cada uma concebida para fins específicos:
- Autoencodificadores de redução de ruído: Treinados para reconstruir a entrada original e limpa a partir de uma versão corrompida ou com ruído. Isto torna-os úteis para tarefas de redução de ruído.
- Autoencodificadores esparsos: Introduz restrições de esparsidade durante o treinamento, incentivando a rede a aprender representações em que apenas um pequeno número de nós está ativo a qualquer momento.
- Autoencoders variacionais (VAEs): Um tipo de modelo generativo que aprende uma distribuição de probabilidade sobre o espaço latente, permitindo-lhe gerar novas amostras de dados semelhantes aos dados de treino. Os VAEs diferem significativamente das Redes Adversárias Generativas (GANs), outra técnica generativa popular.
- Autoencodificadores contractivos: Procura aprender representações que sejam robustas a pequenas alterações nos dados de entrada.
Aplicações no mundo real
Os autoencoders têm encontrado aplicações em vários domínios:
- Deteção de anomalias: Ao aprender os padrões normais dos dados, os Autoencoders podem identificar anomalias ou valores atípicos como entradas que resultam em erros de reconstrução elevados. Isto é utilizado na deteção de fraudes e no controlo de qualidade industrial. Por exemplo, detetar padrões de tráfego de rede invulgares que possam indicar um ciberataque.
- Denoising e compressão de imagens: Os Autoencoders de redução de ruído podem limpar imagens ruidosas, enquanto os Autoencoders padrão podem comprimir imagens armazenando apenas a representação latente. Um exemplo é o restauro da nitidez de fotografias antigas ou de imagens de satélite afectadas por interferências atmosféricas. Vê como a visão por computador pode ser utilizada para analisar imagens de satélite.
- Redução da dimensionalidade: As representações latentes aprendidas podem servir como caraterísticas compactas para entrada noutros modelos de aprendizagem automática (ML), melhorando potencialmente o desempenho e reduzindo o custo computacional. Isto é frequentemente comparado com técnicas como a Análise de Componentes Principais (PCA), embora os Autoencoders possam captar relações mais complexas e não lineares.
- Geração de dados (VAEs): Os Autoencoders Variacionais podem gerar novas amostras de dados sintéticos, úteis em áreas como a geração de arte ou a criação de aumento de dados de treino. Explora mais os dados sintéticos.