Auto-Codificador: O Que É? E Para Que É Utilizado? (Parte 1)

Uma Suave Introdução ao Auto-Codificador e de Alguns De Seus Casos de Uso Comuns Com Código Python

plano de Fundo:

Autoencoder é uma supervisionado de rede neural artificial que aprende de forma eficiente comprimir e codificar os dados, em seguida, aprende a reconstruir os dados da reduzida representação codificada para uma representação que é tão próximo do original de entrada possível.

Autoencoder, por design, reduz as dimensões dos dados aprendendo a ignorar o ruído nos dados.

aqui está um exemplo da imagem de entrada/saída do conjunto de dados MNIST para um autoencoder.

Autoencoder para MNIST

Autoencoder Componentes:

Autoencoders consiste em 4 partes principais:

1 – Encoder: Em que o modelo se aprende a reduzir a entrada de dimensões e comprimir os dados de entrada em uma representação codificada.

2 – estrangulamento: que é a camada que contém a representação comprimida dos dados de entrada. Esta é a menor dimensão possível dos dados de entrada.

3 – decodificador: no qual o modelo aprende a reconstruir os dados a partir da representação codificada para ser o mais próximo possível da entrada original.

4 – perda de reconstrução: este é o método que mede o bom desempenho do descodificador e a proximidade da saída com a entrada original.

o treinamento envolve então o uso de propagação de costas, a fim de minimizar a perda de reconstrução da rede.

você deve estar se perguntando Por que eu iria treinar uma rede neural apenas para produzir uma imagem ou dados que é exatamente o mesmo que a entrada! Este artigo irá cobrir os casos de uso mais comuns para Autoencoder. Vamos começar:

Autoencoder Arquitetura:

A arquitetura de rede para autoencoders pode variar entre uma simples rede FeedForward, LSTM de rede ou Convolucionais Rede Neural dependendo do caso de uso. Vamos explorar algumas dessas arquiteturas nas novas próximas linhas.

existem muitas maneiras e técnicas para detectar anomalias e anómalos. Eu cobri este tópico em um post diferente abaixo:

no entanto, se você tiver dados de entrada correlacionados, o método autoencoder vai funcionar muito bem, porque a operação de codificação depende das características correlacionadas para comprimir os dados.Digamos que treinámos um auto-codificador no conjunto de dados MNIST. Usando uma rede neural FeedForward simples, podemos conseguir isso construindo uma rede simples de 6 camadas como abaixo:

a saída do código acima é:

como você pode ver na saída, a última perda/erro de reconstrução para o conjunto de validação é 0.0193 o que é grande. Agora, se eu passar qualquer imagem normal do MNIST conjunto de dados, a reconstrução, a perda será muito baixa (< 0,02) MAS se eu tentei passar qualquer outra imagem diferente (outlier ou anomalia), vamos obter uma alta de reconstrução da perda de valor, porque a rede não conseguiu reconstruir a imagem de entrada (que é considerada uma anomalia.

aviso no código acima, você pode usar apenas a parte do codificador para comprimir alguns dados ou imagens e você também pode apenas usar a parte do descodificador para descomprimir os dados carregando as camadas do descodificador.Agora, vamos fazer alguma detecção de anomalias. O código abaixo usa duas imagens diferentes para prever a pontuação de anomalia (erro de reconstrução) usando a rede autoencoder que treinamos acima. a primeira imagem é do MNIST e o resultado é 5.43209. Isto significa que a imagem não é uma anomalia. A segunda imagem que eu usei, é uma imagem completamente aleatória que não pertence ao conjunto de dados de treinamento e os resultados foram: 6789.4907. Este erro elevado significa que a imagem é uma anomalia. O mesmo conceito se aplica a qualquer tipo de conjunto de dados.

Deixe uma resposta

O seu endereço de email não será publicado.